我有两个Jenkins工作 - Jenkins Job1和Jenkins Job2。
我有多个应用程序并使用相同的jenkins来构建应用程序。如果同一个应用程序在Jenkins中运行 - 我想暂停,直到上一个构建完成。我们如何处理这种情况?
谢谢!
注意:我们正在使用Jenkins管道作业类型
答案 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
选项。