我有4个工作需要按以下顺序执行
JOB A
|------> JOB B
|------> JOB C
|------> JOB D
在上面
我尝试了以下插件,无法实现我想要的
是否有任何我未尝试的插件可以帮助我解决这个问题。或者这可以通过不同的方式实现。请告知。
答案 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构建活动中。通过这种方式,我能够设置下游构建,指纹识别,聚合测试结果,但构建失败并未冒泡到上游作业链,上游作业无阻塞
我终于能够使用这些插件实现这一点 -
我正在使用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
在触发器Job中,使用Join Plugin通过选择“在连接时运行Post Build Build”来执行Release Job,并仅在稳定构建Trigger Job时执行release项目。
这样,所有步骤都显示在Build Pipeline视图中,Trigger作业阻止所有下游构建完成,并将其状态设置为最差的下游构建,以便为发布作业提供决策点。
答案 4 :(得分:1)
Multijob插件
如果您想停止下游/上游作业链定义的混乱。或者,当您想要添加将按顺序或并行执行的Jenkins作业的完整层次结构时。将上下文添加到构建流程中,实现从MultiJob到其所有阶段和作业的参数继承。阶段是连续的,而每个阶段内的工作是平行的。