feat: pipeline to deploy for pr and run one time job #23
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: Build & Deploy Spring Boot EL API to OpenShift | |
on: | |
pull_request: | |
branches: | |
- main | |
workflow_dispatch: | |
inputs: | |
environment: | |
description: 'Environment to deploy to OpenShift' | |
required: true | |
default: 'dev' | |
type: choice | |
options: | |
- dev | |
- prod | |
jobs: | |
triggers: | |
name: Triggers | |
if: github.event.action != 'closed' | |
runs-on: ubuntu-24.04 | |
outputs: | |
triggered: ${{ steps.diff_triggers.outputs.triggered }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: bcgov/[email protected] | |
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: needs.triggers.outputs.triggered == 'true' || github.event_name == 'workflow_dispatch' | |
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/[email protected] | |
with: | |
package: ${{ matrix.package }} | |
tag: ${{ 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] | |
environment: openshift-${{ github.event.inputs.environment || 'dev' }} | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Helm Deploy | |
id: deploy | |
uses: bcgov/[email protected] | |
env: | |
DB_PASSWORD: ${{ secrets.dbPassword }} # handle special characters. | |
with: | |
oc_namespace: ${{ secrets.oc_namespace }} | |
oc_token: ${{ secrets.oc_token }} | |
oc_server: ${{ vars.oc_server }} | |
commands: | | |
# Deploy | |
cd charts/backend-el | |
# if event is PR then use a different bucket | |
if [ "${{ github.event_name }}" == "pull_request" ]; then | |
export AWS_S3_BUCKET="fta-rec-rst-uploads" | |
export RELEASE_NAME="backend-el-pr-${{ github.event.number }}" | |
else | |
export AWS_S3_BUCKET="rst-fta-dataload-oracle" | |
export RELEASE_NAME="backend-el" | |
fi | |
helm package -u . --app-version="${{ github.sha }}" --version=1.0.0 | |
# Helm upgrade/rollout, the db secrets are related to ORACLE DB, the cert secret can be a random one. | |
helm upgrade \ | |
--set-string image.tag="${{ github.sha }}" \ | |
--set-string secrets.dbHost="${{ secrets.dbHost }}" \ | |
--set-string secrets.certSecret="${{ secrets.certSecret }}" \ | |
--set-string secrets.dbName="${{ secrets.dbName }}" \ | |
--set-string secrets.dbPassword="$DB_PASSWORD" \ | |
--set-string secrets.dbUser="${{ secrets.dbUser }}" \ | |
--set-string config.awsS3Bucket="$AWS_S3_BUCKET" \ | |
--install --wait \ | |
--values values.yaml "$RELEASE_NAME"\ | |
./backend-el-1.0.0.tgz | |
oc create job $RELEASE_NAME-${{github.run_number}} --from=cronjob/$RELEASE_NAME | |
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/[email protected] | |
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 }} |