Skip to content

deploy to environments #133

deploy to environments

deploy to environments #133

Workflow file for this run

name: deploy to environments
on:
workflow_dispatch:
permissions: {}
jobs:
get_config_values:
uses: NHSDigital/eps-common-workflows/.github/workflows/get-repo-config.yml@c8f899f30a6a726859b0277faa73cd9ff7f4de20
permissions:
attestations: read
contents: read
packages: read
with:
verify_published_from_main_image: true
quality_checks:
uses: NHSDigital/eps-common-workflows/.github/workflows/quality-checks-devcontainer.yml@c8f899f30a6a726859b0277faa73cd9ff7f4de20
needs: [get_config_values]
permissions:
contents: read
id-token: write
packages: read
with:
pinned_image: ${{ needs.get_config_values.outputs.pinned_image }}
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_config_values]
uses: NHSDigital/eps-common-workflows/.github/workflows/tag-release-devcontainer.yml@c8f899f30a6a726859b0277faa73cd9ff7f4de20
permissions:
id-token: write
contents: write
packages: write
with:
dry_run: false
pinned_image: ${{ needs.get_config_values.outputs.pinned_image }}
branch_name: main
tag_format: ${{ needs.get_config_values.outputs.tag_format }}
update_jira: true
jira_release_prefix: "psu"
secrets:
EXECUTE_JIRA_LAMBDA_ROLE: ${{ secrets.DEV_CLOUD_FORMATION_EXECUTE_LAMBDA_ROLE }}
package_code:
needs: [tag_release, get_config_values]
uses: ./.github/workflows/run_package_code_and_api.yml
permissions:
contents: read
packages: read
id-token: write
with:
pinned_image: ${{ needs.get_config_values.outputs.pinned_image }}
release_dev:
needs: [tag_release, package_code, get_commit_id, get_config_values]
uses: ./.github/workflows/run_release_code_and_api.yml
permissions:
contents: write
id-token: write
with:
pinned_image: ${{ needs.get_config_values.outputs.pinned_image }}
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
DEPLOY_APIGEE: true
DYNAMODB_AUTOSCALE: false
DEPLOY_APIGEE_CPSU: true
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: true
EXPOSE_GET_STATUS_UPDATES: 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
ENABLE_POST_DATED_NOTIFICATIONS: true
ENABLED_SYSTEMS: "Internal Test System"
BLOCKED_SITE_ODS_CODES: "XXXXX" # Workaround empty string handling
ENABLED_SUPPLIER_APPLICATION_IDS: "XXXXX"
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, get_config_values]
uses: ./.github/workflows/run_release_code_and_api.yml
permissions:
contents: write
id-token: write
with:
pinned_image: ${{ needs.get_config_values.outputs.pinned_image }}
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
EXPOSE_GET_STATUS_UPDATES: false
RUN_REGRESSION_TEST: false
STATE_MACHINE_LOG_LEVEL: ALL
ENABLE_BACKUP: "False"
ENABLE_NOTIFICATIONS_INTERNAL: false
ENABLE_NOTIFICATIONS_EXTERNAL: false
ENABLE_POST_DATED_NOTIFICATIONS: false
ENABLED_SYSTEMS: "Internal Test System"
BLOCKED_SITE_ODS_CODES: "B3J1Z"
ENABLED_SUPPLIER_APPLICATION_IDS: "XXXXX"
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,
get_config_values,
]
uses: ./.github/workflows/run_release_code_and_api.yml
permissions:
contents: write
id-token: write
with:
pinned_image: ${{ needs.get_config_values.outputs.pinned_image }}
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
EXPOSE_GET_STATUS_UPDATES: true
ENABLE_ALERTS: true
RUN_REGRESSION_TEST: false
STATE_MACHINE_LOG_LEVEL: ERROR
ENABLE_BACKUP: "False"
ENABLE_NOTIFICATIONS_INTERNAL: false
ENABLE_NOTIFICATIONS_EXTERNAL: false
ENABLE_POST_DATED_NOTIFICATIONS: false
ENABLED_SYSTEMS: "Internal Test System, Apotec Ltd - Apotec CRM - Production, CrxPatientApp, nhsPrescriptionApp, Titan PSU Prod"
BLOCKED_SITE_ODS_CODES: "B3J1Z"
ENABLED_SUPPLIER_APPLICATION_IDS: "XXXXX"
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,
get_config_values,
]
uses: ./.github/workflows/run_release_code_and_api.yml
permissions:
contents: write
id-token: write
with:
pinned_image: ${{ needs.get_config_values.outputs.pinned_image }}
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
EXPOSE_GET_STATUS_UPDATES: true
ENABLE_ALERTS: true
RUN_REGRESSION_TEST: true
STATE_MACHINE_LOG_LEVEL: ALL
ENABLE_BACKUP: "False"
ENABLE_NOTIFICATIONS_INTERNAL: false
ENABLE_NOTIFICATIONS_EXTERNAL: false
ENABLE_POST_DATED_NOTIFICATIONS: true
ENABLED_SYSTEMS: "Internal Test System, Apotec Ltd - Apotec CRM - Production, CrxPatientApp, nhsPrescriptionApp, Titan PSU Prod"
BLOCKED_SITE_ODS_CODES: "B3J1Z"
ENABLED_SUPPLIER_APPLICATION_IDS: "XXXXX"
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, get_config_values]
uses: ./.github/workflows/run_release_code_and_api.yml
permissions:
contents: write
id-token: write
with:
pinned_image: ${{ needs.get_config_values.outputs.pinned_image }}
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
DEPLOY_APIGEE: true
DYNAMODB_AUTOSCALE: false
DEPLOY_APIGEE_CPSU: true
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: true
EXPOSE_GET_STATUS_UPDATES: true
ENABLE_ALERTS: true
RUN_REGRESSION_TEST: true
STATE_MACHINE_LOG_LEVEL: ALL
ENABLE_BACKUP: "True"
ENABLE_NOTIFICATIONS_INTERNAL: true
ENABLE_NOTIFICATIONS_EXTERNAL: true
ENABLE_POST_DATED_NOTIFICATIONS: true
ENABLED_SYSTEMS: "CrxPatientApp"
BLOCKED_SITE_ODS_CODES: "XXXXX" # Workaround empty string handling
ENABLED_SUPPLIER_APPLICATION_IDS: "XXXXX"
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, get_config_values]
uses: ./.github/workflows/run_release_code_and_api.yml
permissions:
contents: write
id-token: write
with:
pinned_image: ${{ needs.get_config_values.outputs.pinned_image }}
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
EXPOSE_GET_STATUS_UPDATES: false
RUN_REGRESSION_TEST: false
STATE_MACHINE_LOG_LEVEL: ALL
ENABLE_BACKUP: "False"
ENABLE_NOTIFICATIONS_INTERNAL: false
ENABLE_NOTIFICATIONS_EXTERNAL: false
ENABLE_POST_DATED_NOTIFICATIONS: false
ENABLED_SYSTEMS: "Internal Test System, Apotec Ltd - Apotec CRM - Production, CrxPatientApp, nhsPrescriptionApp, Titan PSU Prod"
BLOCKED_SITE_ODS_CODES: "B3J1Z"
ENABLED_SUPPLIER_APPLICATION_IDS: "XXXXX"
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,
get_config_values,
]
uses: ./.github/workflows/run_release_code_and_api.yml
permissions:
contents: write
id-token: write
with:
pinned_image: ${{ needs.get_config_values.outputs.pinned_image }}
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
DEPLOY_APIGEE: true
DYNAMODB_AUTOSCALE: true
DEPLOY_APIGEE_CPSU: true
DEPLOY_CHECK_PRESCRIPTION_STATUS_UPDATE: false
EXPOSE_GET_STATUS_UPDATES: false
ENABLE_ALERTS: true
RUN_REGRESSION_TEST: false
STATE_MACHINE_LOG_LEVEL: ERROR
ENABLE_BACKUP: "True"
ENABLE_NOTIFICATIONS_INTERNAL: true
ENABLE_NOTIFICATIONS_EXTERNAL: true
ENABLE_POST_DATED_NOTIFICATIONS: false
ENABLED_SYSTEMS: "CrxPatientApp"
BLOCKED_SITE_ODS_CODES: "XXXXX" # Workaround empty string handling
ENABLED_SUPPLIER_APPLICATION_IDS: "XXXXX"
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 }}