我是新的詹金斯管道。我想在运行时更改用户给定的参数值。下面给出的是我要实现的脚本。
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
答案 0 :(得分:1)
parameters
是java
的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}"
}