Merge pull request #1492 from bcgov/UTOPIA-1399 #386
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: DPIA API - Deploy DEV | |
on: | |
push: | |
branches: [ main ] | |
paths: | |
- "src/backend/**" | |
workflow_dispatch: | |
jobs: | |
DPIA-API-Build-Tag-Push: | |
environment: API-Dev | |
runs-on: ubuntu-latest | |
steps: | |
# Checkout CIRMO-DPIA Github 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-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 }} | |
# Setup environment variables | |
- name: Setup environment | |
run: | | |
make api-setup-env | |
# Build the DPIA API Application Image via docker-compose | |
- name: Build the Docker image | |
run: | | |
docker-compose build dpia-api | |
# TROUBLESHOOTING - view images present in github action run | |
- name: Docker List Images | |
run: | | |
docker image ls | |
# Tag Docker Image built with latest | |
- name: Docker Tag Version | |
run: | | |
docker tag cirmo-dpia_dpia-api image-registry.apps.silver.devops.gov.bc.ca/b996e6-tools/api-dev:latest | |
# Push docker image to BC Gov Repository | |
- name: Docker Push Version | |
run: | | |
docker push image-registry.apps.silver.devops.gov.bc.ca/b996e6-tools/api-dev:latest | |
DEV-deploy: | |
runs-on: ubuntu-latest | |
environment: API-Dev | |
needs: [ DPIA-API-Build-Tag-Push ] | |
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 deploy helper script to process and apply DPIA API Application template into DEV namespace | |
- name: Process and Apply API 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: "api-dc-template.yaml" | |
SERVICE_TEMPLATE: "api-service-template.yaml" | |
ROUTE_TEMPLATE: "api-route-template.yaml" | |
DIR: "api/silver" | |
IMAGESTREAM: "api-dev" | |
run: | | |
./.github/helpers/deploy.sh | |
DEV-health-check: | |
runs-on: ubuntu-latest | |
environment: | |
name: API-Dev | |
url: https://dev.pia.gov.bc.ca/api/api-docs | |
needs: [ DEV-deploy ] | |
steps: | |
# 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: API-Dev | |
needs: [ DEV-health-check ] | |
steps: | |
# 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 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-Success-Notify: | |
runs-on: ubuntu-latest | |
environment: API-Dev | |
needs: [ DEV-cleanup ] | |
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! API Deployment to PIA ${{ secrets.ENVIRONMENT }} Environment has finished.", | |
"text": "The PIA API has been built and deployed to the ${{ secrets.ENVIRONMENT }} environment. \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/api/api-docs).", | |
}' | |
DEV-Failure-Notify: | |
runs-on: ubuntu-latest | |
environment: API-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! API Deployment to the PIA ${{ secrets.ENVIRONMENT }} Environment has failed.", | |
"text": "The PIA API 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 }}].", | |
}' |