22
33helm_update () {
44 LINE=" $( ${HELM} ls --all -f " ^${NAME} \$ " --namespace ${TARGET_NAMESPACE} --output json | jq -r " ${JQ_CMD} " | tr ' [:upper:]' ' [:lower:]' ) "
5- IFS=, read -r INSTALLED_VERSION STATUS _ <<< ${LINE}
5+ IFS=, read -r INSTALLED_VERSION STATUS REVISION _ <<< ${LINE}
66 VALUES=" "
77
88 for VALUES_FILE in /config/* .yaml; do
@@ -15,6 +15,9 @@ helm_update() {
1515 echo " No ${HELM} chart installed; nothing to delete" >> ${TERM_LOG}
1616 exit
1717 fi
18+
19+ check_revision ${REVISION}
20+
1821 echo " Uninstalling ${HELM} chart" >> ${TERM_LOG}
1922 ${HELM} uninstall ${NAME} --namespace ${TARGET_NAMESPACE} --wait || true
2023 exit
@@ -27,6 +30,8 @@ helm_update() {
2730 exit
2831 fi
2932
33+ check_revision ${REVISION}
34+
3035 # If a previous helm operation was interrupted unexpectedly or release state is corrupted, set it to failed.
3136 if [[ " ${STATUS} " =~ ^(pending-install| pending-upgrade| pending-rollback| superseded| uninstalling)$ ]]; then
3237 echo Previous helm job was interrupted, updating status from ${STATUS} to failed
@@ -124,6 +129,15 @@ helm_content_decode() {
124129 set +e
125130}
126131
132+ check_revision () {
133+ REVISION=" $1 "
134+ if [[ -n " ${EXPECTED_RELEASE_REVISION} " ]] && [[ " ${EXPECTED_RELEASE_REVISION} " != " ${REVISION} " ]]; then
135+ echo " Current release revision ${REVISION} does not match expected revision ${EXPECTED_RELEASE_REVISION} " >> ${TERM_LOG}
136+ echo " Current release revision ${REVISION} does not match expected revision ${EXPECTED_RELEASE_REVISION} "
137+ exit 64
138+ fi
139+ }
140+
127141export CA_FILE=/config/ca-file.pem
128142export CA_DIR=/ca-files
129143export AUTH_DIR=/auth
@@ -138,7 +152,7 @@ INSECURE_TLS_ARG=""
138152PLAIN_HTTP_ARG=" "
139153TIMEOUT_ARG=" "
140154PASS_CREDENTIALS_ARG=" "
141- JQ_CMD=' "\(.[0].chart),\(.[0].status)"'
155+ JQ_CMD=' "\(.[0].chart),\(.[0].status),\(.[0].revision) "'
142156
143157set -e -v
144158if [[ ${KUBERNETES_SERVICE_HOST} =~ .* :.* ]]; then
0 commit comments