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
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