首页 > 解决方案 > 更改 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

标签: jenkinscontinuous-integrationjenkins-pipelinejenkins-pluginsjenkins-groovy

解决方案


parametersjavaUnmodifiableCollection 类的一个实例,因此不能更改。

然而,环境变量是可以改变的,所以你可能想试试这个:

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

推荐阅读