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

如何调用带可选参数的Groovy共享库并指定任意参数值

Jenkins共享库函数按需指定参数解决方案

Groovy没有Python式的位置参数直接指定名称调用的语法,Jenkins共享库场景下通用的实现方案如下:

方案1(推荐):调整函数为Map参数形式(Jenkins共享库标准实践)

修改你共享库中的函数定义,用Map接收所有参数,单独设置每个参数的默认值:

def doRequest(Map args) {
    // 按优先级赋值:调用时传入的值优先,无传入则取环境变量作为默认值
    def moduleName = args.moduleName ?: env.MODULE_NAME
    def environment = args.environment ?: env.ENVIRONMENT
    def repoName = args.repoName ?: env.REPO_NAME
    
    // 原有业务逻辑保持不变
    <some code goes here>
}

调用时可以按需指定任意参数,不需要的参数不用传:

  • 仅指定repoName参数
script {
    sendDeploymentStatistics.doRequest repoName: repo_name
}
  • 同时指定moduleName和repoName参数
script {
    sendDeploymentStatistics.doRequest moduleName: service_name, repoName: repo_name
}

方案2:不修改原有函数定义的兼容写法

如果不想调整现有函数定义,可以利用Groovy默认参数的特性,显式给不需要修改的前置参数传null触发默认值逻辑:

script {
    // 前两个参数传null触发默认值,仅给第三个参数repoName赋值
    sendDeploymentStatistics.doRequest null, null, repo_name
}

注意:该方案仅适用于业务逻辑中不会主动传null作为参数有效值的场景,否则会和默认值逻辑冲突,因此更推荐使用方案1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:54:02