修复 Mac 发布 Job 手工触发时 Checkout 因未定义参数失败
- 手工「立即构建」不会注入可选参数(COMMIT_HASH / SKIP_IF_SUPERSEDED 未定义而非空值),set -u 下 `[ -n "$COMMIT_HASH" ]` 直接以 unbound variable 退出,Job 2026-09-21 12:54 那一轮就是这样在 Checkout 失败的 - 两段 Checkout 脚本开头统一兜底:SOURCE_BRANCH 默认 master、COMMIT_HASH 默认空、SKIP_IF_SUPERSEDED 默认 false,调度器显式传参时行为不变(仍按 pinned commit 构建并判让位)
This commit is contained in:
@@ -43,6 +43,9 @@ pipeline {
|
||||
// 目的是防止把开发 checkout 当成 Jenkins workspace。
|
||||
sh '''
|
||||
set -eu
|
||||
# 手工「立即构建」时可选参数可能根本没定义(不是空值),先统一成空串/默认值,
|
||||
# 否则 set -u 会让 Checkout 直接失败。
|
||||
SOURCE_BRANCH="${SOURCE_BRANCH:-master}"
|
||||
if [ -n "${AGC_AGENT_ROOT:-}" ]; then
|
||||
case "$WORKSPACE" in "$AGC_AGENT_ROOT"/workspace/*) ;; *) echo "拒绝非专用 Agent 工作区:$WORKSPACE"; exit 1;; esac
|
||||
else
|
||||
@@ -54,6 +57,10 @@ pipeline {
|
||||
withCredentials([sshUserPrivateKey(credentialsId: env.GIT_REMOTE_CREDENTIAL_ID, keyFileVariable: 'GIT_SSH_KEY', usernameVariable: 'GIT_SSH_USER')]) {
|
||||
sh '''
|
||||
set -eu
|
||||
# 同上:可选参数在「立即构建」里可能是未定义变量,统一兜底再使用。
|
||||
SOURCE_BRANCH="${SOURCE_BRANCH:-master}"
|
||||
COMMIT_HASH="${COMMIT_HASH:-}"
|
||||
SKIP_IF_SUPERSEDED="${SKIP_IF_SUPERSEDED:-false}"
|
||||
export GIT_SSH_COMMAND="ssh -i \\"$GIT_SSH_KEY\\" -o IdentitiesOnly=yes -o StrictHostKeyChecking=yes"
|
||||
if [ ! -d .git ]; then
|
||||
git init
|
||||
|
||||
Reference in New Issue
Block a user