更改 Jenkins 参数变量值



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

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
}

当我尝试使用上述示例时,我得到此异常java.lang.UnsupportedOperationException

有没有办法解决这个问题?

编辑

输入: ABC-123, XYZ-345

预期输出: ABC, XYZ

parametersjava的UnmodifiableCollection类的一个实例,所以它不能被更改。

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

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}"
}

最新更新