Skip to content

Commit 6326bf7

Browse files
committed
fix: refactored cleanup job
1 parent 2d9fad1 commit 6326bf7

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

.github/workflows/cleanup-namespaces.yml

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ jobs:
1212
outputs:
1313
namespaces: ${{ steps.discover_ns.outputs.namespaces }}
1414
steps:
15-
- name: Install jq
16-
run: sudo apt-get update && sudo apt-get install -y jq
17-
1815
- name: Cleanup old namespaces except keep_namespace=true
1916
id: discover_ns
2017
env:
@@ -24,24 +21,29 @@ jobs:
2421
set -e
2522
THRESHOLD=${AGE_THRESHOLD}
2623
NOW=$(date +%s)
27-
echo "Deleting namespaces older than $((THRESHOLD/3600)) hours unless keep_namespace=true"
24+
echo "⚠️ Deleting namespaces older than $((THRESHOLD/3600)) hours unless keep_namespace=true:"
2825
NAMESPACES=$(kubectl get ns -o json | jq -r '.items[] | select(.metadata.labels.keep_namespace != "true") | .metadata.name' | grep opencrvs | grep -v "opencrvs-deps-e2e")
29-
NAMESPACES_TO_CLEANUP=''
26+
KEEP_NAMESPACES=$(kubectl get ns -o json | jq -r '.items[] | select(.metadata.labels.keep_namespace == "true") | .metadata.name')
27+
28+
NAMESPACES_TO_CLEANUP=()
3029
for ns in $NAMESPACES; do
3130
UPDATED_AT=$(kubectl get ns "$ns" -o jsonpath='{.metadata.labels.updated_at}')
3231
AGE=$((NOW - UPDATED_AT))
3332
if [ -z "$UPDATED_AT" ]; then
34-
echo "Skipping namespace $ns, no update_at label"
33+
echo " - ℹ️ Skipping namespace $ns, no update_at label"
3534
elif [ "$AGE" -ge "$THRESHOLD" ]; then
36-
echo "Adding namespace $ns to cleanup list"
37-
NAMESPACES_TO_CLEANUP="${NAMESPACES_TO_CLEANUP}$ns\n"
35+
echo " - 🧹 Adding namespace $ns to cleanup list"
36+
NAMESPACES_TO_CLEANUP+=("$ns")
3837
else
39-
echo "Skipping namespace $ns (not old enough: $((AGE/3600))h $(( (AGE%3600)/60 ))m)"
38+
echo " - 🕒 Skipping namespace $ns (not old enough: $((AGE/3600))h $(( (AGE%3600)/60 ))m)"
4039
fi
4140
done
42-
namespaces=$(echo -e $NAMESPACES_TO_CLEANUP | jq -R -s -c 'split("\n")[:-1]')
43-
echo "namespaces=$namespaces" >> $GITHUB_OUTPUT
44-
echo "namespaces=$namespaces"
41+
namespaces_json=$(printf '%s\n' "${NAMESPACES_TO_CLEANUP[@]}" | jq -R -s -c 'split("\n")[:-1]')
42+
echo "namespaces=$namespaces_json" >> $GITHUB_OUTPUT
43+
echo "🔒 Following namespaces will be skipped, label keep_namespace=true:"
44+
printf '\t- %s\n' $KEEP_NAMESPACES
45+
echo "🗑️ Following namespaces will be removed:"
46+
printf '\t- %s\n' "${NAMESPACES_TO_CLEANUP[@]}"
4547
cleanup:
4648
needs: discover_cleanup
4749
runs-on: self-hosted
@@ -59,7 +61,7 @@ jobs:
5961
id: env_vars
6062
run: |
6163
echo "ENV=$(echo ${{ matrix.namespace }} | sed 's/opencrvs-//')" >> $GITHUB_OUTPUT
62-
echo "CORE_IMAGE_TAG=$(helm get values opencrvs -ojson | jq .image.tag)" >> $GITHUB_OUTPUT
64+
echo "CORE_IMAGE_TAG=$(helm get values opencrvs -n ${{ matrix.namespace }} -ojson | jq .image.tag)" >> $GITHUB_OUTPUT
6365
- name: Update k8s-env/opencrvs/values.yaml
6466
env:
6567
ENV: ${{ steps.env_vars.outputs.ENV }}
@@ -72,14 +74,13 @@ jobs:
7274
kubectl delete job -n ${{ matrix.namespace }} --ignore-not-found=true data-cleanup
7375
helm template -f k8s-env/opencrvs/values.yaml \
7476
--set data_cleanup.enabled=true \
75-
--set image.tag="$CORE_IMAGE_TAG" \
7677
--namespace opencrvs-${ENV} \
7778
-s templates/data-cleanup-job.yaml \
7879
oci://ghcr.io/opencrvs/opencrvs-services | kubectl apply -n opencrvs-${ENV} --wait=true -f -
7980
sleep 30;
8081
kubectl logs job/data-cleanup -f --all-containers=true -n opencrvs-${ENV} || true
8182
kubectl wait --for=condition=complete job/data-cleanup -n opencrvs-${ENV} --timeout=600s;
8283
- name: Uninstall helm release
83-
run: helm uninstall opencrvs || echo "Helm release is not installed"
84+
run: helm uninstall opencrvs -n ${{ matrix.namespace }} || echo "Helm release is not installed"
8485
- name: Delete namespace ${{ matrix.namespace }}
8586
run: kubectl delete ns ${{ matrix.namespace }}

0 commit comments

Comments
 (0)