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

如何将Jenkins的file参数值传递给下游流水线任务

你提到的JENKINS-27413号缺陷目前仍未完全修复,核心问题是Jenkins流水线的build步骤原生不支持文件参数的序列化传输,直接构造FileParameterValue对象的写法会频繁出现空文件、路径读取失败、权限报错等问题。

以下是3种可行的解决方案,按稳定性从高到低排序:

方案1:使用stash/unstash传递文件(同Jenkins实例最推荐)

这是官方推荐的替代方案,完全避开文件参数的缺陷:

  • 上游流水线代码:
// 先把目标csv文件 stash 起来
stash name: "test-csv", includes: env.filepath
// 调用下游任务
build job: "DownstreamJobName",
      parameters: [
          string(name: 'Releases', value: "1.2.9"),
          string(name: 'UserEmail', value: "testemail")
      ],
      wait: true
  • 下游流水线开头添加unstash逻辑即可拿到文件:
node {
    // 拉取上游stash的csv文件
    unstash "test-csv"
    // 后续直接读取对应路径的csv文件即可
}

方案2:转Base64字符串传递(兼容性最高,跨实例/跨节点都适用)

如果是跨Jenkins实例或者不想用stash,可以把文件内容转成Base64编码当字符串参数传递,下游解码还原文件:

  • 上游流水线代码:
// 读取csv文件并转Base64
def csvContent = readFile env.filepath
def csvBase64 = csvContent.bytes.encodeBase64().toString()
// 调用下游任务
build job: "DownstreamJobName",
      parameters: [
          string(name: 'Releases', value: "1.2.9"),
          string(name: 'testCsvBase64', value: csvBase64),
          string(name: 'UserEmail', value: "testemail")
      ]
  • 下游流水线还原文件代码:
// 解码Base64写入csv文件
def csvContent = new String(params.testCsvBase64.decodeBase64())
writeFile file: "test.csv", text: csvContent
// 后续正常使用test.csv即可

方案3:修正FileParameterValue写法(仅适合必须用文件参数的场景)

如果下游任务必须接收文件类型参数,可以调整写法,需要提前安装2.15及以上版本的Pipeline: Build Step插件:

build job: "DownstreamJobName",
      parameters: [
          string(name: 'Releases', value: "1.2.9"),
          base64File(name: "test.csv", file: "${env.WORKSPACE}/${env.filepath}"),
          string(name: 'UserEmail', value: "testemail")
      ]

注意事项:

  • 下游任务必须提前定义好名为test.csv的文件类型参数
  • 上下游任务需要运行在同一个节点,否则会出现文件找不到的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:24:01