Merge pull request #5296 from DFE-Digital/upgrade-upload-artifact-to-v4 #3386
This file contains 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" | |
concurrency: | |
group: ${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
on: | |
workflow_dispatch: | |
inputs: | |
environment: | |
description: "Deploy environment" | |
required: true | |
default: review | |
type: environment | |
options: | |
- review | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
merge_group: | |
jobs: | |
lint: | |
name: Lint | |
uses: ./.github/workflows/lint.yml | |
rspec: | |
name: Run the RSpec tests | |
uses: ./.github/workflows/rspec.yml | |
permit-merge: | |
name: Permit merge | |
needs: [lint, rspec] | |
runs-on: ubuntu-latest | |
steps: | |
- run: "echo 'Linting and tests passed, this branch is ready to be merged'" | |
docker: | |
name: Build and push Docker image | |
runs-on: ubuntu-latest | |
if: github.actor != 'dependabot[bot]' && github.event_name != 'merge_group' | |
outputs: | |
docker-image: ${{ steps.build-docker-image.outputs.image }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: DFE-Digital/github-actions/build-docker-image@master | |
id: build-docker-image | |
with: | |
docker-repository: ghcr.io/dfe-digital/early-careers-framework | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
snyk-token: ${{ secrets.SNYK_TOKEN }} | |
brakeman: | |
name: Run Brakeman vulnerability scanner | |
uses: ./.github/workflows/brakeman.yml | |
with: | |
ruby-version: "3.2.4" | |
deploy_review: | |
name: Deploy review | |
concurrency: deploy_review_${{ github.event.pull_request.number }} | |
if: github.actor != 'dependabot[bot]' && github.event_name == 'pull_request' | |
needs: [docker, brakeman] | |
runs-on: ubuntu-latest | |
environment: | |
name: review | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/deploy-environment-to-aks | |
id: deploy | |
with: | |
environment: review | |
docker-image: ${{ needs.docker.outputs.docker-image }} | |
azure-credentials: ${{ secrets.AZURE_CREDENTIALS }} | |
pull-request-number: ${{ github.event.pull_request.number }} | |
current-commit-sha: ${{ github.event.pull_request.head.sha }} | |
statuscake-api-token: ${{ secrets.STATUSCAKE_API_TOKEN }} | |
- name: Post sticky pull request comment | |
uses: marocchino/sticky-pull-request-comment@v2 | |
with: | |
message: | | |
Review app deployed to ${{ steps.deploy.outputs.url }} | |
run_smoke_tests: | |
name: Run Smoke tests | |
needs: [ docker ] | |
runs-on: ubuntu-latest | |
if: github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'test-performance') | |
concurrency: run_smoke_tests_${{ github.event.pull_request.number }} | |
environment: | |
name: production | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- uses: ./.github/actions/test-performance | |
id: smoke-test | |
with: | |
scenario: smoke-test | |
docker-image: ${{ needs.docker.outputs.docker-image }} | |
azure-credentials: ${{ secrets.AZURE_CREDENTIALS }} | |
run_api_performance_tests: | |
name: Run API performance tests | |
needs: [docker] | |
runs-on: ubuntu-latest | |
if: github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'test-performance') | |
concurrency: run_api_performance_tests_${{ github.event.pull_request.number }} | |
environment: | |
name: production | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- uses: ./.github/actions/test-performance | |
id: api-load-test | |
with: | |
scenario: api-load-test | |
docker-image: ${{ needs.docker.outputs.docker-image }} | |
azure-credentials: ${{ secrets.AZURE_CREDENTIALS }} | |
deploy_staging: | |
name: Deploy staging | |
needs: [docker, rspec, lint, brakeman] | |
runs-on: ubuntu-latest | |
if: github.ref == 'refs/heads/main' | |
environment: | |
name: staging | |
outputs: | |
docker-image: ${{ needs.docker.outputs.docker-image }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/deploy-environment-to-aks | |
id: deploy | |
with: | |
environment: staging | |
docker-image: ${{ needs.docker.outputs.docker-image }} | |
azure-credentials: ${{ secrets.AZURE_CREDENTIALS }} | |
current-commit-sha: ${{ github.sha }} | |
statuscake-api-token: ${{ secrets.STATUSCAKE_API_TOKEN }} | |
deploy_sandbox: | |
name: Deploy sandbox | |
needs: [deploy_staging] | |
runs-on: ubuntu-latest | |
environment: | |
name: sandbox | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/deploy-environment-to-aks | |
id: deploy | |
with: | |
environment: sandbox | |
docker-image: ${{ needs.deploy_staging.outputs.docker-image }} | |
azure-credentials: ${{ secrets.AZURE_CREDENTIALS }} | |
current-commit-sha: ${{ github.sha }} | |
statuscake-api-token: ${{ secrets.STATUSCAKE_API_TOKEN }} | |
# Temporarily disabled while we manually deploy and test on the migration environment. | |
# | |
# deploy_migration: | |
# name: Deploy migration | |
# needs: [deploy_staging] | |
# runs-on: ubuntu-latest | |
# environment: | |
# name: migration | |
# steps: | |
# - uses: actions/checkout@v3 | |
# - uses: ./.github/actions/deploy-environment-to-aks | |
# id: deploy | |
# with: | |
# environment: migration | |
# docker-image: ${{ needs.deploy_staging.outputs.docker-image }} | |
# azure-credentials: ${{ secrets.AZURE_CREDENTIALS }} | |
# current-commit-sha: ${{ github.sha }} | |
# statuscake-api-token: ${{ secrets.STATUSCAKE_API_TOKEN }} | |
deploy_separation: | |
name: Deploy separation | |
needs: [deploy_staging] | |
runs-on: ubuntu-latest | |
environment: | |
name: separation | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/deploy-environment-to-aks | |
id: deploy | |
with: | |
environment: separation | |
docker-image: ${{ needs.deploy_staging.outputs.docker-image }} | |
azure-credentials: ${{ secrets.AZURE_CREDENTIALS }} | |
current-commit-sha: ${{ github.sha }} | |
statuscake-api-token: ${{ secrets.STATUSCAKE_API_TOKEN }} | |
deploy_production: | |
name: Deploy production | |
needs: [deploy_staging] | |
runs-on: ubuntu-latest | |
environment: | |
name: production | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/deploy-environment-to-aks | |
id: deploy | |
with: | |
environment: production | |
docker-image: ${{ needs.deploy_staging.outputs.docker-image }} | |
azure-credentials: ${{ secrets.AZURE_CREDENTIALS }} | |
current-commit-sha: ${{ github.sha }} | |
statuscake-api-token: ${{ secrets.STATUSCAKE_API_TOKEN }} |