Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(ci): drop Helm #2286

Draft
wants to merge 52 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
fde670a
Restore frontend/openshift.deploy.yml
DerekRoberts Feb 19, 2025
449c1aa
Add frontend deployment for oc, remove for Helm
DerekRoberts Feb 19, 2025
aa6fd01
Move network policty from Helm to oc template
DerekRoberts Feb 19, 2025
9a104eb
Deprecate deployment config
DerekRoberts Feb 19, 2025
f9c92eb
Drop imageStream
DerekRoberts Feb 19, 2025
bb0a00f
Restore pod disruption budget
DerekRoberts Feb 19, 2025
4a75743
Frontend tag
DerekRoberts Feb 19, 2025
88123a7
Comment out Helm stack
DerekRoberts Feb 19, 2025
c3dedab
Comment out Helm db
DerekRoberts Feb 19, 2025
e2520f7
Keep cleaning up deployment config
DerekRoberts Feb 19, 2025
fcb8eba
Template int handling
DerekRoberts Feb 19, 2025
5c581da
Comment out builds for now
DerekRoberts Feb 19, 2025
f0ef5f4
Move backend to oc template
DerekRoberts Feb 19, 2025
c12ee5d
Add backend to deployer
DerekRoberts Feb 19, 2025
46ef2b0
Fix backend image
DerekRoberts Feb 19, 2025
e9bca0c
Move frontend ingress over
DerekRoberts Feb 19, 2025
cd9bc85
Backend images
DerekRoberts Feb 19, 2025
cf68646
Drop backend imagestream
DerekRoberts Feb 19, 2025
478f1d8
Quote, int handling and general template consistency
DerekRoberts Feb 19, 2025
faa4706
Quote, int handling and general template consistency
DerekRoberts Feb 19, 2025
4107127
Backend envars
DerekRoberts Feb 20, 2025
c1fca34
Backend init container envars
DerekRoberts Feb 20, 2025
e779a6b
Drop backend route
DerekRoberts Feb 20, 2025
9df5e55
Moved remaining network policies into backend template
DerekRoberts Feb 20, 2025
af620a8
Template revisions
DerekRoberts Feb 20, 2025
0fa9421
Template int handling
DerekRoberts Feb 20, 2025
0e63a06
Init template for secrets
DerekRoberts Feb 20, 2025
f209098
Remove Helm leftovers
DerekRoberts Feb 20, 2025
e25c565
Init in .deploy.yml
DerekRoberts Feb 20, 2025
31a4c6a
Pin actions
DerekRoberts Feb 20, 2025
8972e3e
Job prereqs
DerekRoberts Feb 20, 2025
9da52b9
DB_PASSWORD
DerekRoberts Feb 20, 2025
bb14fdd
Frontend volumes and affinity
DerekRoberts Feb 23, 2025
1477c31
Topology key
DerekRoberts Feb 23, 2025
5e105f0
Fix and simplify affinity
DerekRoberts Feb 23, 2025
95b07e0
Fix and simplify affinity
DerekRoberts Feb 23, 2025
96023f7
Cleanup
DerekRoberts Feb 23, 2025
e9ac171
Backend affinity and proves
DerekRoberts Feb 23, 2025
9637acc
Update backend_url
DerekRoberts Feb 23, 2025
d08cb78
Drop unused crunchy s3 secret
DerekRoberts Feb 23, 2025
6338cf7
Network policy from backend to db
DerekRoberts Feb 23, 2025
828252c
Drop duplicate network policy
DerekRoberts Feb 23, 2025
7d8e54c
Fix backend template
DerekRoberts Feb 23, 2025
1104f39
Restore workflows
DerekRoberts Feb 24, 2025
69e5a02
Job prereqs
DerekRoberts Feb 24, 2025
ea001e7
Restore removed Crunchy templates
DerekRoberts Feb 24, 2025
bc1263c
Missed pod disruption budget
DerekRoberts Feb 24, 2025
a0eb7e7
Remove event numbers from deployer
DerekRoberts Feb 24, 2025
3d0830c
Fix deployer outputs
DerekRoberts Feb 24, 2025
40e2fc7
Fix deployer outputs
DerekRoberts Feb 24, 2025
4eb647b
Param cleanup
DerekRoberts Feb 25, 2025
e21dab0
Remove unnecessary secret
DerekRoberts Feb 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .codebuddy/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
db/
166 changes: 62 additions & 104 deletions .github/workflows/.deployer.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: .Helm Deployer
name: .Deployer

