使用groovy更改jenkins中的作业参数值

l7mqbcuq  于 2022-11-01  发布在  Jenkins
关注(0)|答案(1)|浏览(285)

我在Jenkins管道中为每个参数都有一个默认值,现在我只想替换其中一个参数,如何使用groovy来实现呢?
英译汉我已经找得筋疲力尽了,但似乎什么也不管用
我尝试了下面的代码,它工作正常,没有任何错误,但正在调度的作业没有更新的参数(env_name)值,而是使用默认值

def getCause(){
return new CauseAction(new hudson.model.Cause.UserIdCause('admin-user'))
}

def job = Jenkins.instance.getItemByFullName('JobName');
if(job && job.isBuildable()){
   def newParameter = new StringParameterValue('env_name', 'dev') 
   job.replaceAction(new ParametersAction(newParameter))
   def buildResult = job.scheduleBuild2(0, getCause())
}
gywdnpxw

gywdnpxw1#

这可以用不同的方法解决,探索了一些方法,并找到了在jenkins中修改现有构建属性的方法。

def formParam(job){
    ParametersDefinitionProperty params = job.getProperty(ParametersDefinitionProperty.class);
    List<ParameterValue> newParams = new ArrayList<>();
    params.getParameterDefinitions().each{param -> newParams.add(param.getDefaultParameterValue())};
    newParams.removeIf{param -> param.getName().contains("env_name")};
    newParams.add(new StringParameterValue("env_name","dev",""))
    return newParams;
}

def main(){
    def job = Jenkins.instance.getItemByFullName('JobName');
    def paramlist = formParam(job);
    def future = job.scheduleBuild2(0, getCause(), new ParametersAction(paramlist));
}

params变量将指定作业的所有构建属性,我创建了一个newParams列表,并将默认值添加到其中。添加后,我将删除要替换的参数,然后将新值添加到同一个键。这是一个有效的解决方案,它甚至不会修改jenkins作业的作业配置。

相关问题