我正在设置这样的数组

def tags = [
    "zookeeper",
    "postgres",
    "postgres-maps",
    "kudu-master",
    "redis-master",
    "consul",
    "dcos-bootstrap"]

我试图将它传递给一个函数
 run_linux("${tags}")

我的功能看起来像
def run_linux(tags) {
  def tasks = [:]

  for (i = 0; i < tags.size(); i++) {
    def tag = "${tags[i]}"
    tasks["${tag}"] = {
       stage ("${tag}"){
            sh ..
       }
    }

所以它在 jenkins 中的样子是这样的
[Pipeline] [[] stage
[Pipeline] [[] { ([)
[Pipeline] [z] stage
[Pipeline] [z] { (z)
[Pipeline] [o] stage
[Pipeline] [o] { (o)
[Pipeline] [k] stage
[Pipeline] [k] { (k)

它似乎将传入的内容视为字符串而不是数组。

最佳答案

您确实将一个字符串传递给 run_linux 函数 - 特别是字符串 "${tags}" ,其中 tags 通过字符串插值被强制转换为字符串。

相反,尝试像这样调用它: run_linux(tags)

关于Jenkins Pipeline Groovy 传入数组以发挥作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46433924/

10-13 05:19