3

我有一个多分支管道,我想确保它一次执行一个运行。我无法在代理上设置单个执行程序,因为其他作业可以在其他工作区中运行。

这是我的管道的脚本编写方式:

/* Job properties */
properties([
    disableConcurrentBuilds(),
    gitLabConnection('Gitlab'),
    [$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: true],
    [$class: 'JobRestrictionProperty'],
    [$class: 'ThrottleJobProperty', categories: [], limitOneJobWithMatchingParams: false, maxConcurrentPerNode: 1, maxConcurrentTotal: 1, paramsToUseForLimit: '', throttleEnabled: true, throttleOption: 'project'],
    [$class: 'JobInclusionJobProperty', jobGroupName: 'UrgentJobs', useJobGroup: false]
])

node( allowedNodes ) {

    def hadBuildSucceeded = false

    ws(custom_directory) {  

       .....
    }
}

当我一次推送三个分支时,该作业将同时开始运行三次,有什么建议说明为什么会失败?

4

1 回答 1

3

如果您需要推送许多不同的分支,它仍然会构建所有分支,此选项 (disableConcurrentBuilds) 只会将每个分支一次限制为一个构建,并将在创建初始作业后将任何提交的作业排队.

这似乎是一个错误(仍未解决,@ april2018):https ://issues.jenkins-ci.org/browse/JENKINS-35359

于 2018-04-23T07:56:07.293 回答