如何在 Jenkinsfile 中正确指定 bitbucket checkout
How to correctly specify bitbucket checkout in Jenkinsfile
我对 Jenkins 还很陌生,想确保我可以在推送到我的存储库时自动触发管道。为此,我遵循了这个 tutorial。一切正常,但我无法理解的部分是 3:40 秒左右的说明,我们使用 Jenkins 管道语法生成器创建 'bbs_checkout' 步骤。然后将其粘贴到与 SCM 一起使用的 Jenkinsfile 中。假设我的 Jenkinsfile 看起来像这样:
pipeline{
agent any
stages{
stage('Checkout'){
steps{
echo "about to checkout bitbucket"
bbs_checkout <<checkout information generated by the pipeline syntax generator>>
echo "done checking out bitbucket
}
}
}
}
当我推送到我的 bitbucket 服务器,然后查看 Jenkins 上的输出日志时,我发现我实际上最终克隆了我的存储库两次。它似乎只发生一次(未在管道中明确声明),然后在到达结帐步骤时再次发生。这是有道理的,因为如果 Jenkins 还没有克隆存储库,他怎么能看到 Jenkinsfile。如果我删除 bbs_checkout 步骤,我仍然会克隆 repo。那有什么意义呢?
如果您的工作类型是 "Pipeline from SCM",您可以选中 "Lightweight checkout" 复选框。这只会在第一次结帐时带来 Jenkinsfile。
如果出于其他原因,您想要第一次结帐而不是第二次结帐,请使用
pipeline {
options {
skipDefaultCheckout true
}
然后您需要明确请求结帐,例如使用checkout scm
需要的地方。
我对 Jenkins 还很陌生,想确保我可以在推送到我的存储库时自动触发管道。为此,我遵循了这个 tutorial。一切正常,但我无法理解的部分是 3:40 秒左右的说明,我们使用 Jenkins 管道语法生成器创建 'bbs_checkout' 步骤。然后将其粘贴到与 SCM 一起使用的 Jenkinsfile 中。假设我的 Jenkinsfile 看起来像这样:
pipeline{
agent any
stages{
stage('Checkout'){
steps{
echo "about to checkout bitbucket"
bbs_checkout <<checkout information generated by the pipeline syntax generator>>
echo "done checking out bitbucket
}
}
}
}
当我推送到我的 bitbucket 服务器,然后查看 Jenkins 上的输出日志时,我发现我实际上最终克隆了我的存储库两次。它似乎只发生一次(未在管道中明确声明),然后在到达结帐步骤时再次发生。这是有道理的,因为如果 Jenkins 还没有克隆存储库,他怎么能看到 Jenkinsfile。如果我删除 bbs_checkout 步骤,我仍然会克隆 repo。那有什么意义呢?
如果您的工作类型是 "Pipeline from SCM",您可以选中 "Lightweight checkout" 复选框。这只会在第一次结帐时带来 Jenkinsfile。
如果出于其他原因,您想要第一次结帐而不是第二次结帐,请使用
pipeline {
options {
skipDefaultCheckout true
}
然后您需要明确请求结帐,例如使用checkout scm
需要的地方。