当与多个git repos一起使用时,如何防止Jenkins管道(工作流)触发多个构建?

时间:2016-04-05 19:34:49

标签: jenkins jenkins-plugins githooks jenkins-workflow jenkins-pipeline

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

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

  

阶段'REPO-1'{
  git branch:“feature / testbranch”,changelog:true,   民意调查:true,url:'ssh://git@stash.com/repo1.git',credentialsId:'xxx'   }

     

阶段'REPO-2'{
  git branch:“feature / testbranch”,changelog:true,   民意调查:true,url:'ssh://git@stash.com/repo2.git',credentialsId:'xxx'   }

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

2 个答案:

答案 0 :(得分:0)

您是否考虑过使用Additional Behaviours: Polling ignores commits with certain messages

  

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

步骤:

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

    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']]])
    

答案 1 :(得分:0)

我启用了安静时段选项并添加了超时60秒。这将有助于Jenkins工作流将在一个安静时期内对多个存储库的更改折叠为一个并触发单个构建,而不是为每个SCM更改触发多个构建。enter image description here

请记住,我的情况下的静默期设置为60秒,只要其他更改在60秒内,它将再添加60秒静默期以监视存储库中的任何其他更改。但是如果你在60秒后对存储库进行了另一次更改,那将是另一个版本。