如何使用作业名称列表从管道中构建多个Jenkins作业

时间:2019-05-09 17:49:51

标签: jenkins jenkins-pipeline

我正在尝试在管道作业中调用一组现有的詹金斯作业。我有所有职位名称的列表。我试图循环浏览作业名称并构建每个作业,但是即使作业已成功触发,在管道末尾也会出现错误。

使用Jenkins 2.164.2,管道2.6

如果我同时使用脚本/声明的管道,则错误相同。 作业并行触发,但我在管道末尾遇到异常,并且管道作业失败原因:java.io.NotSerializableException: hudson.model.Hudson

Jenkins日志:

  

[Pipeline]并行
[Pipeline] {(分支:a)
[Pipeline] build(构建a)
计划项目:a
[Pipeline] {   (分支:b)
[管道]构建(建筑物b)
计划   项目:b
[管道]}
在分支b中失败
[管道]}   
分支
[Pipeline]}
[Pipeline] //脚本失败   
[管道]}
[管道] //阶段
[管道]   }
[管道] //节点
[管道]管道末端
  发生的异常:在字段中
  对象中的com.cloudbees.groovy.cps.impl.BlockScopeEnv.locals
  com.cloudbees.groovy.cps.impl.BlockScopeEnv@409a0d4f ...原因:
  java.io.NotSerializableException:hudson.model.Hudson at
  org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:926)   ...位于java.lang.Thread.run(Thread.java:748)完成:失败


@NonCPS
def getBranches(def JobNamesList) {
    def branches = [: ]
    JobNamesList.each() { jobName ->
        branches[jobName] = {
            build job: jobName
        }
    }
    return branches
}

pipeline {
    agent any
    stages {
        stage('Get Services') {
            steps {
                script {                
                jobNames = ['a','b']
                parallel getBranches(jobNames)
                }
            }
        }
    }
}

0 个答案:

没有答案