使用Groovy更改Jenkins中的作业参数值

发布于 2025-02-01 23:22:16 字数 539 浏览 3 评论 0原文

我在詹金斯管道中的每个参数有一个默认值,现在我只想替换其中存在的一个参数,如何使用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())
}

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?

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

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())
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不必你懂 2025-02-08 23:22:16

这可以通过不同的方式解决,探索了一些方法,并找到了修改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));
}

参数变量将具有指定的作业的所有构建属性,我正在创建NewParams列表并将默认值添加到其中。添加后,我要删除要替换的一个,然后在同一密钥中添加一个新值。这是一个有效的解决方案,甚至没有修改Jenkins作业的作业配置。

This can be solved differently, explored some ways and found the way to modify an existing build property in 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. 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文