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

如何在Jenkins Job Builder中将变量传入Pipeline脚本?

解决Jenkins Job Builder中Groovy脚本变量不替换的问题

问题出在你使用的!include-raw指令上——它只是原样导入文件内容,不会对文件里的{var1}这类变量做插值替换。要实现变量传递,需要调整两个地方:

1. 替换文件导入指令

把job-template里的!include-raw改成!include-raw-escape,这个指令会先对导入的Groovy文件内容执行JJB的变量替换,再作为Pipeline DSL内容使用。

2. 在job-template中声明变量

需要在job-template里明确声明要接收的变量,让JJB知道需要把这个变量传递给模板内容。

修改后的完整配置

my_definition.yml

- project:
    name: my-project
    jobs:
        - my-jobs

- job-group:
    name: my-jobs
    jobs:
        - "{job-name}_job":
            job-name: '1'
            file-path: "./path/to/my_job.groovy"
            var1: "smth"
- job-template:
    name: "{job-name}_job"
    project-type: pipeline
    concurrent: true
    var1: ""  # 声明模板变量,可设默认空值
    dsl: !include-raw-escape: "{file-path}"  # 替换为支持变量替换的导入方式

my_job.groovy

不需要修改,保持原内容即可:

pipeline {
    agent any
    stages {
        stage('Example') {
            steps {
                echo '{var1}'
            }
        }
    }
}

这样重新生成Jenkins任务后,Pipeline脚本里的echo '{var1}'就会被替换成echo 'smth'了。

补充说明:如果你的Groovy脚本里包含JJB模板语法(比如{% ... %}),可以改用!include指令,但!include-raw-escape更适合只需要替换{变量}的场景,避免Groovy语法和JJB模板语法冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 07:27:47