Skip to content

Commit 76df7db

Browse files
authored
feat: check addon chart or image has been released (#625)
1 parent 8f2c361 commit 76df7db

File tree

6 files changed

+307
-1
lines changed

6 files changed

+307
-1
lines changed

.github/utils/helm_package.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,12 @@ filter_charts() {
5656
lookup_changed_charts() {
5757
local changed_files
5858
if [[ -n "$SPECIFY_CHART" ]]; then
59-
changed_files="$SPECIFY_CHART"
59+
if [[ "${SPECIFY_CHART}" == *"|"* ]]; then
60+
changed_files=$(echo "$SPECIFY_CHART" | sed 's/|/ /g')
61+
else
62+
changed_files="$SPECIFY_CHART"
63+
fi
64+
6065
else
6166
changed_files=$(ls -1 "$charts_dir")
6267
if [[ "$changed_files" == *"gemini-monitor"* ]]; then

.github/workflows/release-charts-enterprise.yml

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,65 @@ jobs:
180180
echo VERSION=$version >> $GITHUB_OUTPUT
181181
echo APP_VERSION=$app_version >> $GITHUB_OUTPUT
182182
183+
- name: Check Addons Version Released
184+
if: ${{ inputs.CHART_DIR == 'addons' || inputs.CHART_DIR == 'addons-cluster' }}
185+
id: check_addons_version
186+
run: |
187+
echo "check addons version released"
188+
RELEASE_VERSION="${{ steps.get_version.outputs.VERSION }}"
189+
RELEASE_VERSION_TMP="${RELEASE_VERSION}"
190+
CHART_DIR="${{ inputs.CHART_DIR }}"
191+
CHART_DIR="${CHART_DIR%/*}"
192+
SPECIFY_CHART="${{ inputs.SPECIFY_CHART }}"
193+
SPECIFY_ADDONS_CHARTS=""
194+
released_flag=0
195+
196+
for chart_dir in $(find ${CHART_DIR} -maxdepth 1 -type d); do
197+
check_flag=0
198+
if [[ -z "${RELEASE_VERSION}" ]]; then
199+
RELEASE_VERSION_TMP=""
200+
fi
201+
chart_name=$(basename ${chart_dir})
202+
if [[ -n "${SPECIFY_CHART}" && "${chart_name}" != "${SPECIFY_CHART}" ]]; then
203+
continue
204+
fi
205+
206+
releases_notes_file="${chart_dir}/releases_notes.yaml"
207+
if [[ -f "${releases_notes_file}" ]]; then
208+
if [[ -z "${RELEASE_VERSION_TMP}" ]]; then
209+
addon_chart_path="${chart_dir}/Chart.yaml"
210+
RELEASE_VERSION_TMP=$(yq e ".version" ${addon_chart_path})
211+
fi
212+
213+
RELEASE_VERSIONS=$(yq e ".releases[].version" ${releases_notes_file})
214+
for release_version in ${RELEASE_VERSIONS}; do
215+
if [[ "${release_version}" == "${RELEASE_VERSION_TMP}" ]]; then
216+
echo "$(tput -T xterm setaf 1)::error title=${CHART_DIR} ${chart_name} version ${RELEASE_VERSION_TMP} has been released and cannot be overwritten.$(tput -T xterm sgr0)"
217+
released_flag=1
218+
check_flag=1
219+
break
220+
fi
221+
done
222+
223+
if [[ -z "${SPECIFY_CHART}" && -n "${RELEASE_VERSION_TMP}" && $check_flag -eq 0 ]]; then
224+
if [[ -z "${SPECIFY_ADDONS_CHARTS} ]]; then
225+
SPECIFY_ADDONS_CHARTS="${chart_name}"
226+
else
227+
SPECIFY_ADDONS_CHARTS="${SPECIFY_ADDONS_CHARTS}|${chart_name}"
228+
fi
229+
fi
230+
fi
231+
done
232+
233+
if [[ ${released_flag} -eq 1 ]]; then
234+
if [[ -z "${SPECIFY_CHART}" ]]; then
235+
echo "SPECIFY_ADDONS_CHARTS:${SPECIFY_ADDONS_CHARTS}"
236+
echo specify-addons-charts="${SPECIFY_ADDONS_CHARTS}" >> $GITHUB_OUTPUT
237+
else
238+
exit 1
239+
fi
240+
fi
241+
183242
- name: Bump helm chart version
184243
if: inputs.MAKE_OPS
185244
run: |
@@ -235,6 +294,11 @@ jobs:
235294
236295
if [[ -n "${{ inputs.SPECIFY_CHART }}" ]]; then
237296
args+=(--specify-chart "${{ inputs.SPECIFY_CHART }}" )
297+
else
298+
SPECIFY_ADDONS_CHARTS="${{ steps.check_addons_version.outputs.specify-addons-charts }}"
299+
if [[ -n "${SPECIFY_ADDONS_CHARTS}" ]]; then
300+
args+=(--specify-chart "${SPECIFY_ADDONS_CHARTS}" )
301+
fi
238302
fi
239303
240304
"${{ github.workspace }}/apecloud-cd/.github/utils/helm_package.sh" "${args[@]}"
@@ -376,6 +440,11 @@ jobs:
376440
377441
if [[ -n "${{ inputs.SPECIFY_CHART }}" ]]; then
378442
args+=(--specify-chart "${{ inputs.SPECIFY_CHART }}" )
443+
else
444+
SPECIFY_ADDONS_CHARTS="${{ steps.check_addons_version.outputs.specify-addons-charts }}"
445+
if [[ -n "${SPECIFY_ADDONS_CHARTS}" ]]; then
446+
args+=(--specify-chart "${SPECIFY_ADDONS_CHARTS}" )
447+
fi
379448
fi
380449
381450
"${{ github.workspace }}/apecloud-cd/.github/utils/helm_package.sh" "${args[@]}"

.github/workflows/release-charts-jihu-enterprise.yml

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,65 @@ jobs:
146146
echo VERSION=$version >> $GITHUB_OUTPUT
147147
echo APP_VERSION=$app_version >> $GITHUB_OUTPUT
148148
149+
- name: Check Addons Version Released
150+
if: ${{ inputs.CHART_DIR == 'addons' || inputs.CHART_DIR == 'addons-cluster' }}
151+
id: check_addons_version
152+
run: |
153+
echo "check addons version released"
154+
RELEASE_VERSION="${{ steps.get_version.outputs.VERSION }}"
155+
RELEASE_VERSION_TMP="${RELEASE_VERSION}"
156+
CHART_DIR="${{ inputs.CHART_DIR }}"
157+
CHART_DIR="${CHART_DIR%/*}"
158+
SPECIFY_CHART="${{ inputs.SPECIFY_CHART }}"
159+
SPECIFY_ADDONS_CHARTS=""
160+
released_flag=0
161+
162+
for chart_dir in $(find ${CHART_DIR} -maxdepth 1 -type d); do
163+
check_flag=0
164+
if [[ -z "${RELEASE_VERSION}" ]]; then
165+
RELEASE_VERSION_TMP=""
166+
fi
167+
chart_name=$(basename ${chart_dir})
168+
if [[ -n "${SPECIFY_CHART}" && "${chart_name}" != "${SPECIFY_CHART}" ]]; then
169+
continue
170+
fi
171+
172+
releases_notes_file="${chart_dir}/releases_notes.yaml"
173+
if [[ -f "${releases_notes_file}" ]]; then
174+
if [[ -z "${RELEASE_VERSION_TMP}" ]]; then
175+
addon_chart_path="${chart_dir}/Chart.yaml"
176+
RELEASE_VERSION_TMP=$(yq e ".version" ${addon_chart_path})
177+
fi
178+
179+
RELEASE_VERSIONS=$(yq e ".releases[].version" ${releases_notes_file})
180+
for release_version in ${RELEASE_VERSIONS}; do
181+
if [[ "${release_version}" == "${RELEASE_VERSION_TMP}" ]]; then
182+
echo "$(tput -T xterm setaf 1)::error title=${CHART_DIR} ${chart_name} version ${RELEASE_VERSION_TMP} has been released and cannot be overwritten.$(tput -T xterm sgr0)"
183+
released_flag=1
184+
check_flag=1
185+
break
186+
fi
187+
done
188+
189+
if [[ -z "${SPECIFY_CHART}" && -n "${RELEASE_VERSION_TMP}" && $check_flag -eq 0 ]]; then
190+
if [[ -z "${SPECIFY_ADDONS_CHARTS} ]]; then
191+
SPECIFY_ADDONS_CHARTS="${chart_name}"
192+
else
193+
SPECIFY_ADDONS_CHARTS="${SPECIFY_ADDONS_CHARTS}|${chart_name}"
194+
fi
195+
fi
196+
fi
197+
done
198+
199+
if [[ ${released_flag} -eq 1 ]]; then
200+
if [[ -z "${SPECIFY_CHART}" ]]; then
201+
echo "SPECIFY_ADDONS_CHARTS:${SPECIFY_ADDONS_CHARTS}"
202+
echo specify-addons-charts="${SPECIFY_ADDONS_CHARTS}" >> $GITHUB_OUTPUT
203+
else
204+
exit 1
205+
fi
206+
fi
207+
149208
- name: Bump helm chart version
150209
if: inputs.MAKE_OPS
151210
run: |
@@ -201,6 +260,11 @@ jobs:
201260
202261
if [[ -n "${{ inputs.SPECIFY_CHART }}" ]]; then
203262
args+=(--specify-chart "${{ inputs.SPECIFY_CHART }}" )
263+
else
264+
SPECIFY_ADDONS_CHARTS="${{ steps.check_addons_version.outputs.specify-addons-charts }}"
265+
if [[ -n "${SPECIFY_ADDONS_CHARTS}" ]]; then
266+
args+=(--specify-chart "${SPECIFY_ADDONS_CHARTS}" )
267+
fi
204268
fi
205269
206270
"${{ github.workspace }}/apecloud-cd/.github/utils/helm_package.sh" "${args[@]}"

.github/workflows/release-charts-jihu.yml

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,65 @@ jobs:
150150
echo VERSION=$version >> $GITHUB_OUTPUT
151151
echo APP_VERSION=$app_version >> $GITHUB_OUTPUT
152152
153+
- name: Check Addons Version Released
154+
if: ${{ inputs.CHART_DIR == 'addons' || inputs.CHART_DIR == 'addons-cluster' }}
155+
id: check_addons_version
156+
run: |
157+
echo "check addons version released"
158+
RELEASE_VERSION="${{ steps.get_version.outputs.VERSION }}"
159+
RELEASE_VERSION_TMP="${RELEASE_VERSION}"
160+
CHART_DIR="${{ inputs.CHART_DIR }}"
161+
CHART_DIR="${CHART_DIR%/*}"
162+
SPECIFY_CHART="${{ inputs.SPECIFY_CHART }}"
163+
SPECIFY_ADDONS_CHARTS=""
164+
released_flag=0
165+
166+
for chart_dir in $(find ${CHART_DIR} -maxdepth 1 -type d); do
167+
check_flag=0
168+
if [[ -z "${RELEASE_VERSION}" ]]; then
169+
RELEASE_VERSION_TMP=""
170+
fi
171+
chart_name=$(basename ${chart_dir})
172+
if [[ -n "${SPECIFY_CHART}" && "${chart_name}" != "${SPECIFY_CHART}" ]]; then
173+
continue
174+
fi
175+
176+
releases_notes_file="${chart_dir}/releases_notes.yaml"
177+
if [[ -f "${releases_notes_file}" ]]; then
178+
if [[ -z "${RELEASE_VERSION_TMP}" ]]; then
179+
addon_chart_path="${chart_dir}/Chart.yaml"
180+
RELEASE_VERSION_TMP=$(yq e ".version" ${addon_chart_path})
181+
fi
182+
183+
RELEASE_VERSIONS=$(yq e ".releases[].version" ${releases_notes_file})
184+
for release_version in ${RELEASE_VERSIONS}; do
185+
if [[ "${release_version}" == "${RELEASE_VERSION_TMP}" ]]; then
186+
echo "$(tput -T xterm setaf 1)::error title=${CHART_DIR} ${chart_name} version ${RELEASE_VERSION_TMP} has been released and cannot be overwritten.$(tput -T xterm sgr0)"
187+
released_flag=1
188+
check_flag=1
189+
break
190+
fi
191+
done
192+
193+
if [[ -z "${SPECIFY_CHART}" && -n "${RELEASE_VERSION_TMP}" && $check_flag -eq 0 ]]; then
194+
if [[ -z "${SPECIFY_ADDONS_CHARTS} ]]; then
195+
SPECIFY_ADDONS_CHARTS="${chart_name}"
196+
else
197+
SPECIFY_ADDONS_CHARTS="${SPECIFY_ADDONS_CHARTS}|${chart_name}"
198+
fi
199+
fi
200+
fi
201+
done
202+
203+
if [[ ${released_flag} -eq 1 ]]; then
204+
if [[ -z "${SPECIFY_CHART}" ]]; then
205+
echo "SPECIFY_ADDONS_CHARTS:${SPECIFY_ADDONS_CHARTS}"
206+
echo specify-addons-charts="${SPECIFY_ADDONS_CHARTS}" >> $GITHUB_OUTPUT
207+
else
208+
exit 1
209+
fi
210+
fi
211+
153212
- name: Bump helm chart version
154213
if: inputs.MAKE_OPS
155214
run: |
@@ -206,6 +265,11 @@ jobs:
206265
207266
if [[ -n "${{ inputs.SPECIFY_CHART }}" ]]; then
208267
args+=(--specify-chart "${{ inputs.SPECIFY_CHART }}" )
268+
else
269+
SPECIFY_ADDONS_CHARTS="${{ steps.check_addons_version.outputs.specify-addons-charts }}"
270+
if [[ -n "${SPECIFY_ADDONS_CHARTS}" ]]; then
271+
args+=(--specify-chart "${SPECIFY_ADDONS_CHARTS}" )
272+
fi
209273
fi
210274
211275
"${{ github.workspace }}/apecloud-cd/.github/utils/helm_package.sh" "${args[@]}"

.github/workflows/release-charts.yml

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,65 @@ jobs:
192192
echo VERSION=$version >> $GITHUB_OUTPUT
193193
echo APP_VERSION=$app_version >> $GITHUB_OUTPUT
194194
195+
- name: Check Addons Version Released
196+
if: ${{ inputs.CHART_DIR == 'addons' || inputs.CHART_DIR == 'addons-cluster' }}
197+
id: check_addons_version
198+
run: |
199+
echo "check addons version released"
200+
RELEASE_VERSION="${{ steps.get_version.outputs.VERSION }}"
201+
RELEASE_VERSION_TMP="${RELEASE_VERSION}"
202+
CHART_DIR="${{ inputs.CHART_DIR }}"
203+
CHART_DIR="${CHART_DIR%/*}"
204+
SPECIFY_CHART="${{ inputs.SPECIFY_CHART }}"
205+
SPECIFY_ADDONS_CHARTS=""
206+
released_flag=0
207+
208+
for chart_dir in $(find ${CHART_DIR} -maxdepth 1 -type d); do
209+
check_flag=0
210+
if [[ -z "${RELEASE_VERSION}" ]]; then
211+
RELEASE_VERSION_TMP=""
212+
fi
213+
chart_name=$(basename ${chart_dir})
214+
if [[ -n "${SPECIFY_CHART}" && "${chart_name}" != "${SPECIFY_CHART}" ]]; then
215+
continue
216+
fi
217+
218+
releases_notes_file="${chart_dir}/releases_notes.yaml"
219+
if [[ -f "${releases_notes_file}" ]]; then
220+
if [[ -z "${RELEASE_VERSION_TMP}" ]]; then
221+
addon_chart_path="${chart_dir}/Chart.yaml"
222+
RELEASE_VERSION_TMP=$(yq e ".version" ${addon_chart_path})
223+
fi
224+
225+
RELEASE_VERSIONS=$(yq e ".releases[].version" ${releases_notes_file})
226+
for release_version in ${RELEASE_VERSIONS}; do
227+
if [[ "${release_version}" == "${RELEASE_VERSION_TMP}" ]]; then
228+
echo "$(tput -T xterm setaf 1)::error title=${CHART_DIR} ${chart_name} version ${RELEASE_VERSION_TMP} has been released and cannot be overwritten.$(tput -T xterm sgr0)"
229+
released_flag=1
230+
check_flag=1
231+
break
232+
fi
233+
done
234+
235+
if [[ -z "${SPECIFY_CHART}" && -n "${RELEASE_VERSION_TMP}" && $check_flag -eq 0 ]]; then
236+
if [[ -z "${SPECIFY_ADDONS_CHARTS} ]]; then
237+
SPECIFY_ADDONS_CHARTS="${chart_name}"
238+
else
239+
SPECIFY_ADDONS_CHARTS="${SPECIFY_ADDONS_CHARTS}|${chart_name}"
240+
fi
241+
fi
242+
fi
243+
done
244+
245+
if [[ ${released_flag} -eq 1 ]]; then
246+
if [[ -z "${SPECIFY_CHART}" ]]; then
247+
echo "SPECIFY_ADDONS_CHARTS:${SPECIFY_ADDONS_CHARTS}"
248+
echo specify-addons-charts="${SPECIFY_ADDONS_CHARTS}" >> $GITHUB_OUTPUT
249+
else
250+
exit 1
251+
fi
252+
fi
253+
195254
- name: Bump helm chart version
196255
if: inputs.MAKE_OPS
197256
run: |
@@ -247,6 +306,11 @@ jobs:
247306
248307
if [[ -n "${{ inputs.SPECIFY_CHART }}" ]]; then
249308
args+=(--specify-chart "${{ inputs.SPECIFY_CHART }}" )
309+
else
310+
SPECIFY_ADDONS_CHARTS="${{ steps.check_addons_version.outputs.specify-addons-charts }}"
311+
if [[ -n "${SPECIFY_ADDONS_CHARTS}" ]]; then
312+
args+=(--specify-chart "${SPECIFY_ADDONS_CHARTS}" )
313+
fi
250314
fi
251315
252316
"${{ github.workspace }}/apecloud-cd/.github/utils/helm_package.sh" "${args[@]}"
@@ -399,6 +463,11 @@ jobs:
399463
400464
if [[ -n "${{ inputs.SPECIFY_CHART }}" ]]; then
401465
args+=(--specify-chart "${{ inputs.SPECIFY_CHART }}" )
466+
else
467+
SPECIFY_ADDONS_CHARTS="${{ steps.check_addons_version.outputs.specify-addons-charts }}"
468+
if [[ -n "${SPECIFY_ADDONS_CHARTS}" ]]; then
469+
args+=(--specify-chart "${SPECIFY_ADDONS_CHARTS}" )
470+
fi
402471
fi
403472
404473
"${{ github.workspace }}/apecloud-cd/.github/utils/helm_package.sh" "${args[@]}"

.github/workflows/release-image-cache2.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,12 +261,47 @@ jobs:
261261
addon_chart_version="${addon_chart_version/v/}"
262262
fi
263263
IMAGE_PUSH_TAG="${IMAGE_NAME}:${addon_chart_name}-${addon_chart_version}"
264+
265+
releases_notes_file="addons/${addon_dir}/releases_notes.yaml"
266+
if [[ -f "${releases_notes_file}" ]]; then
267+
released_flag=0
268+
RELEASE_VERSIONS=$(yq e ".releases[].version" ${releases_notes_file})
269+
for release_version in ${RELEASE_VERSIONS}; do
270+
if [[ "${release_version}" == "${addon_chart_version}" ]]; then
271+
echo "$(tput -T xterm setaf 1)::error title=Image ${IMAGE_PUSH_TAG} has been released and cannot be overwritten.$(tput -T xterm sgr0)"
272+
released_flag=1
273+
fi
274+
done
275+
if [[ $released_flag -eq 1 ]]; then
276+
continue
277+
fi
278+
fi
279+
264280
DOCKERHUB_PUSH_TAGS="${DOCKERHUB_PUSH_TAGS},${DOCKER_REGISTRY_URL}/${IMAGE_PUSH_TAG}"
265281
ALIYUN_PUSH_TAGS="${ALIYUN_PUSH_TAGS},${ALIYUN_REGISTRY_URL}/${IMAGE_PUSH_TAG}"
266282
ALIYUN_NEW_PUSH_TAGS="${ALIYUN_NEW_PUSH_TAGS},${ALIYUN_REGISTRY_URL_NEW}/${IMAGE_PUSH_TAG}"
267283
GOOGLE_PUSH_TAGS="${GOOGLE_PUSH_TAGS},${GOOGLE_REGISTRY_URL}/${IMAGE_PUSH_TAG}"
268284
fi
269285
done
286+
elif [[ "${IMAGE_NAME}" == "apecloud/apecloud-addon-charts" && -d "addons" ]]; then
287+
addon_chart_name="${IMAGE_TAG_NAME%-[0-9]*}"
288+
addon_chart_file="addons/${addon_chart_name}/Chart.yaml"
289+
if [[ -f "${addon_chart_file}" ]]; then
290+
addon_chart_version=$(yq eval '.version' "${addon_chart_file}")
291+
if [[ "${addon_chart_version}" == "v"* ]]; then
292+
addon_chart_version="${addon_chart_version/v/}"
293+
fi
294+
releases_notes_file="addons/${addon_chart_name}/releases_notes.yaml"
295+
if [[ -f "${releases_notes_file}" ]]; then
296+
RELEASE_VERSIONS=$(yq e ".releases[].version" ${releases_notes_file})
297+
for release_version in ${RELEASE_VERSIONS}; do
298+
if [[ "${release_version}" == "${addon_chart_version}" ]]; then
299+
echo "$(tput -T xterm setaf 1)::error title=${IMAGE_NAME} tag ${IMAGE_TAG_NAME} has been released and cannot be overwritten.$(tput -T xterm sgr0)"
300+
exit 1
301+
fi
302+
done
303+
fi
304+
fi
270305
fi
271306
272307
echo dockerhub-push-tags="${DOCKERHUB_PUSH_TAGS}" >> $GITHUB_OUTPUT

0 commit comments

Comments
 (0)