Skip to content

feat: merge workflow #1

feat: merge workflow

feat: merge workflow #1

Workflow file for this run

name: Merge
on:
pull_request:
# workflow_run:
# workflows: [PR Closed]
# types: [completed]
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: true
jobs:
# deploys-test:
# name: TEST Deploys
# environment: test
# permissions:
# issues: write
# runs-on: ubuntu-22.04
# strategy:
# matrix:
# package: [init, database, backend-go, backend-java, backend-py, frontend]
# include:
# - name: init
# file: common/openshift.init.yml
# overwrite: false
# repository: bcgov/quickstart-openshift
# - name: database
# file: database/openshift.deploy.yml
# overwrite: false
# repository: bcgov/quickstart-openshift
# triggers: ('backend-go' 'backend-java' 'backend-py')
# - name: backend-go
# file: backend-go/openshift.deploy.yml
# overwrite: true
# parameters: -p MIN_REPLICAS=1 -p MAX_REPLICAS=2
# -p PROMOTE_MIGRATION=${{ github.repository }}/migrations-go:test
# triggers: ('backend-go/')
# - name: backend-java
# file: backend-java/openshift.deploy.yml
# overwrite: true
# parameters: -p MIN_REPLICAS=1 -p MAX_REPLICAS=2
# triggers: ('backend-java/')
# - name: backend-py
# file: backend-py/openshift.deploy.yml
# overwrite: true
# parameters: -p MIN_REPLICAS=1 -p MAX_REPLICAS=2
# -p PROMOTE_MIGRATION=${{ github.repository }}/migrations-py:test
# triggers: ('backend-py/')
# - name: frontend
# file: frontend/openshift.deploy.yml
# overwrite: true
# parameters: -p MIN_REPLICAS=1 -p MAX_REPLICAS=2
# repository: bcgov/quickstart-openshift
# triggers: ('database/' 'backend/' 'frontend/')
# steps:
# - uses: bcgov-nr/action-deployer-openshift@v1.4.0
# 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=test -p NAME=${{ github.event.repository.name }}
# -p PROMOTE=${{ github.repository }}/${{ matrix.name }}:test
# ${{ matrix.parameters }}
# repository: ${{ matrix.repository }}
# triggers: ${{ matrix.triggers }}
# verification_path: ${{ matrix.verification_path }}
# integration-tests:
# needs: [deploys-test]
# name: Integration Tests for APIs
# defaults:
# run:
# working-directory: integration-tests
# runs-on: ubuntu-22.04
# strategy:
# matrix:
# name: [quarkus, fiber, fastapi]
# include:
# - name: quarkus
# baseUrl: https://quickstart-openshift-test-backend-java.apps.silver.devops.gov.bc.ca
# - name: fiber
# baseUrl: https://quickstart-openshift-test-backend-go.apps.silver.devops.gov.bc.ca
# - name: fastapi
# baseUrl: https://quickstart-openshift-test-backend-py.apps.silver.devops.gov.bc.ca
# steps:
# - uses: actions/checkout@v4
# name: Checkout
# - name: Cache node modules
# id: cache-npm
# uses: actions/cache@v3
# env:
# cache-name: cache-node-modules
# with:
# # npm cache files are stored in `~/.npm` on Linux/macOS
# path: ~/.npm
# key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
# restore-keys: |
# ${{ runner.os }}-build-${{ env.cache-name }}-
# ${{ runner.os }}-build-
# ${{ runner.os }}-
# - if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }}
# name: List the state of node modules
# continue-on-error: true
# run: npm list
# - name: Install dependencies
# run: npm ci
# - name: Run integration tests
# run: BASE_URL=${{ matrix.baseUrl }} API_NAME=${{ matrix.name }} node src/main.js
cypress-e2e:
name: Cypress end to end test
# needs: [deploys-test]
runs-on: ubuntu-22.04
defaults:
run:
working-directory: frontend
strategy:
matrix:
browser: [chrome, firefox, edge]
steps:
- uses: actions/checkout@v4
name: Checkout
- name: Cache node modules
id: cache-npm
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with: # npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }}
name: List the state of node modules
continue-on-error: true
run: npm list
- uses: cypress-io/github-action@v6
name: Cypress run
with:
config: pageLoadTimeout=10000,baseUrl=https://quickstart-openshift-test-frontend.apps.silver.devops.gov.bc.ca/
browser: ${{ matrix.browser }}
- uses: actions/upload-artifact@v3
if: failure()
with:
name: cypress-screenshots
path: ./cypress/screenshots
if-no-files-found: ignore # 'warn' or 'error' are also available, defaults to `warn`
# ghcr-cleanup:
# name: GHCR Cleanup
# runs-on: ubuntu-latest
# strategy:
# matrix:
# name: [backend-go, backend-py, backend-java, migrations-go, migrations-py]
# steps:
# - name: Keep last 50
# uses: actions/delete-package-versions@v4
# with:
# package-name: "${{ github.event.repository.name }}/${{ matrix.name }}"
# package-type: "container"
# min-versions-to-keep: 50
# ignore-versions: "^(prod|test)$"
# deploys-prod:
# name: PROD Deploys
# environment: prod
# needs: [integration-tests, cypress-e2e]
# permissions:
# issues: write
# runs-on: ubuntu-22.04
# strategy:
# matrix:
# package: [init, database, backend-go, backend-java, backend-py, frontend]
# include:
# - name: init
# file: common/openshift.init.yml
# overwrite: false
# repository: bcgov/quickstart-openshift
# - name: database
# file: database/openshift.deploy.yml
# overwrite: false
# repository: bcgov/quickstart-openshift
# triggers: ('backend-go' 'backend-java' 'backend-py')
# - name: backend-go
# file: backend-go/openshift.deploy.yml
# overwrite: true
# parameters: -p MIN_REPLICAS=1 -p MAX_REPLICAS=2
# -p PROMOTE_MIGRATION=${{ github.repository }}/migrations-go:prod
# triggers: ('backend-go/')
# - name: backend-java
# file: backend-java/openshift.deploy.yml
# overwrite: true
# parameters: -p MIN_REPLICAS=1 -p MAX_REPLICAS=2
# triggers: ('backend-java/')
# - name: backend-py
# file: backend-py/openshift.deploy.yml
# overwrite: true
# parameters: -p MIN_REPLICAS=1 -p MAX_REPLICAS=2
# -p PROMOTE_MIGRATION=${{ github.repository }}/migrations-py:prod
# triggers: ('backend-py/')
# - name: frontend
# file: frontend/openshift.deploy.yml
# overwrite: true
# parameters: -p MIN_REPLICAS=1 -p MAX_REPLICAS=2
# repository: bcgov/quickstart-openshift
# triggers: ('database/' 'backend/' 'frontend/')
# steps:
# - uses: bcgov-nr/action-deployer-openshift@v1.4.0
# 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=prod -p NAME=${{ github.event.repository.name }}
# -p PROMOTE=${{ github.repository }}/${{ matrix.name }}:prod
# ${{ matrix.parameters }}
# repository: ${{ matrix.repository }}
# triggers: ${{ matrix.triggers }}
# verification_path: ${{ matrix.verification_path }}
# image-promotions:
# name: Promote images to PROD
# needs: [deploys-prod]
# runs-on: ubuntu-22.04
# permissions:
# packages: write
# strategy:
# matrix:
# component:
# - backend
# - database
# - frontend
# - backend-py
# - backend-java
# - backend-go
# steps:
# - uses: shrink/actions-docker-registry-tag@v3
# with:
# registry: ghcr.io
# repository: ${{ github.repository }}/${{ matrix.component }}
# target: test
# tags: prod
# generate-schema-spy:
# name: Generate SchemaSpy Documentation
# runs-on: ubuntu-22.04
# services:
# postgres:
# image: postgres
# env:
# POSTGRES_DB: default
# POSTGRES_USER: default
# POSTGRES_PASSWORD: default
# options: >-
# --health-cmd pg_isready
# --health-interval 10s
# --health-timeout 5s
# --health-retries 5
# ports:
# - 5432:5432
# steps:
# - uses: actions/checkout@v4
# - uses: joshuaavalon/flyway-action@v3.0.0
# name: Generate SchemaSpy docs for node backend
# with:
# url: jdbc:postgresql://postgres:5432/default
# user: default
# password: default
# env:
# FLYWAY_VALIDATE_MIGRATION_NAMING: true
# FLYWAY_LOCATIONS: filesystem:./backend/db/migrations
# FLYWAY_DEFAULT_SCHEMA: "users"
# - name: Create Output Folder
# run: |
# mkdir output
# chmod a+rwx -R output
# - name: Run Schemaspy
# run: docker run --network host -v "$PWD/output:/output" schemaspy/schemaspy:6.2.4 -t pgsql -db default -host 127.0.0.1 -port 5432 -u default -p default -schemas users
# - name: Deploy to Pages
# uses: JamesIves/github-pages-deploy-action@v4
# with:
# folder: output
# target-folder: schemaspy