Ita*_*not 3 bitbucket jenkins jenkins-plugins jenkins-pipeline
我在我的Jenkins中配置了一个BitBucket组织作业,它被配置为每20分钟扫描整个组织,如果它在组织的任何存储库中识别出提交,则会触发自动构建.
有时,在某个时间更改了多个分支,这会导致Jenkins触发同一个项目的多个构建.
其中一个项目永远不应该允许并发构建,因为它使用在构建运行时被锁定的资源,这会导致其他分支,其中提交被推送但是它们总是失败,因为它们的主要资源被构建的第一个实例锁定.
我知道Throttle Builds插件,它看起来非常适合自由式/管道工作,但在组织扫描的情况下,我无法在组织下的存储库中配置任何东西,只有组织本身,Hudson Locks和Latches插件也是如此..
谁知道任何解决方案?
我有类似的问题,并希望确保我的multibranch管道的每个分支一次只能执行一个构建.这是我添加到管道脚本中的内容:
pipeline {
agent any
options {
disableConcurrentBuilds() //each branch has 1 job running at a time
}
...
...
}
Run Code Online (Sandbox Code Playgroud)
https://jenkins.io/doc/book/pipeline/syntax/#options
[更新09/30/2017]
您可能还想查看声明性管道的步骤lock和 milestone步骤.
锁
我们现在依靠"可锁定资源"插件和锁定步骤来控制这一点,而不是试图限制使用该阶段的作业的并发构建数量.锁定步骤将并发性限制为单个构建,并且在指定并发性受限的位置时提供了更大的灵活性.
stage('Build') {
doSomething()
lock('myResource') {
echo "locked build"
}
}
Run Code Online (Sandbox Code Playgroud)
里程碑
里程碑步骤是替换最初用于舞台的功能的最后一个难题,并为处理作业的并发构建添加了更多控制.锁定步骤限制在管道的一部分中并发运行的构建数,而里程碑步骤确保作业的旧构建不会覆盖较新的构建.
stage('Build') {
milestone()
echo "Building"
}
stage('Test') {
milestone()
echo "Testing"
}
Run Code Online (Sandbox Code Playgroud)