on:
workflow_call:
Expand All @@ -7,16 +7,6 @@ on:
# Only secrets!

### Typical / recommended
atomic:
description: Atomic deployment? That means fail all or nothing
default: true
required: false
type: string
directory:
description: Chart directory
default: 'charts/app'
required: false
type: string
environment:
description: Environment name; omit for PRs
required: false
Expand All @@ -26,13 +16,9 @@ on:
description: OpenShift server
required: false
type: string
params:
description: Extra parameters to pass to helm upgrade
required: false
type: string
tag:
description: Specify a tag to deploy; defaults to PR number
required: false
default: ${{ github.event.number }}
type: string
triggers:
description: Paths used to trigger a deployment; e.g. ('./backend/' './frontend/)
Expand All @@ -49,19 +35,14 @@ on:
default: 10
required: false
type: number
values:
description: 'Values file'
default: 'values.yaml'
required: false
type: string

outputs:
tag:
description: 'Which tag was used for deployment?'
value: ${{ jobs.deploy.outputs.tag }}
value: ${{ jobs.init.outputs.tag }}
triggered:
description: 'Has a deployment has been triggered?'
value: ${{ jobs.deploy.outputs.triggered }}
value: ${{ jobs.init.outputs.triggered }}

secrets:
oc_namespace:
Expand All @@ -70,107 +51,84 @@ on:
oc_token:
description: OpenShift token
required: true
postgres_password:
description: The database password
required: true

permissions: {}

jobs:
deployer-db:
database:
name: Database
uses: ./.github/workflows/.deployer-db.yml
secrets:
oc_namespace: ${{ secrets.OC_NAMESPACE }}
oc_token: ${{ secrets.OC_TOKEN }}
oc_namespace: ${{ secrets.oc_namespace }}
oc_token: ${{ secrets.oc_token }}
with:
environment: ${{ inputs.environment }}
triggers: ${{ inputs.triggers }}

deploy:
name: Stack
needs: deployer-db
init:
name: Init
environment: ${{ inputs.environment }}
runs-on: ubuntu-24.04
outputs:
tag: ${{ inputs.tag || steps.pr.outputs.pr }}
triggered: ${{ steps.deploy.outputs.triggered }}
tag: ${{ steps.init.outputs.tag }}
triggered: ${{ steps.init.outputs.triggered }}
runs-on: ubuntu-24.04
timeout-minutes: 1
steps:
- uses: actions/checkout@v4

# Variables
- if: inputs.tag == ''
id: pr
uses: bcgov/action-get-pr@21f9351425cd55a98e869ee28919a512aa30647d # v0.0.1

- id: vars
run: |
# Vars: tag and release

# Tag defaults to PR number, but can be overridden by inputs.tag
tag=${{ inputs.tag || steps.pr.outputs.pr }}

# Release name includes run numbers to ensure uniqueness
release=${{ github.event.repository.name }}-${{ inputs.environment || steps.pr.outputs.pr || inputs.tag }}

# version, to support helm packaging for non-pr based releases (workflow_dispatch). default to 1.0.0+github run number
version=1.0.0+${{ github.run_number }}

# Summary
echo "tag=${tag}"
echo "release=${release}"
echo "version=${version}"

# Output
echo "tag=${tag}" >> $GITHUB_OUTPUT
echo "release=${release}" >> $GITHUB_OUTPUT
echo "version=${version}" >> $GITHUB_OUTPUT

- name: Stop pre-existing deployments on PRs (status = pending-upgrade)
if: github.event_name == 'pull_request'
uses: bcgov/action-oc-runner@13d14b8f41df24226036385510472f683350850b # v1.0.0
- uses: bcgov/action-deployer-openshift@541a7b1ed72cdd919a56262665d98410e6d97cb6 # v3.1.0
id: init
with:
file: common/openshift.init.yml
oc_namespace: ${{ secrets.oc_namespace }}
oc_token: ${{ secrets.oc_token }}
oc_server: ${{ vars.oc_server }}
oc_token: ${{ secrets.oc_token }}
overwrite: false
parameters:
-p NAME=${{ github.event.repository.name }}
-p NAMESPACE=${{ secrets.oc_namespace }}
-p POSTGRES_DATABASE=app-${{ inputs.tag }}
-p POSTGRES_HOST=postgres-crunchy-primary.${{ secrets.oc_namespace }}.svc
-p POSTGRES_PASSWORD=${{ secrets.postgres_password }}
-p POSTGRES_USER=${{ inputs.db_user }}
-p ZONE=${{ inputs.tag }}
triggers: ${{ inputs.triggers }}
commands: |
# Interrupt any previous deployments (PR only)
PREVIOUS=$(helm status ${{ steps.vars.outputs.release }} -o json | jq .info.status || true)
if [[ ${PREVIOUS} =~ pending ]]; then
echo "Rollback triggered"
helm rollback ${{ steps.vars.outputs.release }} || \
helm uninstall ${{ steps.vars.outputs.release }}
fi

- name: Helm Deploy
id: deploy
uses: bcgov/action-oc-runner@13d14b8f41df24226036385510472f683350850b # v1.0.0
deploy:
name: Deploy
environment: ${{ inputs.environment }}
needs: [database, init]
runs-on: ubuntu-24.04
timeout-minutes: ${{ inputs.timeout-minutes }}
strategy:
matrix:
name: [backend, frontend]
include:
- name: frontend
file: frontend/openshift.deploy.yml
overwrite: true
parameters:
-p MIN_REPLICAS=1
-p MAX_REPLICAS=1
- name: backend
file: backend/openshift.deploy.yml
overwrite: true
parameters:
-p MIN_REPLICAS=1
-p MAX_REPLICAS=1
steps:
- uses: bcgov/action-deployer-openshift@541a7b1ed72cdd919a56262665d98410e6d97cb6 # v3.1.0
id: deploys
with:
file: ${{ matrix.file }}
oc_namespace: ${{ secrets.oc_namespace }}
oc_token: ${{ secrets.oc_token }}
oc_server: ${{ vars.oc_server }}
oc_token: ${{ secrets.oc_token }}
overwrite: ${{ matrix.overwrite }}
parameters:
-p NAME=${{ github.event.repository.name }}
-p ZONE=${{ inputs.tag }} -p TAG=${{ inputs.tag }}
${{ matrix.parameters }}
timeout: 15m
triggers: ${{ inputs.triggers }}
commands: |
# Deploy

# If directory provided, cd to it
[ -z "${{ inputs.directory }}" ]|| cd ${{ inputs.directory }}

# Helm package
sed -i 's/^name:.*/name: ${{ github.event.repository.name }}/' Chart.yaml
helm package -u . --app-version="tag-${{ steps.vars.outputs.tag }}_run-${{ github.run_number }}" --version=${{ steps.pr.outputs.pr || steps.vars.outputs.version }}

# Helm upgrade/rollout
helm upgrade \
--set-string global.repository=${{ github.repository }} \
--set-string global.tag=${{ steps.vars.outputs.tag }} \
--set-string global.config.databaseUser=${{ inputs.db_user }} \
${{ inputs.params }} \
--install --wait ${{ inputs.atomic && '--atomic' || '' }} ${{ steps.vars.outputs.release }} \
--timeout ${{ inputs.timeout-minutes }}m \
--values ${{ inputs.values }} \
./${{ github.event.repository.name }}-${{ steps.pr.outputs.pr || steps.vars.outputs.version }}.tgz

# Helm release history
helm history ${{ steps.vars.outputs.release }}

# Completed pod cleanup
oc delete po --field-selector=status.phase==Succeeded || true
2 changes: 1 addition & 1 deletion .github/workflows/pr-open.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ jobs:
secrets:
oc_namespace: ${{ secrets.OC_NAMESPACE }}
oc_token: ${{ secrets.OC_TOKEN }}
postgres_password: ${{ secrets.DB_PASSWORD }}
with:
db_user: app-${{ github.event.number }}
params: --set global.secrets.persist=false
triggers: ('backend/' 'frontend/' 'migrations/' 'charts/')

tests:
Expand Down
Loading
Loading