Skip to content

Commit 6365da2

Browse files
authored
chore: fix addon upgrade (#779)
1 parent 1a0c6e9 commit 6365da2

1 file changed

Lines changed: 36 additions & 1 deletion

File tree

.github/utils/manifests_charts_addon_upgrade.sh

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,44 @@ add_chart_repo() {
1313
helm repo update ${KB_ENT_REPO_NAME}
1414
}
1515

16+
get_helm_release_status() {
17+
local release_name=$1
18+
helm list -n kb-system --all --filter "^${release_name}$" --output json 2>/dev/null | yq e '.[0].status // "unknown"' -
19+
}
20+
21+
rollback_abnormal_release() {
22+
local release_name=$1
23+
local release_status
24+
release_status=$(get_helm_release_status "${release_name}")
25+
if [[ -z "${release_status}" || "${release_status}" == "deployed" ]]; then
26+
return 0
27+
fi
28+
29+
echo "release ${release_name} status is ${release_status}, rollback to previous revision before upgrade"
30+
helm rollback -n kb-system "${release_name}"
31+
local retry=0
32+
local max_retry=60
33+
while [[ $retry -lt $max_retry ]]; do
34+
sleep 2
35+
release_status=$(get_helm_release_status "${release_name}")
36+
if [[ "${release_status}" == "deployed" ]]; then
37+
echo "release ${release_name} rollback success, status: deployed"
38+
return 0
39+
fi
40+
retry=$((retry + 1))
41+
done
42+
echo "$(tput -T xterm setaf 1)::error title=release ${release_name} rollback timeout, current status: ${release_status} $(tput -T xterm sgr0)"
43+
return 1
44+
}
45+
1646
upgrade_charts_addon() {
1747
if [[ ! -f "${MANIFESTS_FILE}" ]]; then
1848
echo "$(tput -T xterm setaf 1)::error title=Not found manifests file:${MANIFESTS_FILE} $(tput -T xterm sgr0)"
1949
return
2050
fi
2151

2252
upgrade_flag=0
23-
deploy_addons=$(helm list -n kb-system | (grep "kb-addon-" || true) | awk '{print $1}')
53+
deploy_addons=$(helm list -n kb-system --all | (grep "kb-addon-" || true) | awk '$8 != "uninstalled" && $8 != "superseded" {print $1}')
2454
charts_name=$(yq e "to_entries|map(.key)|.[]" ${MANIFESTS_FILE})
2555
kubeblocks_version="$(helm get metadata -n kb-system kubeblocks | (grep "VERSION:" | grep -v "APP_VERSION:" || true ) | awk '{print $2}')"
2656
for chart_name in $(echo "$charts_name"); do
@@ -44,6 +74,11 @@ upgrade_charts_addon() {
4474
if [[ $deploy_flag -eq 0 || -z "${deploy_addon_tmp}" ]]; then
4575
continue
4676
fi
77+
# rollback abnormal release before upgrade
78+
if ! rollback_abnormal_release "${deploy_addon_tmp}"; then
79+
echo "$(tput -T xterm setaf 1)::error title=skip upgrade addon ${chart_name} due to abnormal release:${deploy_addon_tmp} $(tput -T xterm sgr0)"
80+
continue
81+
fi
4782

4883
# check deploy addon commit id
4984
deploy_addon_commit_id=""

0 commit comments

Comments
 (0)