Skip to content

deploy to environments #102

deploy to environments

deploy to environments #102

Workflow file for this run

name: deploy to environments
on:
workflow_dispatch:
env:
BRANCH_NAME: ${{ github.event.ref.BRANCH_NAME }}
jobs:
get_asdf_version:
runs-on: ubuntu-22.04
outputs:
asdf_version: ${{ steps.asdf-version.outputs.version }}
tag_format: ${{ steps.load-config.outputs.TAG_FORMAT }}
steps:
- name: Checkout code
uses: actions/checkout@v5
- name: Get asdf version
id: asdf-version
run: echo "version=$(awk '!/^#/ && NF {print $1; exit}' .tool-versions.asdf)" >> "$GITHUB_OUTPUT"
- name: Load config value
id: load-config
run: |
TAG_FORMAT=$(yq '.TAG_FORMAT' .github/cfg/settings.yml)
echo "TAG_FORMAT=$TAG_FORMAT" >> "$GITHUB_OUTPUT"
quality_checks:
uses: NHSDigital/eps-workflow-quality-checks/.github/workflows/[email protected]
needs: [get_asdf_version]
with:
asdfVersion: ${{ needs.get_asdf_version.outputs.asdf_version }}
secrets:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
get_commit_id:
runs-on: ubuntu-22.04
outputs:
commit_id: ${{ steps.commit_id.outputs.commit_id }}
steps:
- name: Get Commit ID
id: commit_id
run: |
echo "commit_id=${{ github.sha }}" >> "$GITHUB_OUTPUT"
tag_release:
needs: [quality_checks, get_commit_id, get_asdf_version]
uses: NHSDigital/eps-workflow-semantic-release/.github/workflows/tag-release.yml@56891c92a8c3840f4d38464a421acaf323debbb3
with:
dry_run: false
asdfVersion: ${{ needs.get_asdf_version.outputs.asdf_version }}
branch_name: main
publish_package: false
tag_format: ${{ needs.get_asdf_version.outputs.tag_format }}
secrets: inherit
package_code:
needs: tag_release
uses: ./.github/workflows/run_package_code_and_api.yml
release_dev:
needs: [tag_release, package_code, get_commit_id]
uses: ./.github/workflows/run_release_code_and_api.yml
with:
ARTIFACT_BUCKET_PREFIX: ${{needs.tag_release.outputs.version_tag}}
STACK_NAME: psu
AWS_ENVIRONMENT: dev
APIGEE_ENVIRONMENT: internal-dev
ENABLE_MUTUAL_TLS: true
BUILD_ARTIFACT: packaged_code
TRUSTSTORE_FILE: psu-truststore.pem
VERSION_NUMBER: ${{needs.tag_release.outputs.version_tag}}
COMMIT_ID: ${{needs.get_commit_id.outputs.commit_id}}
LOG_LEVEL: DEBUG
LOG_RETENTION_DAYS: 30
CREATE_INT_RELEASE_NOTES: true
CREATE_PROD_RELEASE_NOTES: true
DEPLOY_APIGEE: true
DYNAMODB_AUTOSCALE: false
DEPLOY_APIGEE_CPSU: true
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: true
ENABLE_ALERTS: true
REQUIRE_APPLICATION_NAME: false
RUN_REGRESSION_TEST: true
STATE_MACHINE_LOG_LEVEL: ALL
ENABLE_BACKUP: "True"
ENABLE_NOTIFICATIONS_INTERNAL: false
ENABLE_NOTIFICATIONS_EXTERNAL: false
ENABLED_SYSTEMS: "Internal Test System"
BLOCKED_SITE_ODS_CODES: "XXXXX" # Workaround empty string handling
NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c"
NOTIFY_API_BASE_URL: "https://int.api.service.nhs.uk"
MTLS_KEY: psu-mtls-1
IS_PULL_REQUEST: false
TEST_PRESCRIPTIONS_1: ${{ vars.TEST_PRESCRIPTIONS_1_VALUES }}
TEST_PRESCRIPTIONS_2: ${{ vars.TEST_PRESCRIPTIONS_2_VALUES }}
TEST_PRESCRIPTIONS_3: ${{ vars.TEST_PRESCRIPTIONS_3_VALUES }}
TEST_PRESCRIPTIONS_4: ${{ vars.TEST_PRESCRIPTIONS_4_VALUES }}
FORWARD_CSOC_LOGS: false
secrets:
CLOUD_FORMATION_DEPLOY_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_DEPLOY_ROLE }}
DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
INT_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.INT_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE }}
PROXYGEN_ROLE: ${{ secrets.PROXYGEN_PTL_ROLE }}
REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}
release_dev_sandbox:
needs: [tag_release, package_code, get_commit_id]
uses: ./.github/workflows/run_release_code_and_api.yml
with:
ARTIFACT_BUCKET_PREFIX: ${{needs.tag_release.outputs.version_tag}}-sandbox
STACK_NAME: psu-sandbox
AWS_ENVIRONMENT: dev
APIGEE_ENVIRONMENT: internal-dev-sandbox
ENABLE_MUTUAL_TLS: true
BUILD_ARTIFACT: packaged_sandbox_code
TRUSTSTORE_FILE: psu-sandbox-truststore.pem
VERSION_NUMBER: ${{needs.tag_release.outputs.version_tag}}
COMMIT_ID: ${{needs.get_commit_id.outputs.commit_id}}
LOG_RETENTION_DAYS: 30
DEPLOY_APIGEE: true
DYNAMODB_AUTOSCALE: false
DEPLOY_APIGEE_CPSU: true
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: true
RUN_REGRESSION_TEST: false
STATE_MACHINE_LOG_LEVEL: ALL
ENABLE_BACKUP: "False"
ENABLE_NOTIFICATIONS_INTERNAL: false
ENABLE_NOTIFICATIONS_EXTERNAL: false
ENABLED_SYSTEMS: "Internal Test System"
BLOCKED_SITE_ODS_CODES: "B3J1Z"
NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c"
NOTIFY_API_BASE_URL: "https://int.api.service.nhs.uk"
MTLS_KEY: psu-mtls-1
IS_PULL_REQUEST: false
TEST_PRESCRIPTIONS_1: ${{ vars.TEST_PRESCRIPTIONS_1_VALUES }}
TEST_PRESCRIPTIONS_2: ${{ vars.TEST_PRESCRIPTIONS_2_VALUES }}
TEST_PRESCRIPTIONS_3: ${{ vars.TEST_PRESCRIPTIONS_3_VALUES }}
TEST_PRESCRIPTIONS_4: ${{ vars.TEST_PRESCRIPTIONS_4_VALUES }}
FORWARD_CSOC_LOGS: false
secrets:
CLOUD_FORMATION_DEPLOY_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_DEPLOY_ROLE }}
PROXYGEN_ROLE: ${{ secrets.PROXYGEN_PTL_ROLE }}
REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}
release_ref:
needs:
[
tag_release,
release_dev,
release_dev_sandbox,
package_code,
get_commit_id,
]
uses: ./.github/workflows/run_release_code_and_api.yml
with:
ARTIFACT_BUCKET_PREFIX: ${{needs.tag_release.outputs.version_tag}}
STACK_NAME: psu
AWS_ENVIRONMENT: ref
APIGEE_ENVIRONMENT: ref
ENABLE_MUTUAL_TLS: true
BUILD_ARTIFACT: packaged_code
TRUSTSTORE_FILE: psu-truststore.pem
VERSION_NUMBER: ${{needs.tag_release.outputs.version_tag}}
COMMIT_ID: ${{needs.get_commit_id.outputs.commit_id}}
LOG_LEVEL: DEBUG
LOG_RETENTION_DAYS: 30
DEPLOY_APIGEE: true
DYNAMODB_AUTOSCALE: true
DEPLOY_APIGEE_CPSU: true
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: true
ENABLE_ALERTS: true
RUN_REGRESSION_TEST: false
STATE_MACHINE_LOG_LEVEL: ERROR
ENABLE_BACKUP: "False"
ENABLE_NOTIFICATIONS_INTERNAL: false
ENABLE_NOTIFICATIONS_EXTERNAL: false
ENABLED_SYSTEMS: "Internal Test System, Apotec Ltd - Apotec CRM - Production, CrxPatientApp, nhsPrescriptionApp, Titan PSU Prod"
BLOCKED_SITE_ODS_CODES: "B3J1Z"
NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c"
NOTIFY_API_BASE_URL: "https://int.api.service.nhs.uk"
MTLS_KEY: psu-mtls-1
IS_PULL_REQUEST: false
TEST_PRESCRIPTIONS_1: ${{ vars.TEST_PRESCRIPTIONS_1_VALUES }}
TEST_PRESCRIPTIONS_2: ${{ vars.TEST_PRESCRIPTIONS_2_VALUES }}
TEST_PRESCRIPTIONS_3: ${{ vars.TEST_PRESCRIPTIONS_3_VALUES }}
TEST_PRESCRIPTIONS_4: ${{ vars.TEST_PRESCRIPTIONS_4_VALUES }}
FORWARD_CSOC_LOGS: false
secrets:
CLOUD_FORMATION_DEPLOY_ROLE: ${{ secrets.REF_CLOUD_FORMATION_DEPLOY_ROLE }}
PROXYGEN_ROLE: ${{ secrets.PROXYGEN_PTL_ROLE }}
REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}
release_qa:
needs:
[
tag_release,
release_dev,
release_dev_sandbox,
package_code,
get_commit_id,
]
uses: ./.github/workflows/run_release_code_and_api.yml
with:
ARTIFACT_BUCKET_PREFIX: ${{needs.tag_release.outputs.version_tag}}
STACK_NAME: psu
AWS_ENVIRONMENT: qa
APIGEE_ENVIRONMENT: internal-qa
ENABLE_MUTUAL_TLS: true
BUILD_ARTIFACT: packaged_code
TRUSTSTORE_FILE: psu-truststore.pem
VERSION_NUMBER: ${{needs.tag_release.outputs.version_tag}}
COMMIT_ID: ${{needs.get_commit_id.outputs.commit_id}}
LOG_LEVEL: DEBUG
LOG_RETENTION_DAYS: 30
DEPLOY_APIGEE: true
DYNAMODB_AUTOSCALE: false
DEPLOY_APIGEE_CPSU: true
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: true
ENABLE_ALERTS: true
RUN_REGRESSION_TEST: true
STATE_MACHINE_LOG_LEVEL: ALL
ENABLE_BACKUP: "False"
ENABLE_NOTIFICATIONS_INTERNAL: false
ENABLE_NOTIFICATIONS_EXTERNAL: false
ENABLED_SYSTEMS: "Internal Test System, Apotec Ltd - Apotec CRM - Production, CrxPatientApp, nhsPrescriptionApp, Titan PSU Prod"
BLOCKED_SITE_ODS_CODES: "B3J1Z"
NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c"
NOTIFY_API_BASE_URL: "https://int.api.service.nhs.uk"
MTLS_KEY: psu-mtls-1
IS_PULL_REQUEST: false
TEST_PRESCRIPTIONS_1: ${{ vars.TEST_PRESCRIPTIONS_1_VALUES }}
TEST_PRESCRIPTIONS_2: ${{ vars.TEST_PRESCRIPTIONS_2_VALUES }}
TEST_PRESCRIPTIONS_3: ${{ vars.TEST_PRESCRIPTIONS_3_VALUES }}
TEST_PRESCRIPTIONS_4: ${{ vars.TEST_PRESCRIPTIONS_4_VALUES }}
FORWARD_CSOC_LOGS: false
secrets:
CLOUD_FORMATION_DEPLOY_ROLE: ${{ secrets.QA_CLOUD_FORMATION_DEPLOY_ROLE }}
PROXYGEN_ROLE: ${{ secrets.PROXYGEN_PTL_ROLE }}
REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}
release_int:
needs: [tag_release, release_qa, package_code, get_commit_id]
uses: ./.github/workflows/run_release_code_and_api.yml
with:
ARTIFACT_BUCKET_PREFIX: ${{needs.tag_release.outputs.version_tag}}
STACK_NAME: psu
AWS_ENVIRONMENT: int
APIGEE_ENVIRONMENT: int
ENABLE_MUTUAL_TLS: true
BUILD_ARTIFACT: packaged_code
TRUSTSTORE_FILE: psu-truststore.pem
VERSION_NUMBER: ${{needs.tag_release.outputs.version_tag}}
COMMIT_ID: ${{needs.get_commit_id.outputs.commit_id}}
LOG_LEVEL: DEBUG
LOG_RETENTION_DAYS: 30
CREATE_INT_RELEASE_NOTES: true
CREATE_INT_RC_RELEASE_NOTES: true
DEPLOY_APIGEE: true
DYNAMODB_AUTOSCALE: false
DEPLOY_APIGEE_CPSU: true
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: true
ENABLE_ALERTS: true
RUN_REGRESSION_TEST: true
STATE_MACHINE_LOG_LEVEL: ALL
ENABLE_BACKUP: "True"
ENABLE_NOTIFICATIONS_INTERNAL: true
ENABLE_NOTIFICATIONS_EXTERNAL: true
ENABLED_SYSTEMS: "Internal Test System" # Workaround empty string handling
BLOCKED_SITE_ODS_CODES: "XXXXX" # Workaround empty string handling
NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c"
NOTIFY_API_BASE_URL: "https://int.api.service.nhs.uk"
MTLS_KEY: psu-mtls-1
IS_PULL_REQUEST: false
TEST_PRESCRIPTIONS_1: ${{ vars.TEST_PRESCRIPTIONS_1_VALUES }}
TEST_PRESCRIPTIONS_2: ${{ vars.TEST_PRESCRIPTIONS_2_VALUES }}
TEST_PRESCRIPTIONS_3: ${{ vars.TEST_PRESCRIPTIONS_3_VALUES }}
TEST_PRESCRIPTIONS_4: ${{ vars.TEST_PRESCRIPTIONS_4_VALUES }}
FORWARD_CSOC_LOGS: false
secrets:
CLOUD_FORMATION_DEPLOY_ROLE: ${{ secrets.INT_CLOUD_FORMATION_DEPLOY_ROLE }}
DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
INT_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.INT_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE }}
PROXYGEN_ROLE: ${{ secrets.PROXYGEN_PROD_ROLE }}
REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}
release_int_sandbox:
needs: [tag_release, release_qa, package_code, get_commit_id]
uses: ./.github/workflows/run_release_code_and_api.yml
with:
ARTIFACT_BUCKET_PREFIX: ${{needs.tag_release.outputs.version_tag}}-sandbox
STACK_NAME: psu-sandbox
AWS_ENVIRONMENT: int
APIGEE_ENVIRONMENT: sandbox
ENABLE_MUTUAL_TLS: true
BUILD_ARTIFACT: packaged_sandbox_code
TRUSTSTORE_FILE: psu-sandbox-truststore.pem
VERSION_NUMBER: ${{needs.tag_release.outputs.version_tag}}
COMMIT_ID: ${{needs.get_commit_id.outputs.commit_id}}
LOG_RETENTION_DAYS: 30
DEPLOY_APIGEE: true
DYNAMODB_AUTOSCALE: false
DEPLOY_APIGEE_CPSU: true
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: true
RUN_REGRESSION_TEST: false
STATE_MACHINE_LOG_LEVEL: ALL
ENABLE_BACKUP: "False"
ENABLE_NOTIFICATIONS_INTERNAL: false
ENABLE_NOTIFICATIONS_EXTERNAL: false
ENABLED_SYSTEMS: "Internal Test System, Apotec Ltd - Apotec CRM - Production, CrxPatientApp, nhsPrescriptionApp, Titan PSU Prod"
BLOCKED_SITE_ODS_CODES: "B3J1Z"
NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c"
NOTIFY_API_BASE_URL: "https://int.api.service.nhs.uk"
MTLS_KEY: psu-mtls-1
IS_PULL_REQUEST: false
TEST_PRESCRIPTIONS_1: ${{ vars.TEST_PRESCRIPTIONS_1_VALUES }}
TEST_PRESCRIPTIONS_2: ${{ vars.TEST_PRESCRIPTIONS_2_VALUES }}
TEST_PRESCRIPTIONS_3: ${{ vars.TEST_PRESCRIPTIONS_3_VALUES }}
TEST_PRESCRIPTIONS_4: ${{ vars.TEST_PRESCRIPTIONS_4_VALUES }}
FORWARD_CSOC_LOGS: false
secrets:
CLOUD_FORMATION_DEPLOY_ROLE: ${{ secrets.INT_CLOUD_FORMATION_DEPLOY_ROLE }}
PROXYGEN_ROLE: ${{ secrets.PROXYGEN_PROD_ROLE }}
REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}
release_prod:
needs:
[
tag_release,
release_int,
release_int_sandbox,
package_code,
get_commit_id,
]
uses: ./.github/workflows/run_release_code_and_api.yml
with:
ARTIFACT_BUCKET_PREFIX: ${{needs.tag_release.outputs.version_tag}}
STACK_NAME: psu
AWS_ENVIRONMENT: prod
APIGEE_ENVIRONMENT: prod
ENABLE_MUTUAL_TLS: true
BUILD_ARTIFACT: packaged_code
TRUSTSTORE_FILE: psu-truststore.pem
VERSION_NUMBER: ${{needs.tag_release.outputs.version_tag}}
COMMIT_ID: ${{needs.get_commit_id.outputs.commit_id}}
LOG_LEVEL: INFO
LOG_RETENTION_DAYS: 731
MARK_JIRA_RELEASED: true
CREATE_PROD_RELEASE_NOTES: true
DEPLOY_APIGEE: true
DYNAMODB_AUTOSCALE: true
DEPLOY_APIGEE_CPSU: true
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: false
ENABLE_ALERTS: true
RUN_REGRESSION_TEST: false
STATE_MACHINE_LOG_LEVEL: ERROR
ENABLE_BACKUP: "True"
ENABLE_NOTIFICATIONS_INTERNAL: true
ENABLE_NOTIFICATIONS_EXTERNAL: true
ENABLED_SYSTEMS: "Internal Test System" # Workaround empty string handling
BLOCKED_SITE_ODS_CODES: "XXXXX" # Workaround empty string handling
NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c" # INT and PROD share a value
NOTIFY_API_BASE_URL: "https://api.service.nhs.uk"
MTLS_KEY: psu-mtls-1
IS_PULL_REQUEST: false
FORWARD_CSOC_LOGS: true
secrets:
CLOUD_FORMATION_DEPLOY_ROLE: ${{ secrets.PROD_CLOUD_FORMATION_DEPLOY_ROLE }}
DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
INT_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.INT_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE: ${{ secrets.PROD_CLOUD_FORMATION_CHECK_VERSION_ROLE }}
DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE }}
PROXYGEN_ROLE: ${{ secrets.PROXYGEN_PROD_ROLE }}
REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}