fix jenkins commit hash env fallback
Some checks failed
CI / verify (push) Has been cancelled

This commit is contained in:
2026-05-01 01:24:55 +08:00
parent da6fa21d5d
commit 06b748e1af

View File

@@ -42,7 +42,7 @@ pipeline {
if (commitHash && !(commitHash ==~ /^[0-9a-fA-F]{7,40}$/)) { if (commitHash && !(commitHash ==~ /^[0-9a-fA-F]{7,40}$/)) {
error('COMMIT_HASH 只能填写 7 到 40 位十六进制 Git commit hash当前值: ' + commitHash) error('COMMIT_HASH 只能填写 7 到 40 位十六进制 Git commit hash当前值: ' + commitHash)
} }
env.REQUESTED_COMMIT_HASH = commitHash ?: '' env.COMMIT_HASH = commitHash ?: ''
def database = params.DATABASE?.trim() def database = params.DATABASE?.trim()
if (!database) { if (!database) {
error('DATABASE 不能为空。') error('DATABASE 不能为空。')
@@ -108,14 +108,15 @@ pipeline {
sh ''' sh '''
bash -lc ' bash -lc '
set -euo pipefail set -euo pipefail
if [[ -n "${REQUESTED_COMMIT_HASH}" ]]; then requested_commit="${COMMIT_HASH:-}"
if [[ -n "${requested_commit}" ]]; then
# Jenkins 先按 SCM 配置完成 checkout如指定 commit再拉取远端引用并切到该提交构建。 # Jenkins 先按 SCM 配置完成 checkout如指定 commit再拉取远端引用并切到该提交构建。
git fetch --tags --prune origin "+refs/heads/*:refs/remotes/origin/*" || git fetch --all --tags --prune git fetch --tags --prune origin "+refs/heads/*:refs/remotes/origin/*" || git fetch --all --tags --prune
if [[ "$(git rev-parse --is-shallow-repository 2>/dev/null || echo false)" == "true" ]]; then if [[ "$(git rev-parse --is-shallow-repository 2>/dev/null || echo false)" == "true" ]]; then
git fetch --unshallow --tags || true git fetch --unshallow --tags || true
fi fi
git cat-file -e "${REQUESTED_COMMIT_HASH}^{commit}" git cat-file -e "${requested_commit}^{commit}"
resolved_commit="$(git rev-parse "${REQUESTED_COMMIT_HASH}^{commit}")" resolved_commit="$(git rev-parse "${requested_commit}^{commit}")"
git checkout --detach "${resolved_commit}" git checkout --detach "${resolved_commit}"
echo "[build-and-deploy] 使用指定 commit 构建: ${resolved_commit}" echo "[build-and-deploy] 使用指定 commit 构建: ${resolved_commit}"
else else