Skip to content

Commit ba6795b

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

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

.github/workflows/cleanup-namespaces.yml

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,24 +24,27 @@ jobs:
2424
set -e
2525
THRESHOLD=${AGE_THRESHOLD}
2626
NOW=$(date +%s)
27-
echo "Deleting namespaces older than $((THRESHOLD/3600)) hours unless keep_namespace=true"
27+
echo "⚠️ Deleting namespaces older than $((THRESHOLD/3600)) hours unless keep_namespace=true"
2828
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=''
29+
KEEP_NAMESPACES=$(kubectl get ns -o json | jq -r '.items[] | select(.metadata.labels.keep_namespace == "true") | .metadata.name')
30+
echo "🔒 Following namespaces will be skipped, label keep_namespace=true:"
31+
printf '\t- %s\n' $KEEP_NAMESPACES
32+
NAMESPACES_TO_CLEANUP=()
3033
for ns in $NAMESPACES; do
3134
UPDATED_AT=$(kubectl get ns "$ns" -o jsonpath='{.metadata.labels.updated_at}')
3235
AGE=$((NOW - UPDATED_AT))
3336
if [ -z "$UPDATED_AT" ]; then
34-
echo "Skipping namespace $ns, no update_at label"
37+
echo "ℹ️ Skipping namespace $ns, no update_at label"
3538
elif [ "$AGE" -ge "$THRESHOLD" ]; then
36-
echo "Adding namespace $ns to cleanup list"
37-
NAMESPACES_TO_CLEANUP="${NAMESPACES_TO_CLEANUP}$ns\n"
39+
echo "🧹 Adding namespace $ns to cleanup list"
40+
NAMESPACES_TO_CLEANUP+=("$ns")
3841
else
39-
echo "Skipping namespace $ns (not old enough: $((AGE/3600))h $(( (AGE%3600)/60 ))m)"
42+
echo "🕒 Skipping namespace $ns (not old enough: $((AGE/3600))h $(( (AGE%3600)/60 ))m)"
4043
fi
4144
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"
45+
namespaces_json=$(printf '%s\n' "${NAMESPACES_TO_CLEANUP[@]}" | jq -R -s -c 'split("\n")[:-1]')
46+
echo "namespaces=$namespaces_json" >> $GITHUB_OUTPUT
47+
echo "namespaces=$namespaces_json"
4548
cleanup:
4649
needs: discover_cleanup
4750
runs-on: self-hosted
@@ -59,7 +62,7 @@ jobs:
5962
id: env_vars
6063
run: |
6164
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
65+
echo "CORE_IMAGE_TAG=$(helm get values opencrvs -n ${{ matrix.namespace }} -ojson | jq .image.tag)" >> $GITHUB_OUTPUT
6366
- name: Update k8s-env/opencrvs/values.yaml
6467
env:
6568
ENV: ${{ steps.env_vars.outputs.ENV }}
@@ -72,14 +75,13 @@ jobs:
7275
kubectl delete job -n ${{ matrix.namespace }} --ignore-not-found=true data-cleanup
7376
helm template -f k8s-env/opencrvs/values.yaml \
7477
--set data_cleanup.enabled=true \
75-
--set image.tag="$CORE_IMAGE_TAG" \
7678
--namespace opencrvs-${ENV} \
7779
-s templates/data-cleanup-job.yaml \
7880
oci://ghcr.io/opencrvs/opencrvs-services | kubectl apply -n opencrvs-${ENV} --wait=true -f -
7981
sleep 30;
8082
kubectl logs job/data-cleanup -f --all-containers=true -n opencrvs-${ENV} || true
8183
kubectl wait --for=condition=complete job/data-cleanup -n opencrvs-${ENV} --timeout=600s;
8284
- name: Uninstall helm release
83-
run: helm uninstall opencrvs || echo "Helm release is not installed"
85+
run: helm uninstall opencrvs -n ${{ matrix.namespace }} || echo "Helm release is not installed"
8486
- name: Delete namespace ${{ matrix.namespace }}
8587
run: kubectl delete ns ${{ matrix.namespace }}

0 commit comments

Comments
 (0)