如何防止 Multibranch Pipeline 作业在 master 上克隆 repo

Por*_*Man 5 jenkins jenkins-pipeline

我有一个 Multibranch Pipeline 作业,指向一个 Bitbucket Server 存储库。

在 Jenkinsfile 上执行任何操作之前,它总是在主节点工作区中执行存储库的完整克隆。

它为每个分支创建一个新的工作区,并带有存储库的新克隆。

对于一些较大的存储库,这不仅会花费大量时间,而且还会占用主节点上的大量空间。

是否可以执行以下任何操作:

  1. 下载(并执行)Jenkinsfile 而不克隆完整的存储库
  2. 在 master 以外的另一个节点上克隆存储库
  3. 自动删除自动删除作业的工作区

Mr.*_*fee 0

也发现这真的很烦人。显然目前这个问题没有解决方法。要开始构建,Jenkins 需要Jenkinsfile位于存储库中,以便它获取完整的存储库来找到它。更多信息可以在这里找到:JENKINS-33273 优化 Jenkinsfile 加载和分支检测

主硬盘空间不足的解决方法是在作业完成后删除存储库副本。只需将此片段附加到您的Jenkinsfile.

node('master') {
    stage 'Cleanup repository from master node'

    // Due to the MultiPipeLine problem with fetching full repository on the
    // master node we need to manually cleanup the workspace to prevent trashing
    // HDD with copies of the git repository
    def workspace = pwd()
    dir("${workspace}@script") {
        deleteDir()
    }
}
Run Code Online (Sandbox Code Playgroud)