从管道脚本调用 jenkins 作业

时间:2021-06-28 12:43:46

标签: jenkins

在我的主管道作业中,我有一组值,每个值我都需要触发另一个作业

  def map = [FRA1: "192.168.1.1", DEL: "192.168.1.2", NYC: "192.168.1.3"]
     for (element in map) {
                echo "${element.key} ${element.value}"
                stage("Triggering another job- ${element.key}")            
                build job: 'testjobcheck', parameters: [string(name: 'DC-NAME', value: 
                "${element.value}")
                 ]
              }

但得到以下异常

an exception which occurred:
    in field com.cloudbees.groovy.cps.impl.BlockScopeEnv.locals
    in object com.cloudbees.groovy.cps.impl.LoopBlockScopeEnv@71f4bf38
    in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
    in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@2a24a0f
    in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
    in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@5863a030
    in field com.cloudbees.groovy.cps.impl.CpsClosureDef.capture
    in object com.cloudbees.groovy.cps.impl.CpsClosureDef@df1925c
    in field com.cloudbees.groovy.cps.impl.CpsClosure.def
    in object org.jenkinsci.plugins.workflow.cps.CpsClosure2@4ab0695
    in field org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.closures
    in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@107c4dba
    in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@107c4dba
Caused: java.io.NotSerializableException: java.util.LinkedHashMap$Entry
    
    

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

JENKINS-49732。 当管道尝试保存(序列化)当前状态时,java.util.LinkedHashMap$Entry 出现序列化失败。

作为一种解决方法,您可以使用:

def map = [FRA1: "192.168.1.1", DEL: "192.168.1.2", NYC: "192.168.1.3"]
map.each { key, value ->
    echo "${key} ${value}"
    stage("Triggering another job- ${key}"){           
       build job: 'testjobcheck', parameters: [string(name: 'DC-NAME',value: "${value}")]
    }
}

小事:当使用 stage 块时,将它与 {} 一起使用,因为不推荐使用不带块参数的“stage”步骤。