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

Jenkins触发下游Job时能否在parameters中传入stashed file参数

Jenkins触发下游Job时传递stashed file参数的说明

build步骤的parameters[]配置项不支持直接传入stashed file类型的参数。
stashed file是Jenkins Pipeline执行stash命令后生成的临时文件归档,存储在Jenkins控制器或对应agent的临时工作空间缓存中,不属于parameters支持的基础参数类型(仅支持字符串、布尔值、文本、密码等可序列化的基础类型),直接配置会被忽略或抛出参数类型不匹配的异常。

可行的替代实现方案

  • 同agent运行场景:上下游Job配置为在同一个agent节点上执行,上游Job完成stash操作后,仅需要将stash名称作为字符串参数传递给下游,下游直接通过对应名称执行unstash即可读取文件,无需传递文件本身。
  • 跨agent运行场景:将需要传递的文件上传到Jenkins内置制品库、共享存储或对象存储中,把文件的访问路径、拉取命令作为字符串参数传递给下游Job,下游执行对应拉取逻辑获取文件即可。
  • 高频使用场景:可以通过Jenkins共享库封装通用的跨Job stash传递方法,本质是将stash的归档文件上传到固定共享存储,传递时仅传存储标识,下游自动完成拉取、解包操作。

代码示例

错误写法(不生效)

// 上游Job错误示例,stashed file无法直接作为参数传递
build job: 'your-downstream-job', parameters: [
  string(name: 'ENV', value: 'prod'),
  // 以下配置不生效
  stashedFile(name: 'APP_BINARY', value: stash(name: 'binary', includes: '*.jar'))
]

正确写法(同agent场景)

// 上游Job
pipeline {
  agent { label 'common-worker' }
  stages {
    stage('打包并暂存产物') {
      steps {
        sh 'mvn clean package'
        stash name: 'app-binary', includes: 'target/*.jar'
        // 仅传递stash名称作为参数
        build job: 'your-downstream-job', parameters: [
          string(name: 'STASH_ID', value: 'app-binary')
        ]
      }
    }
  }
}
// 下游Job
pipeline {
  agent { label 'common-worker' } // 和上游使用同一个节点标签,保证工作空间缓存可复用
  parameters {
    string(name: 'STASH_ID', description: '上游传递的暂存产物ID')
  }
  stages {
    stage('读取上游产物') {
      steps {
        unstash params.STASH_ID
        sh 'java -jar target/*.jar'
      }
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:39:05