更改 Jenkins param 变量值

azh*_*har 2 continuous-integration jenkins jenkins-plugins jenkins-groovy jenkins-pipeline

我是新的詹金斯管道。我想在运行时更改用户给出的参数值。下面给出的是我想要实现的脚本。

pipeline{
agent any
parameters{
    string(name: 'Foo', defaultValue: 'abc-123, xyz-345' , description: '', trim: true)
}
stages{
    stage('Change'){
        steps{
            script{
                println "Foo"
                println Foo
                env.Foo = Foo.split(",").collect{val ->
                    return val.split("-")[0]
                }.join(",")
                
            }
        }
    }
  }
}
node{
   params.Foo = env.Foo
   println params.Foo
}
Run Code Online (Sandbox Code Playgroud)

当我尝试上面的例子时,我得到这个异常java.lang.UnsupportedOperationException

有办法解决这个问题吗?

编辑

输入:abc-123、xyz-345

预期输出:abc、xyz

Mar*_*atC 6

parameters是 UnmodifyingCollection 类的实例java,因此无法更改。

但是,环境变量可以更改,因此您可能想尝试以下操作:

stages{
    stage('Change'){
        steps{
            script{
                println "Foo"
                println params.Foo // makes clear what you are referring to
                env.FOO = params.Foo.split(",").collect{val ->
                    return val.split("-")[0]
                }.join(",")

            }
        }
    }
  }
}


node {
   // don't touch params: params.Foo = env.Foo

   // use only env.FOO to address your modified params
   println "env.FOO is ${env.FOO}"
}
Run Code Online (Sandbox Code Playgroud)