name: Deploy EG-BIM QA Gateway on: push: branches: - main workflow_dispatch: jobs: deploy: runs-on: ubuntu-latest env: CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} SESSION_SECRET: ${{ secrets.SESSION_SECRET }} ABC_API_KEY: ${{ secrets.ABC_API_KEY }} ORG_CONTEXT_ENABLED: ${{ vars.STAGING_ORG_CONTEXT_ENABLED }} ORG_CONTEXT_API_URL: ${{ vars.STAGING_ORG_CONTEXT_API_URL }} ORG_CONTEXT_SCOPE_MODE: ${{ vars.STAGING_ORG_CONTEXT_SCOPE_MODE }} ORG_CONTEXT_EXPOSURE: ${{ vars.STAGING_ORG_CONTEXT_EXPOSURE }} ORG_CONTEXT_TENANT_IDS: ${{ vars.STAGING_ORG_CONTEXT_TENANT_IDS }} ORG_CONTEXT_CACHE_TTL_SECONDS: ${{ vars.STAGING_ORG_CONTEXT_CACHE_TTL_SECONDS }} ORG_CONTEXT_KEY_ID: ${{ secrets.STAGING_ORG_CONTEXT_KEY_ID }} ORG_CONTEXT_KEY_SECRET: ${{ secrets.STAGING_ORG_CONTEXT_KEY_SECRET }} steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 24 - name: Validate required secrets shell: bash run: | set -euo pipefail test -n "$CLOUDFLARE_API_TOKEN" || { echo "CLOUDFLARE_API_TOKEN is missing"; exit 1; } test -n "$SESSION_SECRET" || { echo "SESSION_SECRET is missing"; exit 1; } test -n "$ABC_API_KEY" || { echo "ABC_API_KEY is missing"; exit 1; } - name: Install dependencies run: npm ci --no-fund --no-audit - name: Check source run: npm run check && npm test - name: Verify organization integration settings run: npm run org:verify - name: Register Worker session secret shell: bash run: | set -euo pipefail printf '%s' "$SESSION_SECRET" | npx wrangler secret put SESSION_SECRET --name baron-qa-gateway-test - name: Register ABC API secret shell: bash run: | set -euo pipefail printf '%s' "$ABC_API_KEY" | npx wrangler secret put ABC_API_KEY --name baron-qa-gateway-test - name: Upload static files to R2 run: npm run r2:upload - name: Deploy Worker run: node scripts/deploy-worker.mjs