Skip to content

Merge pull request #1492 from bcgov/UTOPIA-1399 #386

Merge pull request #1492 from bcgov/UTOPIA-1399

Merge pull request #1492 from bcgov/UTOPIA-1399 #386

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 }}].",
}'