我们开始使用jenkins-workflow来管理我们的持续交付管道。
下面是我们正在做的一个简单的Pipeline示例:
生成项目=>运行单元测试=>运行集成测试=> QA促销=>在QA中部署=> UAT促销=>在UAT中部署
其中: QA推广和UAT推广是等待某人“促进”构建的阶段(通过“输入”步骤实现)。
这纯粹是美观的,但我们发现不太好的一件事是,在升级阶段等待的每个构建都显示为“正在进行中”(进度条无限期地运行)。这很奇怪,因为如果最后10个构建没有部署在QA中,那么我们最终将有10个构建显示为“运行”。
我知道等待输入不会导致任何性能问题。因为如果这些输入步骤没有封装在节点中,那么它们只消耗flyweight executors (假设不占用任何重要计算能力的未计数的插槽,src:https://github.com/jenkinsci/pipeline-plugin/blob/master/TUTORIAL.md)。
所以,我想知道是否存在一个更好的解决方案,允许我们使用Jenkins Pipeline“推广”构建,而不会带来上述美学上的不便。
谢谢
发布于 2016-09-25 12:07:04
里程碑插件可在此处获得:https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Milestone+Step+Plugin
它的用途:
默认情况下,管道生成可以并发运行。里程碑步骤确保较旧的构建不会覆盖较新的构建,因此,如果较新的构建已经通过里程碑,则不会允许较旧的构建通过里程碑(它被中止)。
这一步在连续交付管道中特别有用,在连续交付管道中,构建顺序非常重要,因为顺序定义了要交付的内容,因此它提供了一个控制点,当新的提交已经在交付时,该控制点可以中止任何尝试交付旧提交的构建。
通常,此步骤授予:
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).主要的缺点是它不允许你升级旧的构建,而且你仍然会有很多作业“卡住等待”。
发布于 2016-06-06 20:13:56
如果最后10个构建没有在QA中部署,那么我们将结束10个构建显示为"running“
stage的concurrency参数就是为这种目的而设计的。它不能以您希望的方式与诸如input之类的东西一起工作,这就是为什么在测试中使用milestone步骤的原因。
发布于 2017-06-13 21:38:18
如果要清理管道,可以在输入上使用超时
timeout(time:1, unit:'DAYS') {
input message:'Approve deployment?'
}https://stackoverflow.com/questions/37644859
复制相似问题