Skip to content

chore(deps): pin dependencies #608

chore(deps): pin dependencies

chore(deps): pin dependencies #608

name: Build & Deploy Spring Boot EL API to OpenShift
on:
pull_request:
types: [opened, synchronize, reopened, closed]
branches:
- main
paths:
- 'backend-el/**'
- 'charts/**'
- '.github/workflows/build-deploy-el-openshift.yml'
workflow_dispatch:
inputs:
environment:
description: 'Environment to deploy to OpenShift'
required: true
default: 'dev'
type: choice
options:
- dev
- prod
workflow_call:
inputs:
environment:
required: true
type: string
description: 'Environment to deploy to OpenShift'
default: 'dev'
jobs:
triggers:
name: Triggers
if: github.event.action != 'closed'
runs-on: ubuntu-24.04
outputs:
triggered: ${{ steps.diff_triggers.outputs.triggered }}
steps:
- uses: bcgov/action-diff-triggers@v0.2.0
id: diff_triggers
with:
triggers: ('.github/workflows/build-deploy-el-openshift.yml' 'backend-el' 'charts/backend-el')
build:
name: Build Spring Boot Oracle EL Containers
needs: [triggers]
if: (always() && (needs.triggers.outputs.triggered == 'true' || github.event_name == 'workflow_dispatch') && (github.event.action != 'closed') && (!github.event.pull_request.draft))
runs-on: ubuntu-24.04
strategy:
matrix:
package: ['backend-el']
include:
- package: 'backend-el'
build_file: ./backend-el/Dockerfile
build_context: ./backend-el
timeout-minutes: 10
steps:
- uses: bcgov/action-builder-ghcr@v4.4.1
with:
package: ${{ matrix.package }}
tags: ${{ github.sha }}
build_file: ${{ matrix.build_file }}
build_context: ${{ matrix.build_context }}
deploy:
name: Deploy Helm Chart to OpenShift ${{ github.event.inputs.environment }}
needs: [build]
# Deploy to prod if PR is merged
environment: openshift-${{ github.event.inputs.environment || (github.event.action == 'closed' && 'prod') || 'dev' }}
runs-on: ubuntu-24.04
steps:
- name: Helm Deploy
id: deploy
uses: bcgov/action-oc-runner@v1.7.0
env:
DB_PASSWORD: ${{ secrets.DBPASSWORD }} # handle special characters.
with:
oc_namespace: ${{ secrets.OC_NAMESPACE }}
oc_token: ${{ secrets.OC_TOKEN }}
oc_server: ${{ vars.oc_server }}
ref: ${{ github.head_ref}}
commands: |
# Deploy
cd charts/backend-el
SECRET_PERSIST=true
PVC_SIZE="500Mi"
# if event is PR then use a different bucket
if [ "${{ github.event_name }}" == "pull_request" ]; then
export AWS_LZA_S3_BUCKET="fta-rec-rst-lza-uploads"
export RELEASE_NAME="backend-el-pr-${{ github.event.number }}"
SECRET_PERSIST=false
PVC_SIZE="200Mi"
else
export AWS_LZA_S3_BUCKET="${{ secrets.AWS_LZA_S3_BUCKET }}"
export RELEASE_NAME="backend-el"
fi
export FLYWAY_TASK_LZA_CONFIGS="${{ secrets.FLYWAY_TASK_LZA_CONFIGS }}"
helm package -u . --app-version="${{ github.sha }}" --version=1.0.0
helm upgrade \
--set-string image.tag="${{ github.sha }}" \
--set-string secrets.dbHost="${{ secrets.DBHOST }}" \
--set-string secrets.dbName="${{ secrets.DBNAME }}" \
--set-string secrets.dbPassword="$DB_PASSWORD" \
--set-string secrets.dbUser="${{ secrets.DBUSER }}" \
--set-string config.awsS3Bucket="$AWS_LZA_S3_BUCKET" \
--set-string schedule="${{ secrets.SCHEDULE }}" \
--set-string secrets.flywayTaskConfigs="${FLYWAY_TASK_LZA_CONFIGS}" \
--set secrets.persist=$SECRET_PERSIST \
--set-string pvc.size="$PVC_SIZE" \
--install --wait \
--values values.yaml "$RELEASE_NAME"\
./backend-el-1.0.0.tgz
if [ "${{ github.event_name }}" == "pull_request" ]; then
oc create job $RELEASE_NAME-daily-${{github.run_number}} --from=cronjob/$RELEASE_NAME-daily
oc wait --for=condition=complete --timeout=600s job/$RELEASE_NAME-daily-${{github.run_number}}
fi
clean_up:
name: Clean up
if: github.event_name=='pull_request' && github.event.action == 'closed'
environment: openshift-${{ github.event.inputs.environment || 'dev' }}
runs-on: ubuntu-24.04
steps:
- name: Helm Uninstall on PR close
id: helm-uninstall
uses: bcgov/action-oc-runner@v1.7.0
with:
oc_namespace: ${{ secrets.OC_NAMESPACE }}
oc_token: ${{ secrets.OC_TOKEN }}
oc_server: ${{ vars.oc_server }}
commands: |
# Helm Uninstall
helm uninstall backend-el-pr-${{ github.event.number }} || true