Deploy Oko Apps #6
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Deploy Oko Apps | |
| env: | |
| VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} | |
| VERCEL_PRJ_ID__OKO_DEMO_WEB: ${{ secrets.VERCEL_PRJ_ID__OKO_DEMO_WEB }} | |
| VERCEL_PRJ_ID__CT_DASHBOARD: ${{ secrets.VERCEL_PRJ_ID__CT_DASHBOARD }} | |
| VERCEL_PRJ_ID__USER_DASHBOARD: ${{ secrets.VERCEL_PRJ_ID__USER_DASHBOARD }} | |
| VERCEL_PRJ_ID__ADMIN_WEB: ${{ secrets.VERCEL_PRJ_ID__ADMIN_WEB }} | |
| VERCEL_PRJ_ID__DOCS_WEB: ${{ secrets.VERCEL_PRJ_ID__DOCS_WEB }} | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| git_tag: | |
| description: > | |
| "Git tag (format: <app>/develop/v0.0.1 or <app>/release/v0.0.1). | |
| Apps: demo_web, user_dashboard, ct_dashboard, admin_web, docs_web" | |
| required: true | |
| type: string | |
| jobs: | |
| publish: | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 60 | |
| steps: | |
| - name: Checkout self repository | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ inputs.git_tag }} | |
| token: ${{ secrets.GH_PAT }} | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" | |
| - name: Check Node version | |
| run: node -v | |
| - name: Check git tag | |
| run: node ./internals/github/dist/validate_git_tag.js | |
| env: | |
| GIT_TAG: "${{ inputs.git_tag }}" | |
| - name: Determine deploy environment | |
| id: deploy_env | |
| run: node ./internals/github/dist/determine_deploy_env.js | |
| env: | |
| GIT_TAG: "${{ inputs.git_tag }}" | |
| - name: Set Vercel Project Id | |
| run: | | |
| case "${{ steps.deploy_env.outputs.vercel_app }}" in | |
| demo_web) | |
| echo "VERCEL_PROJECT_ID=$VERCEL_PRJ_ID__OKO_DEMO_WEB" >> \ | |
| "$GITHUB_ENV" | |
| ;; | |
| ct_dashboard) | |
| echo "VERCEL_PROJECT_ID=$VERCEL_PRJ_ID__CT_DASHBOARD" >> \ | |
| "$GITHUB_ENV" | |
| ;; | |
| user_dashboard) | |
| echo "VERCEL_PROJECT_ID=$VERCEL_PRJ_ID__USER_DASHBOARD" >> \ | |
| "$GITHUB_ENV" | |
| ;; | |
| admin_web) | |
| echo "VERCEL_PROJECT_ID=$VERCEL_PRJ_ID__ADMIN_WEB" >> \ | |
| "$GITHUB_ENV" | |
| ;; | |
| docs_web) | |
| echo "VERCEL_PROJECT_ID=$VERCEL_PRJ_ID__DOCS_WEB" >> \ | |
| "$GITHUB_ENV" | |
| ;; | |
| *) | |
| echo "Unknown app: ${{ steps.deploy_env.outputs.vercel_app }}" | |
| exit 1 | |
| ;; | |
| esac | |
| - name: Enable Corepack | |
| run: corepack enable | |
| - name: Yarn version | |
| run: yarn -v | |
| - name: Install dependencies | |
| run: yarn install --immutable | |
| - name: Build internal packages | |
| run: yarn ci build_pkgs | |
| - name: Build SDK packages | |
| run: yarn ci build_sdk | |
| - name: Install Vercel CLI | |
| run: npm install -g vercel@latest | |
| - name: Pull Vercel Environment Information | |
| run: vercel pull --yes --environment=${{ steps.deploy_env.outputs.vercel_env }} --token=${{ secrets.VERCEL_TOKEN }} | |
| - name: Verify environment variables | |
| run: | | |
| ENV_FILE=".vercel/.env.${{ steps.deploy_env.outputs.vercel_env }}.local" | |
| if [ ! -f "$ENV_FILE" ]; then | |
| echo "::error::Environment file not found: $ENV_FILE" | |
| echo "vercel pull may have failed to fetch environment variables." | |
| exit 1 | |
| fi | |
| echo "Environment file found: $ENV_FILE" | |
| - name: Build Project Artifacts | |
| run: vercel build --yes ${{ steps.deploy_env.outputs.vercel_build_flag }} --token=${{ secrets.VERCEL_TOKEN }} | |
| - name: Deploy Project Artifacts to Vercel | |
| run: vercel deploy --prebuilt ${{ steps.deploy_env.outputs.vercel_deploy_flag }} --token=${{ secrets.VERCEL_TOKEN }} |