Skip to content

Commit c9441b2

Browse files
authored
chore: support check engine images (#670)
1 parent e9f5dd2 commit c9441b2

File tree

2 files changed

+117
-40
lines changed

2 files changed

+117
-40
lines changed

.github/utils/manifests_charts_image_check.sh

Lines changed: 101 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#!/bin/bash
22
MANIFESTS_FILE=${1:-""}
33
ADD_CHART=${2:-"true"}
4+
CHECK_ENGINE_FILE=${3:-"./fountain/hack/check-engine-images.py"}
45

56

67
add_chart_repo() {
@@ -13,6 +14,58 @@ add_chart_repo() {
1314
helm repo update ${KB_ENT_REPO_NAME}
1415
}
1516

17+
check_service_version_images() {
18+
service_versions_tmp=${1:-""}
19+
chart_version_tmp=${2:-""}
20+
chart_name_tmp=${3:-""}
21+
chart_images_tmp=${4:-""}
22+
23+
if [[ ! -f "${CHECK_ENGINE_FILE}" ]]; then
24+
return
25+
fi
26+
27+
for j in {1..10}; do
28+
python3 ${CHECK_ENGINE_FILE} -m ${MANIFESTS_FILE} -e ${chart_name_tmp} --addonVersion ${chart_version_tmp} --serviceVersion "${service_versions_tmp}" 2>/dev/null
29+
ret_tmp=$?
30+
check_engine_result_file="images-${chart_name_tmp}-${chart_version_tmp}.yaml"
31+
images=""
32+
if [[ -f "${check_engine_result_file}" ]]; then
33+
images=$(yq e '.'${chart_name_tmp}'[0].images[]' ${check_engine_result_file})
34+
rm -rf ${check_engine_result_file}
35+
fi
36+
repository=""
37+
for repository in $( echo "$images" ); do
38+
if [[ "${repository}" == "null" ]]; then
39+
continue
40+
fi
41+
echo "check engine image: $repository"
42+
check_flag=0
43+
for chart_image in $( echo "$chart_images_tmp" ); do
44+
if [[ "$chart_image" == "$repository" ]]; then
45+
check_flag=1
46+
break
47+
fi
48+
done
49+
50+
if [[ $check_flag -eq 0 ]]; then
51+
check_result_tmp="$(tput -T xterm setaf 1)Not found ${chart_name_tmp} ${chart_version_tmp} image:${repository} in manifests file:${MANIFESTS_FILE}$(tput -T xterm sgr0)"
52+
echo "${check_result_tmp}"
53+
CHECK_RESULTS="$(cat check_manifest_result)"
54+
if [[ "${CHECK_RESULTS}" != *"${check_result_tmp}"* ]]; then
55+
echo "${check_result_tmp}" >> check_manifest_result
56+
fi
57+
echo 1 > exit_result
58+
fi
59+
repository=""
60+
done
61+
if [[ $ret_tmp -eq 0 && -n "$images" ]]; then
62+
echo "$(tput -T xterm setaf 2)Check chart ${chart_name_tmp} ${chart_version_tmp} success$(tput -T xterm sgr0)"
63+
break
64+
fi
65+
sleep 1
66+
done
67+
}
68+
1669
check_images() {
1770
is_enterprise_tmp=${1:-""}
1871
chart_version_tmp=${2:-""}
@@ -185,46 +238,55 @@ check_charts_images() {
185238
for chart_version in $(echo "$chart_versions" | sed 's/|/ /g'); do
186239
is_enterprise=$(yq e "."${chart_name}"[${chart_index}].isEnterprise" ${MANIFESTS_FILE})
187240
chart_images=$(yq e "."${chart_name}"[${chart_index}].images[]" ${MANIFESTS_FILE})
188-
case $chart_name in
189-
kubeblocks-cloud)
190-
set_values="${set_values} --set images.apiserver.tag=${chart_version} "
191-
set_values="${set_values} --set images.sentry.tag=${chart_version} "
192-
set_values="${set_values} --set images.sentryInit.tag=${chart_version} "
193-
set_values="${set_values} --set images.relay.tag=${chart_version} "
194-
set_values="${set_values} --set images.cr4w.tag=${chart_version} "
195-
set_values="${set_values} --set images.openconsole.tag=${chart_version} "
196-
set_values="${set_values} --set images.openconsoleAdmin.tag=${chart_version} "
197-
set_values="${set_values} --set images.taskManager.tag=${chart_version} "
198-
;;
199-
kb-cloud-installer)
200-
set_values="${set_values} --set version=${chart_version} "
201-
;;
202-
ingress-nginx)
203-
set_values="${set_values} --set controller.image.image=apecloud/controller "
204-
set_values="${set_values} --set controller.image.digest= "
205-
set_values="${set_values} --set controller.admissionWebhooks.patch.image.image=apecloud/kube-webhook-certgen "
206-
set_values="${set_values} --set controller.admissionWebhooks.patch.image.digest= "
207-
;;
208-
gemini)
209-
set_values="${set_values} --set victoria-metrics-cluster.enabled=false "
210-
set_values="${set_values} --set loki.enabled=false "
211-
set_values="${set_values} --set kubeviewer.enabled=false "
212-
set_values="${set_values} --set cr-exporter.enabled=false "
213-
;;
214-
kubebench)
215-
set_values="${set_values} --set image.tag=0.0.12 "
216-
set_values="${set_values} --set kubebenchImages.exporter=apecloud/kubebench:0.0.12"
217-
set_values="${set_values} --set kubebenchImages.tools=apecloud/kubebench:0.0.12"
218-
set_values="${set_values} --set kubebenchImages.tpcc=apecloud/benchmarksql:1.0"
219-
;;
220-
dbdrag)
221-
continue
222-
;;
223-
esac
224-
if [[ "$chart_name" == "kubeblocks-cloud" ]]; then
225-
check_addon_charts_images "$chart_version" "$chart_name" "$chart_images" &
241+
service_versions=""
242+
if yq e '.'${chart_name}'['${chart_index}'] | has("serviceVersions")' "${MANIFESTS_FILE}" >/dev/null 2>&1; then
243+
service_versions=$(yq e '[.'${chart_name}'['${chart_index}'].serviceVersions[]] | join(",")' ${MANIFESTS_FILE})
244+
fi
245+
246+
if [[ -n "${service_versions}" ]]; then
247+
check_service_version_images "${service_versions}" "$chart_version" "$chart_name" "$chart_images" &
248+
else
249+
case $chart_name in
250+
kubeblocks-cloud)
251+
set_values="${set_values} --set images.apiserver.tag=${chart_version} "
252+
set_values="${set_values} --set images.sentry.tag=${chart_version} "
253+
set_values="${set_values} --set images.sentryInit.tag=${chart_version} "
254+
set_values="${set_values} --set images.relay.tag=${chart_version} "
255+
set_values="${set_values} --set images.cr4w.tag=${chart_version} "
256+
set_values="${set_values} --set images.openconsole.tag=${chart_version} "
257+
set_values="${set_values} --set images.openconsoleAdmin.tag=${chart_version} "
258+
set_values="${set_values} --set images.taskManager.tag=${chart_version} "
259+
;;
260+
kb-cloud-installer)
261+
set_values="${set_values} --set version=${chart_version} "
262+
;;
263+
ingress-nginx)
264+
set_values="${set_values} --set controller.image.image=apecloud/controller "
265+
set_values="${set_values} --set controller.image.digest= "
266+
set_values="${set_values} --set controller.admissionWebhooks.patch.image.image=apecloud/kube-webhook-certgen "
267+
set_values="${set_values} --set controller.admissionWebhooks.patch.image.digest= "
268+
;;
269+
gemini)
270+
set_values="${set_values} --set victoria-metrics-cluster.enabled=false "
271+
set_values="${set_values} --set loki.enabled=false "
272+
set_values="${set_values} --set kubeviewer.enabled=false "
273+
set_values="${set_values} --set cr-exporter.enabled=false "
274+
;;
275+
kubebench)
276+
set_values="${set_values} --set image.tag=0.0.12 "
277+
set_values="${set_values} --set kubebenchImages.exporter=apecloud/kubebench:0.0.12"
278+
set_values="${set_values} --set kubebenchImages.tools=apecloud/kubebench:0.0.12"
279+
set_values="${set_values} --set kubebenchImages.tpcc=apecloud/benchmarksql:1.0"
280+
;;
281+
dbdrag)
282+
continue
283+
;;
284+
esac
285+
if [[ "$chart_name" == "kubeblocks-cloud" ]]; then
286+
check_addon_charts_images "$chart_version" "$chart_name" "$chart_images" &
287+
fi
288+
check_images "$is_enterprise" "$chart_version" "$chart_name" "$chart_images" "$set_values" &
226289
fi
227-
check_images "$is_enterprise" "$chart_version" "$chart_name" "$chart_images" "$set_values" &
228290
chart_index=$(( $chart_index + 1 ))
229291
done
230292
done

