Skip to content

Release - Deploy all from v2.17.0-8810 to PROD #441

Release - Deploy all from v2.17.0-8810 to PROD

Release - Deploy all from v2.17.0-8810 to PROD #441

name: Release - Deploy All
run-name: Release - Deploy all from ${{ github.ref_name }} to ${{ inputs.environment }}
permissions:
contents: read
actions: read
on:
workflow_dispatch:
inputs:
environment:
description: "Environment"
required: true
type: environment
deployCamundaDefinitions:
description: "Deploy Camunda BPMN/DMN"
type: boolean
default: true
deployFormioDefinitions:
description: "Deploy Form.io forms"
type: boolean
default: true
workflow_call:
inputs:
gitRef:
required: true
type: string
environment:
required: true
type: string
deployCamundaDefinitions:
required: true
type: boolean
deployFormioDefinitions:
required: true
type: boolean
secrets:
SA_TOKEN:
required: true
OPENSHIFT_ENV_NAMESPACE:
required: true
HOST_PREFIX:
required: true
KEYCLOAK_AUTH_URL:
required: true
BCeID_WEB_SERVICE_WSDL:
required: true
SITE_MINDER_LOGOUT_URL:
required: true
ATBC_LOGIN_ENDPOINT:
required: true
ATBC_ENDPOINT:
required: true
BYPASS_APPLICATION_SUBMIT_VALIDATIONS:
required: true
BYPASS_CRA_INCOME_VERIFICATION:
required: true
OPENSHIFT_SIMS_CREDS_NAME:
required: true
FORMS_SECRET_NAME:
required: true
QUEUE_PREFIX:
required: true
API_PORT:
required: true
WEB_PORT:
required: true
env:
NAMESPACE: ${{ secrets.OPENSHIFT_ENV_NAMESPACE }}
BUILD_REF: ${{ inputs.gitRef || github.ref_name }}
HOST_PREFIX: ${{ secrets.HOST_PREFIX }}
DOMAIN_PREFIX: ${{ vars.DOMAIN_PREFIX }}
BUILD_NAMESPACE: ${{ vars.BUILD_NAMESPACE }}
KEYCLOAK_REALM: ${{ vars.KEYCLOAK_REALM }}
IS_FULLTIME_ALLOWED: ${{ vars.IS_FULLTIME_ALLOWED }}
KEYCLOAK_AUTH_URL: ${{ secrets.KEYCLOAK_AUTH_URL }}
BCeID_WEB_SERVICE_WSDL: ${{ secrets.BCeID_WEB_SERVICE_WSDL }}
SITE_MINDER_LOGOUT_URL: ${{ secrets.SITE_MINDER_LOGOUT_URL }}
ATBC_LOGIN_ENDPOINT: ${{ secrets.ATBC_LOGIN_ENDPOINT }}
ATBC_ENDPOINT: ${{ secrets.ATBC_ENDPOINT }}
SWAGGER_ENABLED: true
APPLICATION_ARCHIVE_DAYS: ${{ vars.APPLICATION_ARCHIVE_DAYS }}
BYPASS_APPLICATION_SUBMIT_VALIDATIONS: ${{ secrets.BYPASS_APPLICATION_SUBMIT_VALIDATIONS }}
BYPASS_CRA_INCOME_VERIFICATION: ${{ secrets.BYPASS_CRA_INCOME_VERIFICATION }}
API_SECRET_NAME: ${{ secrets.OPENSHIFT_SIMS_CREDS_NAME }}
WORKERS_SECRET_NAME: ${{ secrets.OPENSHIFT_SIMS_CREDS_NAME }}
QUEUE_CONSUMERS_SECRET_NAME: ${{ secrets.OPENSHIFT_SIMS_CREDS_NAME }}
FORMS_SECRET_NAME: ${{ secrets.FORMS_SECRET_NAME }}
QUEUE_PREFIX: ${{ secrets.QUEUE_PREFIX }}
API_PORT: ${{ secrets.API_PORT }}
WEB_PORT: ${{ secrets.WEB_PORT }}
MAXIMUM_IDLE_TIME_FOR_WARNING_STUDENT: ${{ vars.MAXIMUM_IDLE_TIME_FOR_WARNING_STUDENT }}
MAXIMUM_IDLE_TIME_FOR_WARNING_SUPPORTING_USER: ${{ vars.MAXIMUM_IDLE_TIME_FOR_WARNING_SUPPORTING_USER }}
MAXIMUM_IDLE_TIME_FOR_WARNING_INSTITUTION: ${{ vars.MAXIMUM_IDLE_TIME_FOR_WARNING_INSTITUTION }}
MAXIMUM_IDLE_TIME_FOR_WARNING_AEST: ${{ vars.MAXIMUM_IDLE_TIME_FOR_WARNING_AEST }}
APPLICATION_SUBMISSION_DEADLINE_WEEKS: ${{ vars.APPLICATION_SUBMISSION_DEADLINE_WEEKS }}
APP_ENV: ${{ vars.APP_ENV }}
TLS_CERTIFICATE: ${{ secrets.TLS_CERTIFICATE }}
TLS_KEY: ${{ secrets.TLS_KEY }}
TLS_CA_CERTIFICATE: ${{ secrets.TLS_CA_CERTIFICATE }}
ALLOW_BETA_USERS_ONLY: ${{ vars.ALLOW_BETA_USERS_ONLY }}
ALLOW_BETA_INSTITUTIONS_ONLY: ${{ vars.ALLOW_BETA_INSTITUTIONS_ONLY }}
FORMIO_CPU_REQUEST: ${{ vars.FORMIO_CPU_REQUEST }}
FORMIO_MEMORY_REQUEST: ${{ vars.FORMIO_MEMORY_REQUEST }}
FORMIO_MEMORY_LIMIT: ${{ vars.FORMIO_MEMORY_LIMIT }}
FORMIO_REPLICAS: ${{ vars.FORMIO_REPLICAS }}
API_CPU_REQUEST: ${{ vars.API_CPU_REQUEST }}
API_MEMORY_REQUEST: ${{ vars.API_MEMORY_REQUEST }}
API_MEMORY_LIMIT: ${{ vars.API_MEMORY_LIMIT }}
API_REPLICAS: ${{ vars.API_REPLICAS }}
WORKERS_CPU_REQUEST: ${{ vars.WORKERS_CPU_REQUEST }}
WORKERS_MEMORY_REQUEST: ${{ vars.WORKERS_MEMORY_REQUEST }}
WORKERS_MEMORY_LIMIT: ${{ vars.WORKERS_MEMORY_LIMIT }}
WORKERS_REPLICAS: ${{ vars.WORKERS_REPLICAS }}
WEB_CPU_REQUEST: ${{ vars.WEB_CPU_REQUEST }}
WEB_MEMORY_REQUEST: ${{ vars.WEB_MEMORY_REQUEST }}
WEB_MEMORY_LIMIT: ${{ vars.WEB_MEMORY_LIMIT }}
WEB_REPLICAS: ${{ vars.WEB_REPLICAS }}
QUEUE_CONSUMERS_CPU_REQUEST: ${{ vars.QUEUE_CONSUMERS_CPU_REQUEST }}
QUEUE_CONSUMERS_MEMORY_REQUEST: ${{ vars.QUEUE_CONSUMERS_MEMORY_REQUEST }}
QUEUE_CONSUMERS_MEMORY_LIMIT: ${{ vars.QUEUE_CONSUMERS_MEMORY_LIMIT }}
QUEUE_CONSUMERS_REPLICAS: ${{ vars.QUEUE_CONSUMERS_REPLICAS }}
EXTERNAL_IP_WHITELIST: ${{ vars.EXTERNAL_IP_WHITELIST }}
jobs:
env-setup:
name: Setup Dynamic Environment Variables
environment: ${{ inputs.environment }}
runs-on: ubuntu-latest
outputs:
build-ref: ${{ steps.set-build-ref.outputs.build-ref }}
steps:
- name: Set build-ref
id: set-build-ref
run: |
# Set the build ref to be used in the workflow and reusable workflows calls.
echo "build-ref=${{ env.BUILD_REF }}" >> "$GITHUB_OUTPUT"
# Run DB migrations.
run-db-migrations:
name: Run DB Migrations
environment: ${{ inputs.environment }}
runs-on: ubuntu-latest
needs: env-setup
steps:
- name: Install CLI tools from OpenShift Mirror
uses: redhat-actions/openshift-tools-installer@v1
with:
oc: "4"
- name: Print env
run: |
echo Deploy Environment: ${{ inputs.environment }}
echo GIT REF: ${{ needs.env-setup.outputs.build-ref }}
echo BUILD NAMESPACE: $BUILD_NAMESPACE
echo OC CLI Version: $(oc version)
- name: Checkout Target Branch
uses: actions/checkout@v5
with:
ref: ${{ needs.env-setup.outputs.build-ref }}
- name: Log in to OpenShift
run: |
oc login --token=${{ secrets.SA_TOKEN }} --server=${{ vars.OPENSHIFT_CLUSTER_URL }}
- name: Run db-migrations
working-directory: "./devops/"
run: |
make oc-run-db-migrations
# Deploy SIMS API.
deploy-sims-api:
name: Deploy SIMS-API
environment: ${{ inputs.environment }}
runs-on: ubuntu-latest
needs: [env-setup, run-db-migrations]
steps:
- name: Install CLI tools from OpenShift Mirror
uses: redhat-actions/openshift-tools-installer@v1
with:
oc: "4"
- name: Print env
run: |
echo Deploy ENVIRONMENT: ${{ inputs.environment }}
echo GIT REF: ${{ needs.env-setup.outputs.build-ref }}
echo BUILD NAMESPACE: $BUILD_NAMESPACE
echo OC CLI Version: $(oc version)
- name: Checkout Target Branch
uses: actions/checkout@v5
with:
ref: ${{ needs.env-setup.outputs.build-ref }}
- name: Log in to OpenShift
run: |
oc login --token=${{ secrets.SA_TOKEN }} --server=${{ vars.OPENSHIFT_CLUSTER_URL }}
- name: Deploy SIMS-API
working-directory: "./devops/"
run: |
make oc-deploy-api
# Deploy workers.
deploy-workers:
name: Deploy Workers
environment: ${{ inputs.environment }}
env:
DISABLE_ORM_CACHE: true
runs-on: ubuntu-latest
needs: [env-setup, run-db-migrations]
steps:
- name: Install CLI tools from OpenShift Mirror
uses: redhat-actions/openshift-tools-installer@v1
with:
oc: "4"
- name: Print env
run: |
echo BUILD ENVIRONMENT: ${{ inputs.environment }}
echo GIT REF: ${{ needs.env-setup.outputs.build-ref }}
echo OC CLI Version: $(oc version)
- name: Checkout Target Branch
uses: actions/checkout@v5
with:
ref: ${{ needs.env-setup.outputs.build-ref }}
- name: Log in to OpenShift
run: |
oc login --token=${{ secrets.SA_TOKEN }} --server=${{ vars.OPENSHIFT_CLUSTER_URL }}
- name: Deploy Workers
working-directory: "./devops/"
run: |
make oc-deploy-workers
# Deploy queue consumers.
deploy-queue-consumers:
name: Deploy Queue Consumers
environment: ${{ inputs.environment }}
runs-on: ubuntu-latest
needs: [env-setup, run-db-migrations]
steps:
- name: Install CLI tools from OpenShift Mirror
uses: redhat-actions/openshift-tools-installer@v1
with:
oc: "4"
- name: Print env
run: |
echo Deploy ENVIRONMENT: ${{ inputs.environment }}
echo GIT REF: ${{ needs.env-setup.outputs.build-ref }}
echo BUILD NAMESPACE: $BUILD_NAMESPACE
echo OC CLI Version: $(oc version)
- name: Checkout Target Branch
uses: actions/checkout@v5
with:
ref: ${{ needs.env-setup.outputs.build-ref }}
- name: Log in to OpenShift
run: |
oc login --token=${{ secrets.SA_TOKEN }} --server=${{ vars.OPENSHIFT_CLUSTER_URL }}
- name: Deploy Queue Consumers
working-directory: "./devops/"
run: |
make oc-deploy-queue-consumers
# Deploy Web/Frontend.
deploy-web-frontend:
name: Deploy Web/Frontend
environment: ${{ inputs.environment }}
runs-on: ubuntu-latest
needs: [env-setup, run-db-migrations]
steps:
- name: Install CLI tools from OpenShift Mirror
uses: redhat-actions/openshift-tools-installer@v1
with:
oc: "4"
- name: Print env
run: |
echo Deploy ENVIRONMENT: ${{ inputs.environment }}
echo GIT REF: ${{ needs.env-setup.outputs.build-ref }}
echo BUILD NAMESPACE: $BUILD_NAMESPACE
echo OC CLI Version: $(oc version)
- name: Checkout Target Branch
uses: actions/checkout@v5
with:
ref: ${{ needs.env-setup.outputs.build-ref }}
- name: Log in to OpenShift
run: |
oc login --token=${{ secrets.SA_TOKEN }} --server=${{ vars.OPENSHIFT_CLUSTER_URL }}
- name: Deploy Web/Frontend
working-directory: "./devops/"
run: |
make oc-deploy-web
# Deploy Camunda Definitions
deployCamundaDefinitions:
if: ${{ inputs.deployCamundaDefinitions }}
name: Deploy BPMNs and DMNs to Camunda
needs: [env-setup, deploy-sims-api]
uses: ./.github/workflows/release-deploy-camunda-definitions.yml
with:
environment: ${{ inputs.environment }}
gitRef: ${{ needs.env-setup.outputs.build-ref }}
secrets: inherit
# Deploy Formio Definitions
deployFormioDefinitions:
if: ${{ inputs.deployFormioDefinitions }}
name: Deploy Form.io definitions
needs: [env-setup, deploy-sims-api]
uses: ./.github/workflows/release-deploy-formio-definitions.yml
with:
environment: ${{ inputs.environment }}
gitRef: ${{ needs.env-setup.outputs.build-ref }}
secrets: inherit