当jenkins已经在相同或不同的jenkins工作中运行时如何保持jenkins工作

时间:2017-03-24 22:28:45

标签: jenkins jenkins-plugins jenkins-pipeline

我有两个Jenkins工作 - Jenkins Job1和Jenkins Job2。

我有多个应用程序并使用相同的jenkins来构建应用程序。如果同一个应用程序在Jenkins中运行 - 我想暂停,直到上一个构建完成。我们如何处理这种情况?

谢谢!

注意:我们正在使用Jenkins管道作业类型

2 个答案:

答案 0 :(得分:3)

这里有两个选项,使用可锁定资源插件(https://wiki.jenkins-ci.org/display/JENKINS/Lockable+Resources+Plugin

示例用法:

stage("Build Legacy"){
    steps{
        lock('Oracle-DB'){
            //with Bamboo SVN credentials, build using ant
            withCredentials([string(credentialsId: 'credentials', variable: 'credentials')]) {
                sh "ant $BUILD_PROFILE -Dsvn.password=${env.credentials} -Dsvn.username=${credentials_name}"
            }
        }
    }
}

任何想要使用该锁的管道脚本都必须等待它被释放。

或使用禁用并发构建。这只有在它们都在同一个多分支管道中构建时才有效。

示例用法:

options {
    disableConcurrentBuilds()
}

<强> PSA:

不要忘记创建保留政策,否则您可能会很快耗尽空间。将这一个衬垫添加到您的选项声明中。

示例用法:

buildDiscarder(logRotator(artifactNumToKeepStr: '5'))

答案 1 :(得分:1)

如果您不希望同时执行两次相同的作业,则可以检查作业配置中的Do not allow concurrent builds选项。