Skip to content

DDLS-186 v2 Rename named_deputy to deputy #2170

DDLS-186 v2 Rename named_deputy to deputy

DDLS-186 v2 Rename named_deputy to deputy #2170

name: "[Workflow] All branch based pushes"
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
defaults:
run:
shell: bash
on:
pull_request:
branches:
- main
permissions:
id-token: write
contents: write
security-events: write
pull-requests: write
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:
parsed_branch: ${{ steps.variables.outputs.branch_formatted }}
build_identifier: ${{ steps.variables.outputs.build_identifier }}
version_tag: ${{ steps.semver_tag.outputs.created_tag }}
steps:
- uses: actions/checkout@b32f140b0c872d58512e0a66172253c302617b90 # pin@v3
- name: extract variables for workflow
id: variables
env:
PR_NUMBER: ${{ github.event.pull_request.number }}
run: |
export BRANCH=$(echo ${GITHUB_HEAD_REF:-${GITHUB_REF##*/}} | awk -F'_' '{print $1}' | tr -cd '[:alnum:]' | tr '[:upper:]' '[:lower:]' | cut -c1-8)
echo "branch_formatted=$(echo ${BRANCH})" >> $GITHUB_OUTPUT
echo "build_identifier=$(echo ${BRANCH}${PR_NUMBER})" >> $GITHUB_OUTPUT
echo ${build_identifier}
- name: generate semver tag and release
id: semver_tag
uses: ministryofjustice/opg-github-actions/.github/actions/semver-tag@v3.0.3
with:
prerelease: true
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}"
- uses: actions/labeler@main
if: github.event_name == 'pull_request'
with:
configuration-path: .github/labeller.yml
repo-token: ${{ secrets.GITHUB_TOKEN }}
sync-labels: true
build_web_resources:
name: build web resources
uses: ./.github/workflows/_web-resources.yml
secrets: inherit
terraform_lint:
name: lint terraform code
uses: ./.github/workflows/_lint-terraform.yml
needs:
- workflow_variables
with:
workspace: ${{ needs.workflow_variables.outputs.build_identifier }}
secrets: inherit
test_js:
name: test javascript code
uses: ./.github/workflows/_test-js.yml
needs:
- workflow_variables
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_plan_account_development:
name: account plan terraform development
uses: ./.github/workflows/_run-terraform.yml
needs:
- workflow_variables
- terraform_lint
with:
workspace: development
terraform_path: account
container_version: ${{ needs.workflow_variables.outputs.version_tag }}
account_name: development
secrets: inherit
terraform_apply_environment:
name: environment apply terraform
uses: ./.github/workflows/_run-terraform.yml
needs:
- docker_build_scan_push
- terraform_lint
- workflow_variables
with:
workspace: ${{ needs.workflow_variables.outputs.build_identifier }}
terraform_path: environment
apply: true
container_version: ${{ needs.workflow_variables.outputs.version_tag }}
account_name: development
secrets: inherit
ecr_scan_results:
name: ecr scan results
uses: ./.github/workflows/_ecr-scanning.yml
with:
tag: ${{ needs.workflow_variables.outputs.version_tag }}
needs:
- terraform_apply_environment
- workflow_variables
secrets: inherit
scale_services_up:
name: scale up services
uses: ./.github/workflows/_scale-services.yml
needs:
- workflow_variables
- terraform_apply_environment
with:
replicas: 10
acu: 16
account_id: 248804316466
workspace: ${{ needs.workflow_variables.outputs.build_identifier }}
secrets: inherit
reset_database:
name: reset database
uses: ./.github/workflows/_run-task.yml
needs:
- workflow_variables
- terraform_apply_environment
with:
workspace: ${{ needs.workflow_variables.outputs.build_identifier }}
account_name: development
task_name: "integration_test_v2"
timeout: "500"
override: "sh,./tests/Behat/reset-db.sh"
secrets: inherit
smoke_tests:
name: smoke tests
uses: ./.github/workflows/_run-task.yml
needs:
- workflow_variables
- reset_database
- scale_services_up
with:
workspace: ${{ needs.workflow_variables.outputs.build_identifier }}
account_name: development
task_name: "smoke_tests"
timeout: "900"
secrets: inherit
integration_tests_1:
name: integration tests frontend 1
uses: ./.github/workflows/_run-task.yml
needs:
- workflow_variables
- reset_database
- scale_services_up
with:
workspace: ${{ needs.workflow_variables.outputs.build_identifier }}
account_name: development
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
- scale_services_up
with:
workspace: ${{ needs.workflow_variables.outputs.build_identifier }}
account_name: development
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
- scale_services_up
with:
workspace: ${{ needs.workflow_variables.outputs.build_identifier }}
account_name: development
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
- scale_services_up
with:
workspace: ${{ needs.workflow_variables.outputs.build_identifier }}
account_name: development
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
- scale_services_up
with:
workspace: ${{ needs.workflow_variables.outputs.build_identifier }}
account_name: development
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
- scale_services_up
with:
workspace: ${{ needs.workflow_variables.outputs.build_identifier }}
account_name: development
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 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: 248804316466
workspace: ${{ needs.workflow_variables.outputs.build_identifier }}
secrets: inherit
end_of_workflow:
name: end of workflow
runs-on: ubuntu-latest
needs:
- scale_services_down
- 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: 248804316466
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: 248804316466
secrets: inherit