feat: merge workflow #1
Workflow file for this run
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: 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 |