【发布时间】:2015-11-06 09:38:37
【问题描述】:
我们正在为 CI 使用 Jenkins、GerritTrigger 设置,尽管所有提交都来自单次推送,但它将为每次提交开始构建。由于所有更改都相互依赖,因此足以生成包含所有更改的单个构建,但我在 GerritTrigger 插件中看不到该选项。
我相信很多公司都在使用 Jenkins 和 Gerrit 的组合,我很想知道他们是如何处理这些案例的。
例子:
如果开发人员一次将低于 4 个提交推送到 gerrit,它将在 gerrit 中相应地创建 4 个更改,例如 1、2、3、4,并且它会在 jenkins 中为所有提交启动 4 个构建
git log --oneline
e3dfdwd CommitD
5fgfdgh CommitC
df34dsf CommitB
a23sdr3 CommitA
这里 4 个提交作为一个整体将通过 jenkins 中的所有测试,但单独它们将失败。现在 jenkins 构建对于 A、B、C 将失败,并且对于 D 将成功,因为它将检查 A、B、C,因为它们是它的依赖项。
在这种情况下,虽然 Commit-D 是成功的,但它不能被合并,因为它的依赖项没有在 Jenkins 中传递。
从开发来看,期望每次推送而不是每次提交都进行 jenkins 验证似乎是合理的。但是 GerritTrigger 只能在每次提交时运行。
问题:
有没有办法通知 jenkins 只为 commit-D 开始构建,因为它将具有所有依赖项 C、B、A ? 或者我们可以从开发而不是提交为每个 git push 开始构建吗?
抱歉,如果我有任何信息
【问题讨论】:
-
请解释为什么开发人员要同时推送 4 个提交,或者如果没有理由,则通过压缩它们来避免它
-
一次推送四个提交是非常合理的,但是有不可构建的中间提交似乎是非常错误的。
-
是的 MagnusBack 你是对的,我们必须在这种方法中对不可构建的中间提交做出妥协。但是根据我们的工作场景,这似乎是合理的,并且它大大减少了我们的资源消耗,而不是进行 4 次构建,而只会进行 1 次构建。
-
它将确保整个代码库始终是可构建和验证的,但不是每次提交。我们对此很好,并且在我们的团队中没有发现任何问题。
标签: jenkins jenkins-plugins gerrit