Jenkins-工作流程 – 推广阶段(比“输入”更好的解决方案)?

我们开始使用jenkins-workflow来管理我们的Continuous Delivery管道.

这是我们正在做的一个简单的Pipeline示例:

[构建项目] => [运行单元测试] => [运行集成测试] => [QA促销] => [在QA中部署] => [UAT促销] => [部署在UAT]

哪里:
[QA Promotion]和[UAT Promotion]是等待某人“推广”构建的阶段(通过“输入”步骤实现).

这纯粹是审美的,但我们发现不太好的一件事是,在促销阶段等待的每个构建都显示为“进行中”(进度条无限期运行).这很奇怪,因为如果最后10个版本没有部署在QA中,那么我们将结束将10个版本显示为“正在运行”.

我知道等待输入不会导致任何性能问题.因为如果这些输入步骤没有封装在一个节点内,那么它们只会消耗flyweight执行程序(一个假设不占用任何重要计算能力的无数插槽,src:https://github.com/jenkinsci/pipeline-plugin/blob/master/TUTORIAL.md).

所以,我想知道它是否存在一个更好的解决方案,允许我们使用Jenkins Pipeline“推广”构建而没有上述美观的不便.

谢谢

最佳答案 里程碑插件可在此处获取:
https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Milestone+Step+Plugin

它能做什么:

默认情况下,Pipeline构建可以并发运行.里程碑步骤确保较旧的构建不会覆盖较新的构建,因此如果较新的构建已经通过旧构建,则永远不允许旧构建通过里程碑(它被中止).

此步骤在持续交付管道中特别有用,其中构建顺序非常重要,因为订单定义了要交付的内容,因此它提供了一个控制点,当新的提交已经存在时,它会中止任何构建尝试提交旧提交交付.

一般来说,这一步授予:

Builds pass milestones in order (taking the build number as sorter field).
Older builds will not proceed (they are aborted) if a newer one already passed the milestone.
When a build passes a milestone, any older build that passed the previous milestone but not this one is aborted (see TIP 2 below).

主要的缺点是它不允许你推广旧的版本,你仍然会有很多工作“等待”.

点赞