詹金斯并行触发和等待

时间:2012-10-16 22:19:25

标签: jenkins hudson jenkins-plugins hudson-plugins

我有4个工作需要按以下顺序执行

JOB A 
 |------> JOB B
 |------> JOB C 
            |------> JOB D

在上面

  1. A应触发B& C并行和C inturn触发D。
  2. A应该让工作继续运行,直到所有3个工作完成。
  3. 我尝试了以下插件,无法实现我想要的

    • 加入插件
    • Multijob插件
    • 多配置项目
    • Paramterized Trigger Plugin

    是否有任何我未尝试的插件可以帮助我解决这个问题。或者这可以通过不同的方式实现。请告知。

5 个答案:

答案 0 :(得分:2)

DSL脚本构建流程插件一起使用。

尝试此示例执行:

   build("job A")

   parallel
   (
      {build("job B")}
      {build("job C")}
   )

   build("job D")

答案 1 :(得分:1)

答案 2 :(得分:1)

这可能不是最佳方式,但它应该有效。使用参数化触发器插件。对于作业A,添加构建步骤(不是后构建操作)以在同一构建步骤和块中启动作业B和C,直到它们完成。在Job C中,添加一个构建步骤(不是Post Build Action),它启动Job D AND阻塞直到它完成。这应该使Job A在整个持续时间内保持运行。

但这并不是最佳选择:作业A保持打开状态等待B和C完成。然后C保持打开直到D完成。

是否有某些原因需要工作A在此期间保持运行?另一种可能性是在B和C启动后让作业A终止,但在作业A上有一个促销,它将在作业B,C和D成功后执行你的最终行动。

答案 3 :(得分:1)

我正在尝试构建一个相同的系统。我正在构建一个认证管道,我需要运行打包器/构建/部署作业和相应的测试作业。当所有这些都成功时,我想聚合测试结果并触发可以自动发布maven的发布作业。

我选择了Build pipeline插件来显示系统。最初尝试使用带有阻塞构建的参数化触发器插件。我无法以这种方式设置归档工件/指纹和下游构建关系,因为归档工件仅适用于postbuild 。然后我将参数化触发器放在Post构建活动中。通过这种方式,我能够设置下游构建,指纹识别,聚合测试结果,但构建失败并未冒泡到上游作业链,上游作业无阻塞

我终于能够使用这些插件实现这一点 -

  • 构建管道
  • MultiJob插件
  • 指纹插件
  • 复制工件插件
  • 加入插件

我正在使用Jenkins 1.514

系统看起来像这样

触发作业 - >构建(和部署)Job(1..n)--->测试工作(1..n)

触发工作 -

  • 创建为MultiJob并在shell exec中创建指纹文件

    echo date +%s> fingerprint.txt

诀窍是文件需要在构建期间归档,为此执行此脚本 -

ARCHIVEDIR=$JENKINS_HOME/jobs/$JOB_NAME/builds/$BUILD_ID/archive
mkdir $ARCHIVEDIR
cp fingerprint.txt $ARCHIVEDIR
  • 创建由构建/部署作业组成的MultiJob阶段。
  • 构建/部署作业本身就是一个多工作
  • 按照与上述相关方式相同的步骤创建构建/部署作业 指纹识别。
  • 从上游作业
  • 复制fingerprint.txt工件
  • 在触发测试作业的部署作业中设置MultiJob阶段
  • 创建一个新的指纹文件并强制存档,类似于上一步
  • 收集Junit结果进行最终测试工作。


在触发器Job中,使用Join Plugin通过选择“在连接时运行Post Build Build”来执行Release Job,并仅在稳定构建Trigger Job时执行release项目。 这样,所有步骤都显示在Build Pipeline视图中,Trigger作业阻止所有下游构建完成,并将其状态设置为最差的下游构建,以便为发布作业提供决策点。

答案 4 :(得分:1)

Multijob插件

如果您想停止下游/上游作业链定义的混乱。或者,当您想要添加将按顺序或并行执行的Jenkins作业的完整层次结构时。将上下文添加到构建流程中,实现从MultiJob到其所有阶段和作业的参数继承。阶段是连续的,而每个阶段内的工作是平行的。

https://wiki.jenkins-ci.org/display/JENKINS/Multijob+Plugin