我对groovy的了解并没有超出我对Jenkinsfiles的了解。我试图弄清楚是否有可能在Jenkinsfile中定义一个映射,然后可以以“ for循环”方式应用该映射。
我有这些变量:
mymap = { "k1": "v1" "k2": "v2" "k3": "v3" }
stage我的Jenkinsfile中有一个如下所示的:
stage
stage('Build Image') { withCredentials([[<the credentials>]) { sh "make build KEY={k1,k2,k3} VALUE='{v1,v2,v3}'" }
有没有办法Build Image为每个配对做一个舞台mymap?我的尝试还没有运气。
Build Image
mymap
Jenkins文档中有一些类似的用户提交的示例。
这样的事情应该起作用:
def data = [ "k1": "v1", "k2": "v2", "k3": "v3", ] // Create a compile job for each item in `data` work = [:] for (kv in mapToList(data)) { work[kv[0]] = createCompileJob(kv[0], kv[1]) } // Execute each compile job in parallel parallel work def createCompileJob(k, v) { return { stage("Build image ${k}") { // Allocate a node and workspace node { // withCredentials, etc. echo "sh make build KEY=${k} VALUE='${v}'" } } } } // Required due to JENKINS-27421 @NonCPS List<List<?>> mapToList(Map map) { return map.collect { it -> [it.key, it.value] } }