Skip to content

DDLS-224 : Add a check for submitted reports in report review page (#… #360

DDLS-224 : Add a check for submitted reports in report review page (#…

DDLS-224 : Add a check for submitted reports in report review page (#… #360

name: "[Workflow] Path to live"
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
defaults:
run:
shell: bash
on:
push:
branches:
- main # match main
permissions:
id-token: write
contents: write
security-events: write
pull-requests: read
actions: none
checks: none
deployments: none
issues: none
packages: none
repository-projects: none
statuses: none
jobs:
workflow_variables:
runs-on: ubuntu-latest
name: output workflow variables
outputs:
build_identifier: "main"
version_tag: ${{ steps.semver_tag.outputs.created_tag }}
steps:
- uses: actions/checkout@b32f140b0c872d58512e0a66172253c302617b90 # pin@v3
- name: generate semver tag and release
id: semver_tag
uses: ministryofjustice/opg-github-actions/.github/actions/semver-tag@v3.0.3
with:
prerelease: false
default_bump: "minor"
- name: show build identifier and tag
id: show
env:
BUILD: ${{ steps.variables.outputs.build_identifier }}
TAG: ${{ steps.semver_tag.outputs.created_tag }}
run: |
echo "Build Identifier: ${BUILD}"
echo "Container Tag: ${TAG}"
build_web_resources:
name: build web resources
uses: ./.github/workflows/_web-resources.yml
secrets: inherit
docker_build_scan_push:
name: build, scan and push
uses: ./.github/workflows/_build-and-push.yml
needs:
- workflow_variables
- build_web_resources
with:
tag: ${{ needs.workflow_variables.outputs.version_tag }}
branch_name: ${{ needs.workflow_variables.outputs.build_identifier }}
push_to_ecr: true
secrets: inherit
api_unit_tests_1:
name: api unit tests 1
uses: ./.github/workflows/_unit-tests-api.yml
with:
selection: selection-1
branch_name: ${{ needs.workflow_variables.outputs.build_identifier }}
needs:
- workflow_variables
api_unit_tests_2:
name: api unit tests 2
uses: ./.github/workflows/_unit-tests-api.yml
with:
selection: selection-2
branch_name: ${{ needs.workflow_variables.outputs.build_identifier }}
needs:
- workflow_variables
api_unit_tests_3:
name: api unit tests 3
uses: ./.github/workflows/_unit-tests-api.yml
with:
selection: selection-3
branch_name: ${{ needs.workflow_variables.outputs.build_identifier }}
needs:
- workflow_variables
client_unit_tests:
name: client unit tests
uses: ./.github/workflows/_unit-tests-client.yml
needs:
- workflow_variables
- build_web_resources
codecov:
name: upload to codecov
uses: ./.github/workflows/_codecov.yml
needs:
- client_unit_tests
- api_unit_tests_1
- api_unit_tests_2
- api_unit_tests_3
secrets: inherit
synchronisation_unit_tests:
name: client unit tests
uses: ./.github/workflows/_unit-tests-synchronise-lambda.yml
needs:
- workflow_variables
- docker_build_scan_push
terraform_apply_account_development:
name: development account apply terraform
uses: ./.github/workflows/_run-terraform.yml
needs:
- workflow_variables
with:
workspace: development
terraform_path: account
apply: true
account_name: development
container_version: ${{ needs.workflow_variables.outputs.version_tag }}
path_to_live: true
secrets: inherit
terraform_apply_development:
name: development environment apply terraform
uses: ./.github/workflows/_run-terraform.yml
needs:
- terraform_apply_account_development
- docker_build_scan_push
- workflow_variables
- synchronisation_unit_tests
- client_unit_tests
- api_unit_tests_1
- api_unit_tests_2
- api_unit_tests_3
with:
workspace: development
terraform_path: environment
apply: true
account_name: development
container_version: ${{ needs.workflow_variables.outputs.version_tag }}
path_to_live: true
secrets: inherit
terraform_apply_account_preproduction:
name: preproduction account apply terraform
uses: ./.github/workflows/_run-terraform.yml
needs:
- workflow_variables
- terraform_apply_development
with:
workspace: preproduction
terraform_path: account
apply: true
account_name: preproduction
container_version: ${{ needs.workflow_variables.outputs.version_tag }}
path_to_live: true
secrets: inherit
terraform_apply_integration:
name: integration environment apply terraform
uses: ./.github/workflows/_run-terraform.yml
needs:
- terraform_apply_account_preproduction
- workflow_variables
with:
workspace: integration
terraform_path: environment
apply: true
account_name: preproduction
container_version: ${{ needs.workflow_variables.outputs.version_tag }}
path_to_live: true
secrets: inherit
scale_services_up:
name: scale up integration services
uses: ./.github/workflows/_scale-services.yml
needs:
- workflow_variables
- terraform_apply_integration
with:
replicas: 6
acu: 16
account_id: 454262938596
workspace: integration
secrets: inherit
reset_database:
name: reset integration database
uses: ./.github/workflows/_run-task.yml
needs:
- workflow_variables
- scale_services_up
with:
workspace: integration
account_name: preproduction
task_name: "integration_test_v2"
timeout: "500"
override: "sh,./tests/Behat/reset-db.sh"
secrets: inherit
integration_tests_1:
name: integration tests frontend 1
uses: ./.github/workflows/_run-task.yml
needs:
- workflow_variables
- reset_database
with:
workspace: integration
account_name: preproduction
task_name: "integration_test_v2"
timeout: "1200"
override: "sh,./tests/Behat/run-tests-parallel.sh,--tags,@v2_reporting_1,--profile,v2-tests-browserkit"
secrets: inherit
integration_tests_2:
name: integration tests frontend 2
uses: ./.github/workflows/_run-task.yml
needs:
- workflow_variables
- reset_database
with:
workspace: integration
account_name: preproduction
task_name: "integration_test_v2"
timeout: "1200"
override: "sh,./tests/Behat/run-tests-parallel.sh,--tags,@v2_reporting_2,--profile,v2-tests-browserkit"
secrets: inherit
integration_tests_admin:
name: integration tests admin
uses: ./.github/workflows/_run-task.yml
needs:
- workflow_variables
- reset_database
with:
workspace: integration
account_name: preproduction
task_name: "integration_test_v2"
timeout: "1200"
override: "sh,./tests/Behat/run-tests-parallel.sh,--tags,@v2_admin,--profile,v2-tests-browserkit"
secrets: inherit
integration_tests_sequential_1:
name: integration tests sequential 1
uses: ./.github/workflows/_run-task.yml
needs:
- workflow_variables
- reset_database
with:
workspace: integration
account_name: preproduction
task_name: "integration_test_v2"
timeout: "1200"
override: "sh,./tests/Behat/run-tests.sh,--tags,@v2_sequential_1,--profile,v2-tests-browserkit"
secrets: inherit
integration_tests_sequential_2:
name: integration tests sequential 2
uses: ./.github/workflows/_run-task.yml
needs:
- workflow_variables
- reset_database
with:
workspace: integration
account_name: preproduction
task_name: "integration_test_v2"
timeout: "1200"
override: "sh,./tests/Behat/run-tests.sh,--tags,@v2_sequential_2,--profile,v2-tests-browserkit"
secrets: inherit
integration_tests_sequential_3:
name: integration tests sequential 3
uses: ./.github/workflows/_run-task.yml
needs:
- workflow_variables
- reset_database
with:
workspace: integration
account_name: preproduction
task_name: "integration_test_v2"
timeout: "1200"
override: "sh,./tests/Behat/run-tests.sh,--tags,@v2_sequential_3,--profile,v2-tests-browserkit"
secrets: inherit
scale_services_down:
if: always()
name: scale down integration services
uses: ./.github/workflows/_scale-services.yml
needs:
- workflow_variables
- integration_tests_sequential_1
- integration_tests_sequential_2
- integration_tests_sequential_3
- integration_tests_admin
- integration_tests_1
- integration_tests_2
with:
replicas: 1
acu: 4
account_id: 454262938596
workspace: integration
secrets: inherit
terraform_apply_preproduction:
name: preproduction environment apply terraform
uses: ./.github/workflows/_run-terraform.yml
needs:
- terraform_apply_account_preproduction
- workflow_variables
- integration_tests_sequential_1
- integration_tests_sequential_2
- integration_tests_sequential_3
- integration_tests_admin
- integration_tests_1
- integration_tests_2
with:
workspace: preproduction
terraform_path: environment
apply: true
account_name: preproduction
container_version: ${{ needs.workflow_variables.outputs.version_tag }}
path_to_live: true
secrets: inherit
terraform_apply_training:
name: training environment apply terraform
uses: ./.github/workflows/_run-terraform.yml
needs:
- terraform_apply_preproduction
- workflow_variables
with:
workspace: training
terraform_path: environment
apply: true
account_name: preproduction
container_version: ${{ needs.workflow_variables.outputs.version_tag }}
path_to_live: true
secrets: inherit
terraform_apply_account_production:
name: production account apply terraform
uses: ./.github/workflows/_run-terraform.yml
needs:
- workflow_variables
- terraform_apply_preproduction
with:
workspace: production
terraform_path: account
apply: true
account_name: production
container_version: ${{ needs.workflow_variables.outputs.version_tag }}
path_to_live: true
secrets: inherit
terraform_apply_production:
name: production environment apply terraform
uses: ./.github/workflows/_run-terraform.yml
needs:
- terraform_apply_account_production
- workflow_variables
with:
workspace: production02
terraform_path: environment
apply: true
container_version: ${{ needs.workflow_variables.outputs.version_tag }}
account_name: production
path_to_live: true
secrets: inherit
smoke_tests_production:
name: smoke tests on production
uses: ./.github/workflows/_run-task.yml
needs:
- workflow_variables
- terraform_apply_production
with:
workspace: production02
account_name: production
task_name: "smoke_tests"
timeout: "900"
secrets: inherit
backup_production:
name: backup production
uses: ./.github/workflows/_run-task.yml
needs:
- workflow_variables
- smoke_tests_production
with:
workspace: production02
account_name: production
task_name: "backup"
timeout: "700"
secrets: inherit
restore_to_preproduction:
name: restore to preproduction
uses: ./.github/workflows/_run-task.yml
needs:
- workflow_variables
- backup_production
with:
workspace: preproduction
account_name: preproduction
task_name: "restore_from_production"
timeout: "700"
secrets: inherit
end_of_workflow:
name: end of workflow
runs-on: ubuntu-latest
needs:
- restore_to_preproduction
- codecov
- workflow_variables
steps:
- name: workflow ended successfully
run: |
echo "${{ needs.workflow_variables.outputs.build_identifier }} PR environment tested, built and deployed"
echo "Tag Used: ${{ needs.workflow_variables.outputs.version_tag }}"
echo "URL: https://${{ needs.workflow_variables.outputs.build_identifier }}.complete-deputy-report.service.gov.uk"
slack_notify_success:
name: notify of result
uses: ./.github/workflows/_slack-notification.yml
needs:
- workflow_variables
- end_of_workflow
with:
success: true
branch: ${{ needs.workflow_variables.outputs.build_identifier }}
account: 515688267891
secrets: inherit
slack_notify_failure:
name: notify of result
uses: ./.github/workflows/_slack-notification.yml
if: ${{ failure() }}
needs:
- workflow_variables
- end_of_workflow
with:
success: false
branch: ${{ needs.workflow_variables.outputs.build_identifier }}
account: 515688267891
secrets: inherit