如何在没有排队的情况下使用管道高效地运行并行作业

时间:2019-05-24 12:50:56

标签: jenkins jenkins-pipeline jenkins-plugins jenkins-groovy

我有一个类似下面的管道。

    stage('Build, run, report') {
        for (int i = 0; i < components.size(); ++i){
            builds[i] = {
                stage('Build') {
                    build job: 'Build', parameters: [string(name: 'Component', value: component)]
                }

                stage('Run') {
                   build job: 'Run', parameters: [string(name: 'Component', value: component)]
                }

                stage('Reporting') {
                   'Reporting', parameters: [string(name: 'Component', value: component)]
                }
        }
        }
        parallel builds

“组件”是来自管道参数的列表。我想根据组件的数量运行相同的流程。

我只有一个从属节点,带有4个执行程序。如果我有10个组件,则4个组件将立即开始运行,其他6个组件将排队并等待执行程序释放。

我可以从列表中获得50个以上的comonents,并且队列中的somany看起来并不好,而且我不认为这是正确的方法。(我怀疑构建可能会有限制也在队列中。)

我们是否有办法暂停并行触发,直到执行器/从属可用,并在执行器/从属获得空闲时逐一恢复?

还是比在管道中并行运行更好的方法来处理它?<​​/ p>

1 个答案:

答案 0 :(得分:0)

我自己还没有尝试过,但是也许您可以考虑在每4个组件计数之后就使用静默期进行构建工作。