如果有新的PR版本,则跳过并中止Jenkins的构建

问题描述 投票:0回答:1

我正在将https://wiki.jenkins.io/display/JENKINS/GitHub+Branch+Source+Plugin用于PR构建。 Jenkins已设置为定期扫描PR。

[打开PR请求通常会定期进行更新。我的工作是扫描它们并将它们附加到队列中并按顺序运行它们。这很浪费,我只想运行最新的PR版本。实际上,如果作业正在运行,我甚至想中止并运行最新的作业。我可以这样做吗?怎么样?

感谢您的帮助!

jenkins jenkins-pipeline jenkins-plugins jenkins-groovy jenkins-cli
1个回答
0
投票

我们有可能做同样的事情,这是代码:

def kill_other_builds() {
    def jobname = env.JOB_NAME
    def my_buildnum = env.BUILD_NUMBER.toInteger()
    echo "Job is ${jobname}, build number is ${my_buildnum}"

    def job = Jenkins.instance.getItemByFullName(jobname)
    for (build in job.builds) {
        this_buildnum = build.getNumber().toInteger()
        if (!build.isBuilding()) {
            println "Build ${this_buildnum} isn't building."
            continue; 
        }
        if (my_buildnum == this_buildnum)
        { 
            println "Build ${this_buildnum} is building and it's this build."
            continue; 
        }
        else if (my_buildnum < this_buildnum)
        { 
            errorMsg = "A newer build is already scheduled"
            currentBuild.result = "ABORTED"
            currentBuild.description = errorMsg
            error(errorMsg)
        }

        echo "Kill build ${build} number ${this_buildnum}."
        build.displayName += "(stopped by #${my_buildnum})"
        build.doStop()
        try {
            sleep 5
        } catch (err) {
            String errStr = err.toString()
            println errStr
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.