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

Jenkins pipeline是否支持类似C语言#include的预处理引入功能?

完全可以实现,Jenkins声明式Pipeline有两种常用方案可以实现类似C/C++ #include的参数复用效果:


方案1:使用load方法动态加载外部Groovy文件(轻量方案,无需额外配置)

适合仅需要复用参数、不想额外配置共享库的场景:

  1. 把你的参数定义单独存为一个Groovy文件,比如命名为common_job_params.groovy,内容调整为返回参数定义闭包的格式:
return {
    string(name: 'total_try_count', defaultValue: '1', description: '總的嘗試次數')
    choice(name: 'intermediate_dir', choices: '/var/lib/jenkins-slave/', description: '在放入 NAS 前保存視頻和字幕的目錄')
    booleanParam(name: 'unplanned_download', defaultValue: false, description: '臨時起意的下載?')
    // 其他原有参数保持不变
    choice(name: 're_pattern', choices: '', description: '正則表達式待匹配模式')
    booleanParam(name: 're_remove_spaces', defaultValue: true, description: '刪除文件名中的空格?')
    string(name: 're_new_pattern_prefix', defaultValue: '', description: '正則表達式新模式前綴')
}
  1. 将该文件放到所有关联任务都能访问的位置,比如统一存在代码仓库根目录、或者Jenkins节点的公共目录
  2. 在你的Pipeline中直接加载该文件即可:
pipeline {
    agent any
    // 直接引入外部参数定义
    parameters load('common_job_params.groovy')
    
    stages {
        // 原有Pipeline的业务逻辑完全不用修改
        stage('业务执行') {
            steps {
                echo '执行原有任务逻辑'
            }
        }
    }
}

方案2:使用Jenkins共享库封装(适合多任务大规模复用)

如果你的多个Pipeline还有其他公共逻辑需要复用,可以把参数定义封装成共享库的全局变量:

  • 在共享库的vars目录下创建commonPipelineParams.groovy,内容和上面的common_job_params.groovy完全一致
  • 所有关联任务配置好共享库引用后,直接调用即可:
parameters commonPipelineParams()

特殊场景适配

如果部分任务需要在公共参数基础上新增独有参数,可以用闭包拼接的方式实现:

parameters {
    // 先加载公共参数
    def commonParams = load('common_job_params.groovy')
    commonParams.delegate = delegate
    commonParams()
    // 再追加当前任务独有的参数
    string(name: 'task_unique_param', defaultValue: 'default', description: '当前任务专属参数')
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:06:04