GitHub 在 Jenkinsfile 中检查环境变量
GitHub checkout with environmental variable in Jenkinsfile
在 Jenkins 中,我有一个使用 Jenkinsfile 的多分支管道作业。我已通过以下方式禁用默认 SCM 结帐:
options {skipDefaultCheckout(true)}
这样我就可以控制每个阶段的结帐并使用来自 GitHub 的 SSH URL。我有一个工作阶段,使用以下方法检查“主要”分支:
checkout([
$class: 'GitSCM',
branches: [[name: '*/main']],
extensions: [[$class: 'LocalBranch', localBranch: 'main']],
userRemoteConfigs: [[credentialsId: 'XXX', url: 'git@github.com:XXX.git']]
])
对于另一个阶段,我想检出并 build/test 触发的分支(在本例中是名为“feature-0001”的功能分支)。我试过这个(注意分支和扩展行的变化):
checkout([
$class: 'GitSCM',
branches: [[name: env.BRANCH_NAME]],
extensions: [[$class: 'LocalBranch']],
userRemoteConfigs: [[credentialsId: XXX, url: 'git@github.com:XXX.git']]
])
但出现以下错误:
Error when executing failure post condition:
java.io.IOException: Cannot retrieve Git metadata for the build
此外,构建日志还有:
git rev-parse "origin/feature-0001^{commit}" # timeout=10
git rev-parse "feature-0001^{commit}" # timeout=10
我不确定“^{commit}”来自哪里,或者它是否导致了任何问题。
任何指导将不胜感激,谢谢!
P.S。我还尝试了 BRANCH_NAME 的多种变体,包括
$env.BRANCH_NAME, ${env.BRANCH_NAME}, $BRANCH_NAME, ${BRANCH_NAME}
如果您希望在 SCM checkout
step, try (as explained here 中以明确的方式引用您的分支名称:
branches: [[name: 'refs/heads/${env.BRANCH_NAME}']]
^{commit}
revision specification 因此适用于参考 refs/heads/${env.BRANCH_NAME}
<rev>^{<type>}
, e.g. v0.99.8^{commit}
A suffix ^
followed by an object type name enclosed in brace pair means dereference the object at <rev>
recursively until an object of type <type>
is found or the object cannot be dereferenced anymore (in which case, barf).
For example, if <rev>
is a commit-ish, <rev>^{commit}
describes the corresponding commit object.
分支机构:[[名称:“refs/heads/${env.BRANCH_NAME}”]] 有效。
我还使用了不正确的 url/credentials 导致了更多问题。 (抱歉,刚接触软件世界。)感谢您的帮助!
在 Jenkins 中,我有一个使用 Jenkinsfile 的多分支管道作业。我已通过以下方式禁用默认 SCM 结帐:
options {skipDefaultCheckout(true)}
这样我就可以控制每个阶段的结帐并使用来自 GitHub 的 SSH URL。我有一个工作阶段,使用以下方法检查“主要”分支:
checkout([
$class: 'GitSCM',
branches: [[name: '*/main']],
extensions: [[$class: 'LocalBranch', localBranch: 'main']],
userRemoteConfigs: [[credentialsId: 'XXX', url: 'git@github.com:XXX.git']]
])
对于另一个阶段,我想检出并 build/test 触发的分支(在本例中是名为“feature-0001”的功能分支)。我试过这个(注意分支和扩展行的变化):
checkout([
$class: 'GitSCM',
branches: [[name: env.BRANCH_NAME]],
extensions: [[$class: 'LocalBranch']],
userRemoteConfigs: [[credentialsId: XXX, url: 'git@github.com:XXX.git']]
])
但出现以下错误:
Error when executing failure post condition:
java.io.IOException: Cannot retrieve Git metadata for the build
此外,构建日志还有:
git rev-parse "origin/feature-0001^{commit}" # timeout=10
git rev-parse "feature-0001^{commit}" # timeout=10
我不确定“^{commit}”来自哪里,或者它是否导致了任何问题。
任何指导将不胜感激,谢谢!
P.S。我还尝试了 BRANCH_NAME 的多种变体,包括
$env.BRANCH_NAME, ${env.BRANCH_NAME}, $BRANCH_NAME, ${BRANCH_NAME}
如果您希望在 SCM checkout
step, try (as explained here 中以明确的方式引用您的分支名称:
branches: [[name: 'refs/heads/${env.BRANCH_NAME}']]
^{commit}
revision specification 因此适用于参考 refs/heads/${env.BRANCH_NAME}
<rev>^{<type>}
, e.g.v0.99.8^{commit}
A suffix
^
followed by an object type name enclosed in brace pair means dereference the object at<rev>
recursively until an object of type<type>
is found or the object cannot be dereferenced anymore (in which case, barf).For example, if
<rev>
is a commit-ish,<rev>^{commit}
describes the corresponding commit object.
分支机构:[[名称:“refs/heads/${env.BRANCH_NAME}”]] 有效。
我还使用了不正确的 url/credentials 导致了更多问题。 (抱歉,刚接触软件世界。)感谢您的帮助!