Skip to content

Merge pull request #1842 from bcgov/UTOPIA-1565 #584

Merge pull request #1842 from bcgov/UTOPIA-1565

Merge pull request #1842 from bcgov/UTOPIA-1565 #584

name: DPIA Frontend - Deploy DEV
on:
push:
branches: [main]
paths:
- "src/frontend/**"
workflow_dispatch:
jobs:
DPIA-App-Build-Tag-Push:
runs-on: ubuntu-latest
environment: APP-Dev
steps:
# Checkout CIRMO-DPIA Github Repository
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Login to Openshift Silver Cluster
uses: redhat-actions/oc-login@v1
env:
OPENSHIFT_USER: github-actions
OPENSHIFT_NAMESPACE: b996e6-tools
with:
openshift_server_url: ${{ secrets.OPENSHIFT4_SERVER_URL }}
openshift_token: ${{ secrets.OPENSHIFT4_TOOLS_SA_PASSWORD }}
namespace: b996e6-tools
# Login to BC Gov Docker Image Repository
- name: Login to Openshift Docker
run: |
docker login ${{ secrets.OPENSHIFT4_PUBLIC_IMAGE_REPOSITORY_BASE_URL }} -u ${{ secrets.OPENSHIFT4_TOOLS_SA_USERNAME }} -p ${{ secrets.OPENSHIFT4_TOOLS_SA_PASSWORD }}
# Build the DPIA Frontend Application Image via docker-compose
- name: Build the Docker image
run: |
sudo docker-compose build dpia-webapp
# TROUBLESHOOTING - view images present in github action run
- name: Docker List Images
run: |
docker image ls
# Tag Docker Image built with latest commit hash (ex// $HASH-dev)
- name: Docker Tag Version
run: |
docker tag cirmo-dpia_dpia-webapp image-registry.apps.silver.devops.gov.bc.ca/b996e6-tools/app-dev:latest
# TROUBLESHOOTING - view images present in github action run
- name: Docker List Images
run: |
docker image ls
# Push docker image to BC Gov Repository
- name: Docker Push Version
run: |
docker push image-registry.apps.silver.devops.gov.bc.ca/b996e6-tools/app-dev:latest
DEV-deploy:
runs-on: ubuntu-latest
environment: APP-Dev
needs: [DPIA-App-Build-Tag-Push]
steps:
# Checkout Repository
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Login to Openshift Silver Cluster
uses: redhat-actions/oc-login@v1
env:
OPENSHIFT_USER: github-actions
OPENSHIFT_NAMESPACE: b996e6-dev
with:
openshift_server_url: ${{ secrets.OPENSHIFT4_SERVER_URL }}
openshift_token: ${{ secrets.OPENSHIFT4_DEV_SA_PASSWORD }}
namespace: b996e6-dev
# Use deploy helper script to process and apply DPIA Frontend Application template into DEV namespace
- name: Process and Apply APP DeploymentConfig, Service, Route templates
env:
NAMESPACE: "${{ secrets.OPENSHIFT_DEV_NAMESPACE }}"
APPLICATION_NAME: "${{ secrets.APPLICATION_NAME }}-v2"
LICENSE_PLATE: "${{ secrets.LICENSE_PLATE }}"
ENVIRONMENT: "${{ secrets.ENVIRONMENT }}"
DC_TEMPLATE: "app-dc-template.yaml"
SERVICE_TEMPLATE: "app-service-template.yaml"
ROUTE_TEMPLATE: "app-route-template.yaml"
DIR: "app/silver"
IMAGESTREAM: "app-dev"
run: |
./.github/helpers/deploy.sh
DEV-health-check:
runs-on: ubuntu-latest
environment:
name: APP-Dev
url: https://dev.pia.gov.bc.ca
needs: [DEV-deploy]
steps:
# Checkout Repository
- name: Checkout Repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Login to Openshift Silver Cluster
uses: redhat-actions/oc-login@v1
env:
OPENSHIFT_USER: github-actions
OPENSHIFT_NAMESPACE: b996e6-dev
with:
openshift_server_url: ${{ secrets.OPENSHIFT4_SERVER_URL }}
openshift_token: ${{ secrets.OPENSHIFT4_DEV_SA_PASSWORD }}
namespace: b996e6-dev
# Use application health helper script to monitor readiness/liveness probe response post deployment
- name: Health Check DEV deployment
env:
NAMESPACE: "${{ secrets.OPENSHIFT_DEV_NAMESPACE }}"
APPLICATION_NAME: "${{ secrets.APPLICATION_NAME }}-v2"
run: |
./.github/helpers/application-health.sh
DEV-cleanup:
runs-on: ubuntu-latest
environment: "APP-Dev"
needs: [DEV-health-check]
steps:
# Checkout Repository
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Login to Openshift Silver Cluster
uses: redhat-actions/oc-login@v1
env:
OPENSHIFT_USER: github-actions
OPENSHIFT_NAMESPACE: b996e6-dev
with:
openshift_server_url: ${{ secrets.OPENSHIFT4_SERVER_URL }}
openshift_token: ${{ secrets.OPENSHIFT4_DEV_SA_PASSWORD }}
namespace: b996e6-dev
# Use cleanup helper script to remove any leftover deployment pod objects from previous deployment
- name: Cleanup previous deployment pod objects
env:
NAMESPACE: "${{ secrets.OPENSHIFT_DEV_NAMESPACE }}"
run: |
./.github/helpers/cleanup-pods.sh
# Use cleanup helper script to remove any leftover deployment pod objects from previous deployment
- name: Cleanup previous replication controller objects
env:
NAMESPACE: "${{ secrets.OPENSHIFT_DEV_NAMESPACE }}"
run: |
./.github/helpers/cleanup-rc.sh
DEV-e2e:
needs: [DEV-cleanup]
uses: ./.github/workflows/e2e-test.yaml
with:
environment: "APP-Dev"
secrets:
DRAFT_IDIR_PASSWORD: ${{ secrets.DRAFT_IDIR_PASSWORD }}
MPO_IDIR_PASSWORD: ${{ secrets.MPO_IDIR_PASSWORD }}
CPO_IDIR_PASSWORD: ${{ secrets.CPO_IDIR_PASSWORD }}
DEV-Success-Notify:
runs-on: ubuntu-latest
environment: APP-Dev
needs: [DEV-e2e]
steps:
- name: Message Teams Channel on Success
run: |
curl --location --request POST ${{ secrets.TEAMS_SUCCESS_URL }} \
--header 'Content-Type: text/plain' \
--data-raw '{
"@context": "https://schema.org/extensions",
"@type": "MessageCard",
"themeColor": "0072C6",
"title": "SUCCESS! WebApp Deployment to PIA ${{ secrets.ENVIRONMENT }} Environment has finished!.",
"text": "The PIA WebApp has been built and deployed to the ${{ secrets.ENVIRONMENT }} environment. \n\n End-to-end test suite has passed \n\n The logs for the successful deployment can be found [here](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})\n\n The changes for commit ${{ github.sha }} can be found [here](https://dev.pia.gov.bc.ca).",
}'
DEV-Failure-Notify:
runs-on: ubuntu-latest
environment: APP-Dev
if: failure()
steps:
- name: Message Teams Channel on Failure
run: |
curl --location --request POST ${{ secrets.TEAMS_FAILURE_URL }} \
--header 'Content-Type: text/plain' \
--data-raw '{
"@context": "https://schema.org/extensions",
"@type": "MessageCard",
"themeColor": "0072C6",
"title": "FAILURE! WebApp Deployment to the PIA ${{ secrets.ENVIRONMENT }} Environment has failed.",
"text": "The PIA WebApp has NOT been built and deployed to the ${{ secrets.LICENSE_PLATE }} ${{ secrets.ENVIRONMENT }} environment.\n\n Please review the Github Action for this deployment (here)[${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}].",
}'