DDLS-117c clean up account terraform (#1510) #289
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: "[Workflow] Path to live" | |
concurrency: | |
group: ${{ github.ref }}-${{ github.workflow }} | |
defaults: | |
run: | |
shell: bash | |
on: | |
push: | |
branches: | |
- main # match main | |
permissions: | |
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@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v3 | |
- name: generate semver tag and release | |
id: semver_tag | |
uses: ministryofjustice/opg-github-actions/.github/actions/[email protected] | |
with: | |
prerelease: false | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
default_bump: "minor" | |
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.build_identifier }}-${{ 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 | |
container_version: ${{ needs.workflow_variables.outputs.build_identifier }}-${{ 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 | |
container_version: ${{ needs.workflow_variables.outputs.build_identifier }}-${{ 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 | |
container_version: ${{ needs.workflow_variables.outputs.build_identifier }}-${{ 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 | |
container_version: ${{ needs.workflow_variables.outputs.build_identifier }}-${{ 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: 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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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: 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 | |
container_version: ${{ needs.workflow_variables.outputs.build_identifier }}-${{ 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 | |
container_version: ${{ needs.workflow_variables.outputs.build_identifier }}-${{ 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 | |
container_version: ${{ needs.workflow_variables.outputs.build_identifier }}-${{ 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.build_identifier }}-${{ needs.workflow_variables.outputs.version_tag }} | |
path_to_live: true | |
secrets: inherit | |
backup_production: | |
name: backup production | |
uses: ./.github/workflows/_run-task.yml | |
needs: | |
- workflow_variables | |
- terraform_apply_production | |
with: | |
workspace: production02 | |
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 | |
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.build_identifier }}-${{ 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 |