简体   繁体   English

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

[英]Change job parameter value in jenkins using groovy

I have a default values for each parameter in Jenkins pipeline, now I just want to replace one of the parameter present in it, how to do it using groovy?我对 Jenkins 管道中的每个参数都有一个默认值,现在我只想替换其中的一个参数,如何使用 groovy 来做到这一点?

I have searched exhaustedly but nothing seems to work :(我已经筋疲力尽地搜索了,但似乎没有任何效果:(

I tried the below code, it works without any errors but the job is getting scheduled is not having the updated parameter(env_name) value, It is having the default value我尝试了下面的代码,它没有任何错误,但是正在安排的作业没有更新的参数(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())
}

This can be solved differently, explored some ways and found the way to modify an existing build property in jenkins这可以通过不同的方式解决,探索了一些方法并找到了修改 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));
}

The params variable would have all the build properties of the job specified, I'm creating a newParams list and adding the default values to it. params 变量将具有指定作业的所有构建属性,我正在创建一个 newParams 列表并向其添加默认值。 After adding, I'm removing the one I'm going to replace, and then adding a new value to same key.添加后,我将删除我要替换的那个,然后为同一个键添加一个新值。 This is a working solution, it even does not modify the job config of the jenkins job.这是一个可行的解决方案,它甚至不会修改 jenkins 作业的作业配置。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM