Jay*_*ang 70 plugins continuous-integration pipeline build jenkins
为了尽可能快地获得反馈,我们偶尔会希望Jenkins的作业能够并行运行.Jenkins能够在作业完成时启动多个下游作业(或"分叉"管道).但是,Jenkins似乎没有任何方法可以使下游作业只启动该fork的所有分支成功(或者将fork连接在一起).
Jenkins有一个"构建其他项目后构建"按钮,但我将其解释为"当任何上游作业完成时启动此作业"(不是"当所有上游作业成功时启动此作业").
这是我正在谈论的内容的可视化.有谁知道一个插件是否存在我做的事情?
当我最初在2012年发布这个问题时,Jason的答案(Join和Promoted Build插件)是最好的,而且我选择了解决方案.
然而,dnozay的回答(The Build Flow插件)在这个问题之后大约一年左右流行,这是一个更好的答案.对于它的价值,如果人们今天问我这个问题,我现在建议改为.
dno*_*zay 31
您可以使用Pipeline Plugin(以前workflow-plugin
).
例如
// build
stage 'build'
...
// deploy
stage 'deploy'
...
// run tests in parallel
stage 'test'
parallel 'functional': {
...
}, 'performance': {
...
}
// promote artifacts
stage 'promote'
...
Run Code Online (Sandbox Code Playgroud)
您还可以使用Build Flow插件.它简直太棒了 - 但它已被弃用(开发冻结).
创建工作:
在上游(这里build
)创建一个独特的工件,例如:
echo ${BUILD_TAG} > build.tag
Run Code Online (Sandbox Code Playgroud)存档build.tag
工件.
build.tag
文件并记录指纹,您将能够跟踪父项.promotion
作业成功时升级.PARENT_JOB_NAME
和PARENT_BUILD_NUMBER
build
使用Copy Artifact Plugin从上游作业复制工件
${PARENT_JOB_NAME}
${PARENT_BUILD_NUMBER}
build.tag
记录指纹; 这至关重要.
与上述相同,建立上下游关系.它不需要任何构建步骤.您可以执行其他后期构建操作,例如"嘿QA,轮到你了".
// start with the build
parent = build("build")
parent_job_name = parent.environment["JOB_NAME"]
parent_build_number = parent.environment["BUILD_NUMBER"]
// then deploy
build("deploy")
// then your qualifying tests
parallel (
{ build("functional tests",
PARENT_BUILD_NUMBER: parent_build_number,
PARENT_JOB_NAME: parent_job_name) },
{ build("performance tests",
PARENT_BUILD_NUMBER: parent_build_number,
PARENT_JOB_NAME: parent_job_name) }
)
// if nothing failed till now...
build("promotion",
PARENT_BUILD_NUMBER: parent_build_number,
PARENT_JOB_NAME: parent_job_name)
// knock yourself out...
build("more expensive QA tests",
PARENT_BUILD_NUMBER: parent_build_number,
PARENT_JOB_NAME: parent_job_name)
Run Code Online (Sandbox Code Playgroud)
祝好运.
Jas*_*ger 27
我过去使用过两种解决方案:
在"部署"作业上使用加入插件,并将"提升"指定为目标作业.您必须将"功能测试"和"性能测试"指定为已加入的作业,并以某种方式通过构建后启动它们.该参数触发插件好这一点.
在"部署"作业上使用" 推荐的构建"插件,指定在下游作业完成时有效的促销,并指定"功能"和"性能"测试作业.作为促销活动的一部分,触发"推广"工作.您仍然必须从"部署"启动两个测试作业
这两种解决方案都有一个重要方面:必须正确使用指纹.这是我发现的:
归档时间: |
|
查看次数: |
58414 次 |
最近记录: |