禁用并发构建

时间:2016-04-20 14:51:56

标签: jenkins jenkins-workflow jenkins-pipeline

背景:我们正在寻找有关如何优化管道(以前的工作流程)的解决方案。

目前,我们安静地运行了几个并行部署和测试,这些部署和测试分布在2个构建器上,每个构建器有4个执行器。

管道由Git推送触发,因此后续推送将触发多个构建。我们已经尝试了阶段并发:1选项,它很好地阻止了后续构建的步骤,但是当特定阶段完成时将会激活。

问题(S)

我不确定这是最佳做法,但在我看来,最好不要执行新版本,直到上一版本完成。 (推理我们已经为它提交了资源,并且应该允许它完成,即使它不是最新和最好的提交)。

Q1:这是最佳做法吗?

Q2:我们如何预先抢占新的triggert版本,同时仍然运行前一个版本? (我可以想象迭代这个工作的构建并停止新工作......)。

参见第一阶段的配置[1]

[1]第一阶段..

stage name: 'Checkout and build WAR'
node {
    def mvnHome = tool 'Maven 3.2.x'
    checkout([$class                           : 'GitSCM',
          poll                             : true,
          branches                         : [[name: '*/master']],
          doGenerateSubmoduleConfigurations: false,
          extensions                       : [[$class           : 'RelativeTargetDirectory',
                                               relativeTargetDir: 'checkout-directory']],
          submoduleCfg                     : [],
          userRemoteConfigs                : [[url: 'https://some.repo/repo.git']]])

// Archive the cloned repo.
stash name: 'src', includes: 'checkout-directory/war/src/, checkout-directory/war/pom.xml'

// Run without tests, do the unit and integration tests in a separate stage.
sh "${mvnHome}/bin/mvn -f checkout-directory clean install -DskipTests"

// Archive the application build.
stash name: 'war', includes: 'checkout-directory/war/target/*.war'
}

2 个答案:

答案 0 :(得分:2)

从作业configuration开始,您可以设置:

  • 必要时执行并发构建
  • 安静的时期
  

如果设置,新安排的构建将等待这么多秒   实际建成。这对以下内容非常有用:

     
      
  • 将多个CVS更改通知电子邮件折叠成一个(一些CVS更改日志电子邮件生成脚本生成多个电子邮件)   当提交跨越目录时快速连续。)
  •   
  • 如果您的编码风格是在几个cvs / svn操作中提交一个逻辑更改,那么设置更长的静默期将   防止Jenkins过早地建立并报告失败。
  •   
  • 限制版本。如果您的Jenkins安装过于繁忙且构建太多,则设置较长的静默期可能会减少数量   建筑。
  •   
     

如果未在项目级别显式设置,则为系统范围的默认值   使用。

至于jenkins-pipeline DSL这个article回答你的问题:

  

默认情况下,Pipeline构建可以并发运行。舞台命令   允许您将构建的某些部分标记为受约束   有限并发(或者,后来,不受约束)。较新的版本   在进入这样一个受限制的阶段时总是优先考虑;旧的   如果它们被预占,那么构建将会提前退出。

答案 1 :(得分:0)

通过属性使用Jobs配置似乎是最简洁的方法。

请参阅https://stackoverflow.com/a/43963315/1756183