首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jenkins 2.0构建取消与里程碑

Jenkins 2.0构建取消与里程碑
EN

Stack Overflow用户
提问于 2017-02-24 20:19:13
回答 2查看 485关注 0票数 1

我们希望使用里程碑来取消旧的构建。我们使用多分支管道来构建来自Github的每个pull请求。构建在4-5分钟内完成,分为5个阶段。当新的更改被推送到Github(一个新的构建开始)时,我们希望取消当前的构建(无论它处于哪个阶段)。

因此,我们在构建开始时分配一个里程碑。我们使用内部版本号作为里程碑,因此当一个新的构建开始时,它将完成下一个里程碑,因此前一个构建被取消。

问题是管道会立即终止,有时这会使其处于不正确的状态。

我们是否可以将构建配置为等到当前步骤完成后再取消它?

另一种选择是在每个阶段之后都有不同的里程碑。在这种情况下,如果另一个构建完成了当前的里程碑,而只是不进入下一个里程碑,我们不希望取消构建。这个是可能的吗?

提前谢谢你。

EN

回答 2

Stack Overflow用户

发布于 2018-02-24 04:50:28

这可能会有所帮助:

代码语言:javascript
运行
复制
/* This method should be added to your Jenkinsfile and called at the very beginning of the build*/
@NonCPS
def cancelPreviousBuilds() {
    def jobName = env.JOB_NAME
    def buildNumber = env.BUILD_NUMBER.toInteger()
    /* Get job name */
    def currentJob = Jenkins.instance.getItemByFullName(jobName)

    /* Iterating over the builds for specific job */
    for (def build : currentJob.builds) {
        /* If there is a build that is currently running and it's not current build */
        if (build.isBuilding() && build.number.toInteger() != buildsNumber) {
            /* Than stopping it */
            build.doStop()
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2017-02-25 05:30:01

你说的“不正确的状态”是什么意思,这个问题可以解决吗?

也许你可以通过一个里程碑/锁组合来实现这一点。我们在部署步骤周围使用了锁,这样它就不会被中断。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42438476

复制
相关文章

相似问题

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