Skip to content

Commit e207216

Browse files
committed
perf: use alembic rev for db migrations instead of num
1 parent 0da55c0 commit e207216

File tree

3 files changed

+14
-92
lines changed

3 files changed

+14
-92
lines changed

.github/workflows/k8s_db_rollback.yml

Lines changed: 8 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ name: 'K8: Database Rollback'
33
on:
44
workflow_call:
55
inputs:
6-
num_migrations:
7-
description: 'Number of migrations to rollback'
8-
required: true
9-
default: 0
10-
type: number
6+
alembic_downgrade_rev:
7+
description: 'Rev of migration to rollback to'
8+
required: false
9+
default: 'base'
10+
type: string
1111

1212
# Special permissions required for OIDC authentication
1313
permissions:
@@ -56,45 +56,14 @@ jobs:
5656
cluster-name: ${{ env.KUBERNETES_CLUSTER_NAME }}
5757
admin: 'false'
5858
use-kubelogin: 'true'
59-
60-
- name: Generate K8 Rollback Job
61-
shell: bash
62-
run: |
63-
cp \
64-
cicd-deployment-scripts/k8s/assets/db_rollback.tmpl \
65-
apps/${{ github.event.repository.name }}/${{ github.ref_name }}/db_rollback.yaml
66-
source cicd-deployment-scripts/k8s/db_rollback.sh \
67-
-e ${{ github.ref_name }} \
68-
-d ${{ github.event.repository.name }} \
69-
-n ${{ env.KUBERNETES_NAMESPACE }} \
70-
-r ${{ env.AZURE_CONTAINER_REGISTRY }} \
71-
-t latest \
72-
-m ${{ inputs.num_migrations }}
73-
74-
generate_db_rollback_job
75-
76-
- name: Apply K8 Rollback Job
77-
shell: bash
78-
run: |
79-
source cicd-deployment-scripts/k8s/db_rollback.sh \
80-
-e ${{ github.ref_name }} \
81-
-d ${{ github.event.repository.name }} \
82-
-n ${{ env.KUBERNETES_NAMESPACE }} \
83-
-r ${{ env.AZURE_CONTAINER_REGISTRY }} \
84-
-t latest \
85-
-m ${{ inputs.num_migrations }}
86-
87-
apply_db_rollback_job
8859

89-
- name: Delete K8 Rollback Job
60+
- name: Apply Alembic Rollback
9061
shell: bash
9162
run: |
92-
source cicd-deployment-scripts/k8s/db_rollback.sh \
63+
bash cicd-deployment-scripts/k8s/db_rollback.sh \
9364
-e ${{ github.ref_name }} \
9465
-d ${{ github.event.repository.name }} \
9566
-n ${{ env.KUBERNETES_NAMESPACE }} \
9667
-r ${{ env.AZURE_CONTAINER_REGISTRY }} \
9768
-t latest \
98-
-m ${{ inputs.num_migrations }}
99-
100-
delete_db_rollback_job
69+
-a ${{ inputs.alembic_downgrade_rev }}

k8s/assets/db_rollback.tmpl

Lines changed: 0 additions & 26 deletions
This file was deleted.

k8s/db_rollback.sh

Lines changed: 6 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,44 +6,23 @@ KUBERNETES_DEPLOYMENT_NAME=""
66
KUBERNETES_NAMESPACE=""
77
AZURE_CONTAINER_REGISTRY=""
88
IMAGE_TAG=""
9-
num_migrations=""
9+
alembic_downgrade_rev=""
1010

11-
while getopts e:d:r:t:n:m: flag
11+
while getopts e:d:r:t:n:a: flag
1212
do
1313
case "${flag}" in
1414
e) ENVIRONMENT_NAME=${OPTARG};;
1515
d) KUBERNETES_DEPLOYMENT_NAME=${OPTARG};;
1616
n) KUBERNETES_NAMESPACE=${OPTARG};;
1717
r) AZURE_CONTAINER_REGISTRY=${OPTARG};;
1818
t) IMAGE_TAG=${OPTARG};;
19-
m) num_migrations=${OPTARG};;
19+
a) alembic_downgrade_rev=${OPTARG};;
2020
esac
2121
done
2222

2323
kubectl config set-context --current --namespace=$KUBERNETES_NAMESPACE
2424
echo "Context set to namespace: \"$KUBERNETES_NAMESPACE\""
2525

26-
KUBERNETES_POD_IMAGE="${AZURE_CONTAINER_REGISTRY}/${KUBERNETES_DEPLOYMENT_NAME}:${IMAGE_TAG}"
27-
28-
function generate_db_rollback_job {
29-
echo "Generating DB Rollback job for ${KUBERNETES_DEPLOYMENT_NAME} in ${ENVIRONMENT_NAME}"
30-
sed -i.bak 's|${KUBERNETES_DEPLOYMENT_NAME}|'${KUBERNETES_DEPLOYMENT_NAME}'|g' apps/${KUBERNETES_DEPLOYMENT_NAME}/${ENVIRONMENT_NAME}/db_rollback.tmpl
31-
sed -i.bak 's|${KUBERNETES_POD_IMAGE}|'${KUBERNETES_POD_IMAGE}'|g' apps/${KUBERNETES_DEPLOYMENT_NAME}/${ENVIRONMENT_NAME}/db_rollback.tmpl
32-
sed -i.bak 's|${num_migrations}|'${num_migrations}'|g' apps/${KUBERNETES_DEPLOYMENT_NAME}/${ENVIRONMENT_NAME}/db_rollback.tmpl
33-
34-
mv apps/${KUBERNETES_DEPLOYMENT_NAME}/${ENVIRONMENT_NAME}/db_rollback.tmpl apps/${KUBERNETES_DEPLOYMENT_NAME}/${ENVIRONMENT_NAME}/db_rollback.yml
35-
echo "::notice::Generated DB Rollback job successfully"
36-
cat apps/${KUBERNETES_DEPLOYMENT_NAME}/${ENVIRONMENT_NAME}/db_rollback.yml
37-
}
38-
39-
function apply_db_rollback_job {
40-
echo "Applying DB Rollback job for ${KUBERNETES_DEPLOYMENT_NAME} in ${ENVIRONMENT_NAME}"
41-
kubectl apply --filename apps/${KUBERNETES_DEPLOYMENT_NAME}/${ENVIRONMENT_NAME}/db_rollback.yml
42-
echo "::notice::Applied DB Rollback job successfully"
43-
}
44-
45-
function delete_db_rollback_job {
46-
echo "Deleting DB Rollback job for ${KUBERNETES_DEPLOYMENT_NAME} in ${ENVIRONMENT_NAME}"
47-
kubectl delete --filename apps/${KUBERNETES_DEPLOYMENT_NAME}/${ENVIRONMENT_NAME}/db_rollback.yml
48-
echo "::notice::Deleted DB Rollback job successfully"
49-
}
26+
echo "Rolling back to migration revision: $rev_rollback_migrations"
27+
kubectl exec -i deployment/${KUBERNETES_DEPLOYMENT_NAME} -c $KUBERNETES_DEPLOYMENT_NAME -- alembic downgrade ${rev_rollback_migrations}
28+
kubectl rollout status deployment/${KUBERNETES_DEPLOYMENT_NAME}

0 commit comments

Comments
 (0)