如何在 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 需要的地方。