使用Groovy脚本在声明性管道中循环项目数组

gj3fmq9x  于 2022-12-03  发布在  其他
关注(0)|答案(1)|浏览(147)

我是Jenkins管道的新手,您可以使用groovy声明性管道提供下面的内容,每个键都应该附加-D。
输入请求应为字符串'''name= ram id = 123 role = IT''',输出应为-Dname=ram -Did=123 -Drole=IT

pipeline{
    agent any
     parameters {
         text defaultValue:  '''name = ram id = 123 role = IT]''', description: 'employee details', name : 'details'
        }
  environment {
    emp_details = "${env.details}"  
}
      stage('build') {
        steps{ 
         script{
        echo "dislay details, ${emp_details }"
          for(e in emp_details){
            print e + ":" + emp_details[e])
            }
          } 
       } 
   } 
}

最终输出:-Dname=ram -Did=123 -Drole=IT
错误:没有这样的属性:[举类:java.lang.String
如果传递输入不正确,我们如何传递它呢?

bmp9r5qi

bmp9r5qi1#

你得到的是一个字符串而不是数组,所以首先,你需要创建一个可迭代的列表,并通过迭代来修改每个键。

pipeline {
    agent any
    parameters {
         text defaultValue:  '''[name = ram, id = 123, role = IT]''', description: 'employee details', name : 'details'
        }
  environment {
    emp_details = "${env.details}"  
}
    stages {
        stage('Hello') {
            steps{ 
              script{
                echo "dislay details, ${params.details}"
                def appendedString = ""
                // SInce it's a string we need get rid of [ and ] characters and then the spaces. 
                def lst = params.details.replaceAll("[^0-9a-zA-Z=,]+","").split(',')
                println lst
                for(e in lst){
                    print(e)
                    appendedString += "-D" + e + " ";
                    }
                println "Final String: " + appendedString;
                } 
           }
        }
    }
}

相关问题