如何保持Multibranch Pipeline作业不在master上克隆repo

时间:2017-04-10 21:06:43

标签: jenkins jenkins-pipeline

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

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

它为每个分支创建一个新的工作区,其中包含一个新的存储库克隆。

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

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

  1. 下载(并执行)Jenkins文件而不克隆完整存储库
  2. 在主人
  3. 以外的其他节点上克隆存储库
  4. 自动删除自动删除作业的工作区

1 个答案:

答案 0 :(得分:0)

发现它真的很烦人。显然,目前没有解决此问题的方法。要开始构建,Jenkins需要Jenkinsfile位于存储库中,以便获取完整的repo来查找它。可以在此处找到更多信息:JENKINS-33273 Optimize Jenkinsfile loading and branch detection

主磁盘耗尽硬盘空间的解决方法是在作业完成后删除存储库副本。只需将此代码段附加到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()
    }
}