1

如果您有一个使用多个 git 存储库的工作流,则每个 git push 都会触发 Jenkins 中的构建。

如果我有一个工作流作业配置为轮询 10 个 git 存储库,并且我将更改推送到所有这些存储库 [在进行发布构建时很有可能] - 那就是队列中的 10 个构建。这既好又坏。不好,因为我们将在不同的存储库中进行更改,并且我们希望在所有文件都进入后开始构建。同时我不想避免轮询存储库。

阶段 'REPO-1' {
git 分支:“feature/testbranch”,changelog:true,poll:true,url:'ssh://git@stash.com/repo1.git',credentialsId:'xxx'}

阶段 'REPO-2' {
git 分支:“feature/testbranch”,changelog:true,poll:true,url:'ssh://git@stash.com/repo2.git',credentialsId:'xxx'}

有没有办法可以防止这种行为可能会导致轮询延迟。

4

2 回答 2

0

你考虑过使用Additional Behaviours: Polling ignores commits with certain messages吗?

如果设置,并且 Jenkins 设置为轮询更改,则在确定是否需要触发构建时,Jenkins 将忽略任何提交的带有与 Pattern 匹配的消息的修订...

脚步:

  1. IGNORE使用消息提交您的更改。
  2. 一旦所有存储库都是最新的,然后手动或使用no-IGNORE消息触发构建。

结账步骤:

checkout([$class: 'GitSCM', 
    branches: [[name: '*/master']], 
    doGenerateSubmoduleConfigurations: false, 
    extensions: [[$class: 'UserExclusion', excludedUsers: ''], 
    [$class: 'MessageExclusion', excludedMessage: '.*\\[ignore-this-commit\\].*']], 
    submoduleCfg: [], 
    userRemoteConfigs: [[url: 'https://github.com/luxengine/math.git']]])
于 2016-04-05T20:56:21.020 回答
0

我启用了安静期选项并添加了 60 秒的超时。这将有助于 Jenkins 工作流程在安静的时期内将多个存储库的更改合并为一个并触发单个构建,而不是为每个 SCM 更改触发多个构建。在此处输入图像描述

请记住,在我的情况下,静默期设置为 60 秒,只要其他更改在 60 秒内,它就会添加另一个 60 秒静默期,以观察存储库中的任何其他更改。但是,如果您在 60 秒后对存储库进行另一次更改,它将是另一个构建。

于 2016-04-06T21:14:14.063 回答