This repository was archived by the owner on Feb 6, 2026. It is now read-only.
Deploy to production by @stack72 #399
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 Services | |
| run-name: Deploy to ${{ inputs.environment }} by @${{ github.actor }} | |
| on: | |
| workflow_call: | |
| inputs: | |
| environment: | |
| type: string | |
| default: "tools" | |
| version: | |
| type: string | |
| default: "stable" | |
| wait_duration: | |
| type: number | |
| default: 0 | |
| workflow_dispatch: | |
| inputs: | |
| environment: | |
| type: choice | |
| required: true | |
| description: "Where to deploy" | |
| default: "tools" | |
| options: | |
| - tools | |
| - production | |
| - perf | |
| version: | |
| type: string | |
| required: true | |
| description: "version to deploy" | |
| default: "stable" | |
| wait_duration: | |
| type: number | |
| required: false | |
| description: "How long to wait before deploying" | |
| default: 0 | |
| # We only one one deploy happening at a time per environment, so if one is | |
| # in progress, we'll wait for it to finish before starting the | |
| # next one. | |
| # Note that this will also wait for E2E tests to finish, as per the crons workflows | |
| concurrency: | |
| group: deploy-${{ inputs.environment }} | |
| cancel-in-progress: false | |
| jobs: | |
| wait: | |
| name: wait | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: wait | |
| run: | | |
| echo "Sleeping for ${{ inputs.wait_duration }}" | |
| sleep ${{ inputs.wait_duration }} | |
| invoke-and-check-cdn: | |
| uses: ./.github/workflows/invoke-and-check-invalidations.yml | |
| with: | |
| environment: shared | |
| secrets: inherit | |
| set-service-versions: | |
| uses: ./.github/workflows/set-service-version.yml | |
| needs: | |
| - invoke-and-check-cdn | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| service: ["pinga", "rebaser", "sdf", "forklift", "veritech", "edda", "luminork"] | |
| with: | |
| environment: ${{ inputs.environment }} | |
| service: ${{ matrix.service }} | |
| version: ${{ inputs.version }} | |
| secrets: inherit | |
| set-maintenance-mode: | |
| needs: | |
| - set-service-versions | |
| - wait | |
| uses: ./.github/workflows/set-maintenance-mode.yml | |
| with: | |
| environment: ${{ inputs.environment }} | |
| secrets: inherit | |
| upgrade-web: | |
| needs: | |
| - set-maintenance-mode | |
| uses: ./.github/workflows/upgrade-web.yml | |
| with: | |
| environment: ${{ inputs.environment }} | |
| secrets: inherit | |
| upgrade: # the backend services | |
| needs: | |
| - set-service-versions | |
| - set-maintenance-mode | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| service: ["pinga", "rebaser", "forklift", "veritech", "edda", "luminork"] | |
| uses: ./.github/workflows/upgrade-service.yml | |
| with: | |
| environment: ${{ inputs.environment }} | |
| service: ${{ matrix.service }} | |
| secrets: inherit | |
| upgrade-and-migrate-sdf: | |
| needs: | |
| - upgrade | |
| uses: ./.github/workflows/migrate-sdf.yml | |
| with: | |
| environment: ${{ inputs.environment }} | |
| secrets: inherit | |
| sleep-between: | |
| if: ${{ inputs.environment != 'tools' }} | |
| name: Wait for 10 minutes | |
| needs: upgrade-and-migrate-sdf | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Sleep for 10 minutes | |
| run: sleep 600 | |
| e2e-validation: | |
| if: ${{ inputs.environment != 'tools' }} | |
| needs: | |
| - upgrade-web | |
| - sleep-between | |
| uses: ./.github/workflows/e2e-validation.yml | |
| with: | |
| environment: ${{ inputs.environment }} | |
| test_dir: cypress/e2e | |
| secrets: inherit | |
| api-test: | |
| if: ${{ inputs.environment != 'tools' }} | |
| needs: | |
| - upgrade-web | |
| - sleep-between | |
| uses: ./.github/workflows/run-api-test.yml | |
| with: | |
| environment: ${{ inputs.environment }} | |
| secrets: inherit |