You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Groovy修改另一个Jenkins pipeline的指定参数且不覆盖其余参数

解决方案:增量修改Jenkins Pipeline指定参数

你之前使用的Job DSL是声明式全量覆盖配置模式,所以会清空目标任务的原有参数。要实现保留其他参数仅修改指定项的需求,可以调用Jenkins原生API做增量更新,具体实现如下:

可直接运行的Groovy脚本

import jenkins.model.Jenkins
import hudson.model.ParametersDefinitionProperty
import hudson.model.StringParameterDefinition

// 目标任务完整名称,多文件夹层级需写全路径,例如 "folderA/Job-B"
def targetJobName = "Job-B"
// 要修改的参数名、新值、描述
def targetParamKey = "KEY"
def targetParamNewValue = "NEW_VALUE"
def targetParamDescription = "" // 可保留原有描述,也可自定义

def jenkins = Jenkins.get()
def targetJob = jenkins.getItemByFullName(targetJobName)
if (!targetJob) {
    throw new Exception("未找到目标任务:${targetJobName}")
}

// 获取目标任务现有参数配置
def paramProperty = targetJob.getProperty(ParametersDefinitionProperty.class)
def newParamList = []
boolean paramExists = false

if (paramProperty) {
    // 遍历现有参数,仅修改目标项,其余参数原样保留
    paramProperty.getParameterDefinitions().each { param ->
        if (param.getName() == targetParamKey) {
            newParamList.add(new StringParameterDefinition(targetParamKey, targetParamNewValue, targetParamDescription))
            paramExists = true
        } else {
            newParamList.add(param)
        }
    }
}

// 目标参数不存在时自动新增
if (!paramExists) {
    newParamList.add(new StringParameterDefinition(targetParamKey, targetParamNewValue, targetParamDescription))
}

// 新参数列表写回任务配置并保存
targetJob.removeProperty(ParametersDefinitionProperty.class)
targetJob.addProperty(new ParametersDefinitionProperty(newParamList))
targetJob.save()
jenkins.reload()

println "参数${targetParamKey}修改完成,所有原有参数已保留"

注意事项

  • 脚本可直接在Jenkins脚本控制台运行,也可嵌入到其他Pipeline的script块中执行
  • 执行脚本的身份需要拥有目标任务的「配置」权限,在Pipeline中运行时需要提前在Jenkins脚本安全配置中放行相关API调用
  • 如需修改其他类型参数,把StringParameterDefinition替换为对应参数类即可:
    • 布尔参数:BooleanParameterDefinition
    • 选项参数:ChoiceParameterDefinition
    • 密码参数:PasswordParameterDefinition

内容的提问来源于stack exchange,提问作者Adnrey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 19:15:08