ci: harden production tag selection

This commit is contained in:
湛兮
2026-06-05 14:45:45 +08:00
parent cf7b3ea6ac
commit 280cdba6b0
+9 -1
View File
@@ -10,7 +10,7 @@ pipeline {
sortMode: 'DESCENDING_SMART', sortMode: 'DESCENDING_SMART',
selectedValue: 'TOP', selectedValue: 'TOP',
useRepository: 'http://127.0.0.1:3001/my-project/my-resume.git', useRepository: 'http://127.0.0.1:3001/my-project/my-resume.git',
quickFilterEnabled: true, quickFilterEnabled: false,
listSize: '10', listSize: '10',
requiredParameter: true, requiredParameter: true,
description: '请选择要部署到生产环境的 Git Tag。列表自动来自当前项目仓库,生产只能从 Tag 发布。' description: '请选择要部署到生产环境的 Git Tag。列表自动来自当前项目仓库,生产只能从 Tag 发布。'
@@ -41,6 +41,14 @@ pipeline {
set -eu set -eu
test -n "$RELEASE_TAG" test -n "$RELEASE_TAG"
NORMALIZED_RELEASE_TAG="$(printf '%s' "$RELEASE_TAG" | sed 's/\\^{}$//')" NORMALIZED_RELEASE_TAG="$(printf '%s' "$RELEASE_TAG" | sed 's/\\^{}$//')"
case "$NORMALIZED_RELEASE_TAG" in
v[0-9A-Za-z._-]*) ;;
*) echo "Invalid release tag: $NORMALIZED_RELEASE_TAG"; exit 2 ;;
esac
if ! git ls-remote --exit-code --tags origin "refs/tags/$NORMALIZED_RELEASE_TAG" >/dev/null; then
echo "Release tag does not exist in repository: $NORMALIZED_RELEASE_TAG"
exit 3
fi
echo "Deploying production tag: $NORMALIZED_RELEASE_TAG" echo "Deploying production tag: $NORMALIZED_RELEASE_TAG"
git fetch --tags --force git fetch --tags --force
git checkout -f "refs/tags/$NORMALIZED_RELEASE_TAG" git checkout -f "refs/tags/$NORMALIZED_RELEASE_TAG"