更改詹金斯参数变量值

时间:2020-05-14 05:28:23

标签: jenkins continuous-integration jenkins-pipeline jenkins-plugins jenkins-groovy

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

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

1 个答案:

答案 0 :(得分:1)

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