Skip to content

feat: replace Keycloak by FAM on FE #1478

feat: replace Keycloak by FAM on FE

feat: replace Keycloak by FAM on FE #1478

Workflow file for this run

name: PR
on:
pull_request:
concurrency:
# PR open and close use the same group, allowing only one at a time
group: pr-${{ github.event.number }}
cancel-in-progress: true
jobs:
init:
name: Initialize
env:
DOMAIN: apps.silver.devops.gov.bc.ca
PREFIX: ${{ github.event.repository.name }}-${{ github.event.number }}
runs-on: ubuntu-22.04
permissions:
pull-requests: write
steps:
- name: PR Greeting
uses: bcgov-nr/[email protected]
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
add_markdown: |
---
Thanks for the PR!
Any successful deployments (not always required) will be available below.
[Backend](https://${{ env.PREFIX }}-backend.${{ env.DOMAIN }}/)
[Frontend](https://${{ env.PREFIX }}-frontend.${{ env.DOMAIN }}/)
[Oracle-API](https://${{ env.PREFIX }}-oracle-api.${{ env.DOMAIN }}/)
Once merged, code will be promoted and handed off to following workflow run.
[Main Merge Workflow](https://github.com/${{ github.repository }}/actions/workflows/merge-main.yml)
- name: OpenShift Init
uses: bcgov-nr/[email protected]
with:
oc_namespace: ${{ vars.OC_NAMESPACE }}
oc_server: ${{ vars.OC_SERVER }}
oc_token: ${{ secrets.OC_TOKEN }}
file: common/openshift.init.yml
overwrite: false
parameters:
-p ZONE=${{ github.event.number }}
-p NAME=${{ github.event.repository.name }}
-p ORACLE_DB_USER=${{ secrets.DB_USER }}
-p ORACLE_DB_PASSWORD='${{ secrets.DB_PASSWORD }}'
-p FORESTCLIENTAPI_KEY='${{ secrets.FORESTCLIENTAPI_KEY }}'
-p AWS_KINESIS_STREAM='${{ secrets.AWS_KINESIS_STREAM }}'
-p AWS_KINESIS_ROLE_ARN='${{ secrets.AWS_KINESIS_ROLE_ARN }}'
-p AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }}
-p AWS_ACCESS_KEY_SECRET='${{ secrets.AWS_ACCESS_KEY_SECRET }}'
triggers: ('common/' 'database/' 'backend/' 'frontend/' 'oracle-api/')
builds:
name: Builds
needs:
- init
runs-on: ubuntu-22.04
permissions:
packages: write
strategy:
matrix:
package: [database, backend, frontend, oracle-api]
include:
- package: database
triggers: ('database/')
- package: backend
triggers: ('backend/')
- package: frontend
triggers: ('frontend/')
- package: oracle-api
triggers: ('oracle-api/')
steps:
- uses: actions/checkout@v4
- uses: bcgov-nr/[email protected]
with:
package: ${{ matrix.package }}
tag: ${{ github.event.number }}
tag_fallback: test
token: ${{ secrets.GITHUB_TOKEN }}
triggers: ${{ matrix.triggers }}
deploys:
name: Deploys
needs:
- builds
- init
runs-on: ubuntu-22.04
strategy:
matrix:
name: [database, backend, fluentbit, frontend, oracle-api]
include:
- name: database
file: database/openshift.deploy.yml
parameters:
-p DB_PVC_SIZE=128Mi
overwrite: false
triggers: ('common/' 'database/' 'backend/' 'frontend/')
- name: backend
file: backend/openshift.deploy.yml
overwrite: true
parameters:
-p MIN_REPLICAS=1
-p MAX_REPLICAS=1
-p BUILD=snapshot-${{ github.event.number }}
triggers: ('common/' 'database/' 'backend/' 'frontend/')
verification_path: "actuator/health"
- name: fluentbit
file: backend/openshift.fluentbit.yml
overwrite: true
triggers: ('common/' 'database/' 'backend/' 'frontend/' 'oracle-api/')
- name: frontend
file: frontend/openshift.deploy.yml
overwrite: true
parameters:
-p VITE_SPAR_BUILD_VERSION=snapshot-${{ github.event.number }}
-p VITE_NRSPARWEBAPP_VERSION=dev
-p MIN_REPLICAS=1
-p MAX_REPLICAS=1
-p VITE_USER_POOLS_ID=${{ vars.VITE_USER_POOLS_ID }}
-p VITE_USER_POOLS_WEB_CLIENT_ID=${{ vars.VITE_USER_POOLS_WEB_CLIENT_ID }}
triggers: ('common/' 'database/' 'backend/' 'oracle-api/' 'frontend/')
- name: oracle-api
file: oracle-api/openshift.deploy.yml
overwrite: true
parameters:
-p NR_SPAR_ORACLE_API_VERSION=snapshot-${{ github.event.number }}
-p MIN_REPLICAS=1
-p MAX_REPLICAS=1
triggers: ('common/' 'oracle-api/')
verification_path: "actuator/health"
steps:
- uses: bcgov-nr/[email protected]
with:
file: ${{ matrix.file }}
oc_namespace: ${{ vars.OC_NAMESPACE }}
oc_server: ${{ vars.OC_SERVER }}
oc_token: ${{ secrets.OC_TOKEN }}
overwrite: ${{ matrix.overwrite }}
penetration_test: false
parameters:
-p ZONE=${{ github.event.number }}
-p NAME=${{ github.event.repository.name }}
${{ matrix.parameters }}
triggers: ${{ matrix.triggers }}
verification_path: ${{ matrix.verification_path}}
cypress-test-coverage:
name: Cypress Test and Coverage
needs: [deploys]
runs-on: ubuntu-22.04
env:
CYPRESS_PASSWORD: ${{ secrets.CYPRESS_PASSWORD }}
CYPRESS_USERNAME: ${{ secrets.CYPRESS_USERNAME }}
VITE_SERVER_URL: https://${{ github.event.repository.name }}-${{ github.event.number }}-backend.apps.silver.devops.gov.bc.ca
VITE_ORACLE_SERVER_URL: https://${{ github.event.repository.name }}-${{ github.event.number }}-oracle-api.apps.silver.devops.gov.bc.ca
VITE_USER_POOLS_ID: ${{ vars.VITE_USER_POOLS_ID }}
VITE_USER_POOLS_WEB_CLIENT_ID: ${{ vars.VITE_USER_POOLS_WEB_CLIENT_ID }}
VITE_ZONE: TEST
steps:
- uses: actions/checkout@v4
- name: Run Cypress CI
uses: bcgov-nr/[email protected]
with:
node_version: "18.16.0"
commands: |
npm i
npm run cy:ci
dir: frontend
sonar_args: >
-Dsonar.organization=bcgov-sonarcloud
-Dsonar.javascript.lcov.reportPaths=cypress-coverage/lcov.info
-Dsonar.projectKey=nr-spar_frontend
-Dsonar.sources=src/
-Dsonar.exclusions=src/**/__test__/**/*
-Dsonar.exclusions=src/mock-server/**/*
-Dsonar.test.inclusions=cypress/e2e/smoke-test/**/*
sonar_token: ${{ secrets.SONAR_FRONTEND }}
- name: Upload videos
uses: actions/upload-artifact@v3
if: always()
with:
name: cypress-videos-chrome
path: /home/runner/work/nr-spar/nr-spar/frontend/cypress/videos/
- name: Upload coverage
uses: actions/upload-artifact@v3
if: success()
with:
name: cypress-coverage
path: /home/runner/work/nr-spar/nr-spar/frontend/cypress-coverage
# tests-api:
# name: API Tests
# needs:
# - deploys
# env:
# TARGET: ${{ github.event.repository.name }}-${{ github.event.number }}-oracle-api.apps.silver.devops.gov.bc.ca
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-node@v3
# with:
# node-version: 16
# - run: |
# # Install newman
# npm install -g newman
# npm install -g newman-reporter-htmlextra
# mkdir -p testArtifacts
# - run: |
# # Run Postman Collection
# newman run oracle-api/test/postman/oracle-api.postman_collection.json \
# -e oracle-api/test/postman/oracle-api.postman_environment.json \
# --env-var "apiAddr=${{ env.TARGET }}" \
# --env-var "releaseVer=snapshot-${{ github.event.number }}" \
# tests-backend:
# name: Backend Tests
# needs:
# - deploys
# env:
# TARGET: ${{ github.event.repository.name }}-${{ github.event.number }}-backend.apps.silver.devops.gov.bc.ca
# runs-on: ubuntu-22.04
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-node@v3
# with:
# node-version: 16
# - run: |
# # Install newman
# npm install -g newman
# npm install -g newman-reporter-htmlextra
# mkdir -p testArtifacts
# - run: |
# # Run Postman Collection
# newman run backend/test/postman/starting-api.postman_collection.json \
# -e backend/test/postman/starting-api.postman_environment.json \
# --env-var "apiAddr=${{ env.TARGET }}" \
# --env-var "releaseVer=snapshot-${{ github.event.number }}"
# tests-frontend:
# name: Frontend Tests
# env:
# TARGET: ${{ github.event.repository.name }}-${{ github.event.number }}-backend.apps.silver.devops.gov.bc.ca
# needs:
# - deploys
# continue-on-error: true
# runs-on: ubuntu-22.04
# timeout-minutes: 10
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-node@v3
# with:
# node-version: "16"
# cache: "npm"
# cache-dependency-path: frontend/package-lock.json
# - name: Install dependencies
# run: |
# cd frontend
# npm ci
# - name: Cypress run
# uses: cypress-io/github-action@v5
# with:
# config: baseUrl=https://${{ env.TARGET }}
# install: false
# working-directory: frontend