Skip to content

turn off preprod restore (#1755) #502

turn off preprod restore (#1755)

turn off preprod restore (#1755) #502

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@3b9b8c884f6b4bb4d5be2779c26374abadae0871 # pin@v3
- name: Generate build output using Markdown
run: |
echo "### Build Variables" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "- Branch: main" >> $GITHUB_STEP_SUMMARY
echo "- Build Identifier: main" >> $GITHUB_STEP_SUMMARY
- name: generate semver tag and release
id: semver_tag
uses: ministryofjustice/opg-github-actions/.github/actions/semver-tag@v3.1.0
with:
prerelease: false
default_bump: "minor"
- name: show build identifier and tag
id: show
env:
TAG: ${{ steps.semver_tag.outputs.created_tag }}
run: |
echo "Build Identifier: main"
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
miscellaneous_unit_tests:
name: miscellaneous unit tests
uses: ./.github/workflows/_unit-tests-miscellaneous.yml
needs:
- workflow_variables
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 }}
secrets: inherit
terraform_apply_account_preproduction:
name: preproduction account apply terraform
uses: ./.github/workflows/_run-terraform.yml
needs:
- workflow_variables
- terraform_apply_account_development
- docker_build_scan_push
- miscellaneous_unit_tests
- client_unit_tests
- api_unit_tests_1
- api_unit_tests_2
- api_unit_tests_3
with:
workspace: preproduction
terraform_path: account
apply: true
account_name: preproduction
container_version: ${{ needs.workflow_variables.outputs.version_tag }}
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 }}
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: "reset_database"
timeout: "500"
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 }}
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 }}
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 }}
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
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
end_of_workflow:
name: end of workflow
runs-on: ubuntu-latest
needs:
- smoke_tests_production
- 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 success
uses: ./.github/workflows/_slack-notification.yml
needs:
- workflow_variables
- end_of_workflow
with:
success: yes
branch: ${{ needs.workflow_variables.outputs.build_identifier }}
account: 515688267891
secrets: inherit
slack_notify_failure:
name: notify of failure
uses: ./.github/workflows/_slack-notification.yml
if: ${{ failure() }}
needs:
- workflow_variables
- end_of_workflow
with:
success: no
branch: ${{ needs.workflow_variables.outputs.build_identifier }}
account: 515688267891
secrets: inherit