首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins-工作流-升级阶段(比“input”更好的解决方案)?

Jenkins-工作流-升级阶段(比“input”更好的解决方案)?
EN

Stack Overflow用户
提问于 2016-06-06 01:38:03
回答 3查看 2.7K关注 0票数 5

我们开始使用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“推广”构建,而不会带来上述美学上的不便。

谢谢

EN

回答 3

Stack Overflow用户

发布于 2016-09-25 12:07:04

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

它的用途:

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

这一步在连续交付管道中特别有用,在连续交付管道中,构建顺序非常重要,因为顺序定义了要交付的内容,因此它提供了一个控制点,当新的提交已经在交付时,该控制点可以中止任何尝试交付旧提交的构建。

通常,此步骤授予:

代码语言:javascript
复制
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).

主要的缺点是它不允许你升级旧的构建,而且你仍然会有很多作业“卡住等待”。

票数 1
EN

Stack Overflow用户

发布于 2016-06-06 20:13:56

如果最后10个构建没有在QA中部署,那么我们将结束10个构建显示为"running“

stageconcurrency参数就是为这种目的而设计的。它不能以您希望的方式与诸如input之类的东西一起工作,这就是为什么在测试中使用milestone步骤的原因。

票数 0
EN

Stack Overflow用户

发布于 2017-06-13 21:38:18

如果要清理管道,可以在输入上使用超时

代码语言:javascript
复制
timeout(time:1, unit:'DAYS') {
    input message:'Approve deployment?'
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37644859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档