Bas*_*ien 15 git jenkins jenkins-pipeline
我已经使用管道功能将一些旧的Jenkins作业移动到新的作业,以便能够在git存储库中集成Jenkins配置.它工作正常,但我问自己是否有办法减少建设时发生的结账次数.
建立
我的git存储库中有一个Jenkinsfile
#!groovy
node {
stage 'Checkout'
checkout scm
// build project
stage 'Build'
...
}
Run Code Online (Sandbox Code Playgroud)问题
当我推送到我的远程分支BRANCH_1时,会触发multibranch jenkins作业,我的理解是发生以下步骤:
git fetch
为分支索引创建一个并触发与我的远程分支对应的作业:BRANCH_1_jobgit checkout
检索触发分支的Jenkins文件checkout scm
自行创建.如果我不这样做,我就无法构建我的项目,因为没有可用的源.因此,为了建立我的分支,我最终得到了一个git fetch
和两个git checkout
.
问题
git checkout
?当我查看官方示例时,他们都会将结帐scm作为第一步.我个人认为我没有必要这样做,因为jenkins工作已经不得不进行检查以检索Jenkins文件(所以我的来源必须以某种方式在这里).谢谢大家
与普通的git詹金斯必须做两次检出:一个得到Jenkinsfile知道什么任务中的执行,然后将实际存储库的内容作建筑用途的另一结账.从技术上讲,Jenkins只需要从repo加载一个Jenkins文件,但是git不允许签出单个文件.因此,使用multibranch插件使用普通git无法避免双重结账.
如果你在Bitbucket或GitHub上托管git,那么你可以通过使用他们特定的Jenkins插件而不是multibranch插件来避免双重结账.
相应地查看Jenkins插件站点的Bitbucket和GitHub插件.
这些插件使用相应的Git提供程序的REST API来加载单个Jenkins文件.所以你在技术上仍然有一个双结账,但第一个是一个简单的REST调用来下载单个文件,而不是对整个存储库进行完整的本机git checkout.