更改Jenkins参数变量值

更改Jenkins参数变量值,jenkins,continuous-integration,jenkins-pipeline,jenkins-plugins,jenkins-groovy,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 &q

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

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


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

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

参数的输入值是多少?预期输出是什么?@zett42问题已编辑。输入和预期输出随您的代码示例一起给出,我现在得到一个不同的异常:“groovy.lang.MissingPropertyException:没有这样的属性:bb for class:WorkflowScript”@zett42很抱歉,现在已经更正了参数的输入值是多少?预期输出是什么?@zett42问题已编辑。您的代码示例现在提供了输入和预期输出,我现在得到了一个不同的异常:“groovy.lang.MissingPropertyException:没有这样的属性:bb for class:WorkflowScript”@zett42很抱歉,现在已经更正了