.github/workflows/manifests-charts-image-check.yml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ on:
2323
type: string
2424
required: false
2525
default: 'main'
26+
CHECK_ENGINE_FILE:
27+
description: "The file path of check engine image script"
28+
type: string
29+
required: false
30+
default: ''
2631
workflow_call:
2732
inputs:
2833
MANIFESTS_FILE:
@@ -45,6 +50,11 @@ on:
4550
type: string
4651
required: false
4752
default: 'main'
53+
CHECK_ENGINE_FILE:
54+
description: "The file path of check engine image script"
55+
type: string
56+
required: false
57+
default: ''
4858

4959

5060
run-name: check charts images
@@ -89,4 +99,9 @@ jobs:
8999
- name: manifests images check
90100
run: |
91101
MANIFESTS_FILE="${{ inputs.MANIFESTS_FILE }}"
92-
bash ${{ github.workspace }}/apecloud-cd/.github/utils/manifests_charts_image_check.sh "${MANIFESTS_FILE}"
102+
CHECK_ENGINE_FILE="${{ inputs.CHECK_ENGINE_FILE }}"
103+
if [[ -n "${CHECK_ENGINE_FILE}" && -f "${CHECK_ENGINE_FILE}" ]]; then
104+
bash ${{ github.workspace }}/apecloud-cd/.github/utils/manifests_charts_image_check.sh "${MANIFESTS_FILE}" "true" "${CHECK_ENGINE_FILE}"
105+
else
106+
bash ${{ github.workspace }}/apecloud-cd/.github/utils/manifests_charts_image_check.sh "${MANIFESTS_FILE}"
107+
fi

0 commit comments

Comments
 (0)