Pull Request Deploy frontend #2
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: Pull Request Deploy frontend | |
on: | |
workflow_dispatch: | |
inputs: | |
pr-number: | |
description: "Pull Request Number:" | |
type: string | |
required: true | |
namespace: | |
description: "Deploy To:" | |
type: choice | |
required: true | |
options: | |
- The Q Dev | |
- QMS Dev | |
- The Q Test | |
jobs: | |
##### SETUP ################################################################## | |
parse-inputs: | |
name: refs/pull/${{ github.event.inputs.pr-number }}/head to ${{ github.event.inputs.namespace }} | |
runs-on: ubuntu-latest | |
outputs: | |
environment: ${{ steps.parse.outputs.environment }} | |
image-tag: ${{ steps.parse.outputs.image-tag }} | |
push-qms: ${{ steps.parse.outputs.push-qms }} | |
push-theq: ${{ steps.parse.outputs.push-theq }} | |
ref: ${{ steps.parse.outputs.ref }} | |
steps: | |
# Use the input values to create more coding-friendly values. | |
- name: Parse Inputs | |
id: parse | |
run: | | |
# Gets "dev" or "test". | |
ENVIRONMENT=$(echo ${{ github.event.inputs.namespace }} | \ | |
awk -F' ' '{print $NF}' | tr '[:upper:]' '[:lower:]') | |
echo ENVIRONMENT:$ENVIRONMENT | |
echo "environment=$ENVIRONMENT" >> $GITHUB_OUTPUT | |
IMAGE_TAG=pr${{ github.event.inputs.pr-number }} | |
echo IMAGE_TAG:$IMAGE_TAG | |
echo "image-tag=$IMAGE_TAG" >> $GITHUB_OUTPUT | |
if [ $GITHUB_REPOSITORY_OWNER != "bcgov" ]; then | |
# Never push in forks - useful and safer for development. | |
PUSH_QMS=false | |
PUSH_THEQ=false | |
elif [[ "${{ github.event.inputs.namespace }}" == QMS* ]]; then | |
PUSH_QMS=true | |
PUSH_THEQ=false | |
else | |
PUSH_QMS=false | |
PUSH_THEQ=true | |
fi | |
echo PUSH_QMS:$PUSH_QMS | |
echo "push-qms=$PUSH_QMS" >> $GITHUB_OUTPUT | |
echo PUSH_THEQ:$PUSH_THEQ | |
echo "push-theq=$PUSH_THEQ" >> $GITHUB_OUTPUT | |
REF=refs/pull/${{ github.event.inputs.pr-number }}/head | |
echo REF:$REF | |
echo "ref=$REF" >> $GITHUB_OUTPUT | |
##### TEST ################################################################### | |
##### BUILD ################################################################## | |
queue-management-frontend: | |
name: queue-management-frontend | |
needs: [parse-inputs] | |
uses: ./.github/workflows/reusable-build-dockerfile.yaml | |
secrets: | |
artifactory-password: ${{ secrets.ARTIFACTORY_PASSWORD }} | |
artifactory-registry: ${{ secrets.ARTIFACTORY_REGISTRY }} | |
artifactory-username: ${{ secrets.ARTIFACTORY_USERNAME }} | |
namespace-theq: ${{ secrets.LICENCE_PLATE_THEQ }}-tools | |
namespace-theq-password: ${{ secrets.SA_PASSWORD_THEQ_TOOLS }} | |
namespace-theq-username: ${{ secrets.SA_USERNAME }} | |
namespace-qms: ${{ secrets.LICENCE_PLATE_QMS }}-tools | |
namespace-qms-password: ${{ secrets.SA_PASSWORD_QMS_TOOLS }} | |
namespace-qms-username: ${{ secrets.SA_USERNAME }} | |
openshift-registry: ${{ secrets.OPENSHIFT_REGISTRY }} | |
with: | |
ref: ${{ needs.parse-inputs.outputs.ref }} | |
directory: frontend | |
image-name: queue-management-nginx-frontend | |
image-tags: ${{ needs.parse-inputs.outputs.image-tag }} | |
push-qms: ${{ needs.parse-inputs.outputs.push-qms == 'true' }} | |
push-theq: ${{ needs.parse-inputs.outputs.push-theq == 'true' }} | |
##### DEPLOY ################################################################# | |
tag: | |
name: Tag | |
if: github.repository_owner == 'bcgov' | |
needs: [parse-inputs, queue-management-frontend] | |
uses: ./.github/workflows/reusable-tag-image.yaml | |
secrets: | |
licence-plate: ${{ needs.parse-inputs.outputs.push-qms == 'true' && secrets.LICENCE_PLATE_QMS || secrets.LICENCE_PLATE_THEQ }} | |
openshift-api: ${{ secrets.OPENSHIFT_API }} | |
token: ${{ needs.parse-inputs.outputs.push-qms == 'true' && secrets.SA_PASSWORD_QMS_TOOLS || secrets.SA_PASSWORD_THEQ_TOOLS }} | |
with: | |
image-names: queue-management-nginx-frontend | |
tag-from: ${{ needs.parse-inputs.outputs.image-tag }} | |
tag-to: ${{ needs.parse-inputs.outputs.environment }} | |
##### TEST ################################################################### | |
# Only run Newman for The Q dev - other environments will fail due to data. | |
newman-theq-dev: | |
name: Newman Tests | |
if: github.event.inputs.namespace == 'The Q Dev' | |
needs: [parse-inputs,tag] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out | |
uses: actions/checkout@v2 | |
- name: NPM Install | |
run: | | |
cd api/postman | |
npm install newman | |
- name: Run Newman Tests | |
run: | | |
cd api/postman | |
node_modules/newman/bin/newman.js run API_Test_TheQ_Booking.json \ | |
-e postman_env.json \ | |
--delay-request 250 \ | |
--global-var 'auth_url=${{ vars.POSTMAN_AUTH_URL_DEV }}' \ | |
--global-var 'client_secret=${{ secrets.POSTMAN_CLIENT_SECRET_DEV }}' \ | |
--global-var 'clientid=${{ vars.POSTMAN_CLIENTID_DEV }}' \ | |
--global-var 'password=${{ secrets.POSTMAN_PASSWORD }}' \ | |
--global-var 'password_nonqtxn=${{ secrets.POSTMAN_PASSWORD_NONQTXN }}' \ | |
--global-var 'public_url=${{ vars.POSTMAN_PUBLIC_API_URL_THEQ_DEV }}' \ | |
--global-var 'public_user_id=${{ vars.POSTMAN_PUBLIC_USERID }}' \ | |
--global-var 'public_user_password=${{ secrets.POSTMAN_PASSWORD_PUBLIC_USER }}' \ | |
--global-var 'realm=${{ vars.POSTMAN_REALM }}' \ | |
--global-var 'url=${{ vars.POSTMAN_API_URL_THEQ_DEV }}' \ | |
--global-var 'userid=${{ vars.POSTMAN_USERID }}' \ | |
--global-var 'userid_nonqtxn=${{ vars.POSTMAN_USERID_NONQTXN }}' |