【发布时间】:2019-02-08 06:02:59
【问题描述】:
我已经使用pipeline feature 将一些旧的 Jenkins 作业转移到了新的作业中,以便能够将 Jenkins 配置集成到 git 存储库中。 它工作正常,但我问自己是否有办法减少构建时发生的结帐次数。
设置
- 我有一个与我的 git 存储库相关的 Jenkins 多分支作业
-
我的 git 存储库中有一个 Jenkinsfile
#!groovy node { stage 'Checkout' checkout scm // build project stage 'Build' ... }
问题
当我推送到我的远程分支 BRANCH_1 时,会触发多分支 jenkins 作业,我的理解是会发生以下步骤:
- 多分支作业为分支索引创建
git fetch并触发与我的远程分支对应的作业:BRANCH_1_job -
BRANCH_1_job 生成
git checkout以检索触发分支的 Jenkinsfile - Jenkinsfile 被执行并自己生成一个
checkout scm。如果我不这样做,我将无法构建我的项目,因为没有可用的源代码。
所以为了建立我的分支,我最终得到了一个 git fetch 和两个 git checkout。
问题
- 我是否正确理解了流程?还是我错过了什么?
- 有没有办法减少
git checkout的数量?当我检查official examples 时,他们都将结帐单片机作为第一步。我个人认为我不必这样做,因为 jenkins 工作已经必须进行结帐以检索 Jenkinsfile(所以我的来源必须以某种方式在这里)。 - 您不认为一旦 git 存储库包含大量引用,这些多次签出会导致性能下降吗?
谢谢大家
【问题讨论】:
-
如果您没有设置使用多分支管道,您可以使用 Jenkins 中的
Jenkinsfile创建一个普通(单分支)管道作业,该作业执行单个结帐,然后加载您的实际通过load 'ci/build-script-in-your-repo.gy'从签出的存储库构建脚本。不幸的是,在这种情况下,您将失去每个分支的单独工作。 -
我知道你的意思,但我想: - 将我的 ci 配置保存在我的存储库中,而不是我的 jenkins 工作配置中 - 使用不错的多分支功能(比如每个分支一个工作,所以一个人可以轻松查看哪个分支失败)
标签: git jenkins jenkins-pipeline