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

如何通过Jenkins REST API触发含stashedFile参数的流水线并上传大文件

用Jenkins REST API触发带stashedFile参数的流水线(支持3-5MB文件)

针对你的需求,直接通过multipart/form-data格式的请求调用Jenkins的buildWithParameters端点即可,无需改用base64File(避免大小限制),具体步骤如下:

1. 处理CSRF保护(若启用)

如果Jenkins开启了CSRF保护,先获取Crumb:

curl -u "你的用户名:密码/API令牌" "https://你的Jenkins地址/crumbIssuer/api/json"

从返回结果里提取crumb和crumbRequestField,后续请求需要带上对应的Header。

2. 触发流水线并上传文件

用curl发起multipart请求,直接上传文件并触发流水线:

curl -u "你的用户名:密码/API令牌" \
  -H "Jenkins-Crumb: 刚才获取的Crumb值" \
  -F "你的stashedFile参数名=@本地文件路径" \
  -F "其他流水线参数名=参数值" \
  "https://你的Jenkins地址/job/你的流水线名称/buildWithParameters"

关键说明:

  • 把你的stashedFile参数名替换成流水线里定义的stashedFile类型参数的实际名称,比如流水线参数叫UPLOADED_FILE,这里就写UPLOADED_FILE=@/home/user/test.zip
  • 这种方式直接上传文件,不受base64File的100KB限制,只要Jenkins全局配置的文件上传上限大于5MB即可(默认Jenkins允许的上传大小远高于这个值,可在「系统管理」→「全局安全配置」里调整Maximum file size)
  • 有其他流水线参数的话,用-F "参数名=值"追加即可

3. 流水线中使用上传的文件

流水线里直接用unstash命令取出文件:

pipeline {
  agent any
  parameters {
    stashedFile(name: 'UPLOADED_FILE', description: '用户上传的文件')
  }
  stages {
    stage('处理文件') {
      steps {
        unstash 'UPLOADED_FILE'
        // 文件会被放到当前工作区,文件名和原文件一致
        sh 'ls -l'
      }
    }
  }
}

额外提示

  • 用API令牌代替密码更安全,可在Jenkins个人设置里生成
  • 如果用Python/Node.js等脚本实现,要使用支持multipart/form-data的请求库(比如Python的requests库的files参数),不要手动编码文件内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 15:02:46