Skip to content

Ci/merge workflow

Ci/merge workflow #14

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:
name: [database, backend-go, backend-java, backend-py, frontend]
include:
- name: database
file: database/openshift.deploy.yml
overwrite: false
repository: bcgov/quickstart-openshift
- name: backend-go
file: backend-go/openshift.deploy.yml
overwrite: true
parameters: -p PROMOTE_MIGRATION=${{ github.repository }}/migrations-go:test
- name: backend-java
file: backend-java/openshift.deploy.yml
overwrite: true
- name: backend-py
file: backend-py/openshift.deploy.yml
overwrite: true
parameters: -p PROMOTE_MIGRATION=${{ github.repository }}/migrations-py:test
- name: frontend
file: frontend/openshift.deploy.yml
overwrite: true
repository: bcgov/quickstart-openshift
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 }}
parameters:
-p ZONE=test -p NAME=${{ github.event.repository.name }}
-p PROMOTE=${{ github.repository }}/${{ matrix.name }}:test
${{ matrix.parameters }}
repository: ${{ matrix.repository }}
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-backends-test-backend-java.apps.silver.devops.gov.bc.ca
# - name: fiber
# baseUrl: https://quickstart-openshift-backends-test-backend-go.apps.silver.devops.gov.bc.ca
# - name: fastapi
# baseUrl: https://quickstart-openshift-backends-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
# 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]
# permissions:
# issues: write
# runs-on: ubuntu-22.04
# strategy:
# matrix:
# name: [database, backend-go, backend-java, backend-py, frontend]
# include:
# - name: database
# file: database/openshift.deploy.yml
# overwrite: false
# repository: bcgov/quickstart-openshift
# - 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
# - name: backend-java
# file: backend-java/openshift.deploy.yml
# overwrite: true
# parameters: -p MIN_REPLICAS=1 -p MAX_REPLICAS=2
# - 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
# - name: frontend
# file: frontend/openshift.deploy.yml
# overwrite: true
# parameters: -p MIN_REPLICAS=1 -p MAX_REPLICAS=2
# repository: bcgov/quickstart-openshift
# 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 }}
# parameters:
# -p ZONE=prod -p NAME=${{ github.event.repository.name }}
# -p PROMOTE=${{ github.repository }}/${{ matrix.name }}:prod
# ${{ matrix.parameters }}
# repository: ${{ matrix.repository }}
# 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-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