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

如何通过CURL在Jenkins构建完成后上传文件至构建工作区

问题描述

我有一个Jenkins流水线,通过SSH在外部服务器上运行若干Docker容器,会监控这些容器直至全部完成。我需要每个容器都能向Jenkins构建上传文件,原本以为可通过如下CURL请求实现:

curl -v -X POST --user username:api-key-here --form "file=@/path/to/local/file.txt" http://my-jenkins-url.com/job/job%20name/63/ws

其中“63”为构建编号。
Jenkins版本:2.454

CURL返回提示上传成功,但Jenkins工作区中并未出现该文件,返回信息如下:

Accept: /
Content-Length: 189
Content-Type: multipart/form-data; boundary=------------------------bfba94ff096e5f3f

  • We are completely uploaded and fine
解决方法
  • 错误根源:你用的/ws路径是Jenkins工作区的网页浏览端点,不是文件上传的API接口,所以请求返回成功但实际未将文件写入工作区。
  • 正确上传命令:改用Jenkins的工件上传API接口/uploadArtifact,修正后的CURL命令如下:
    curl -v -X POST --user username:api-key-here -F "file=@/path/to/local/file.txt" http://my-jenkins-url.com/job/job%20name/63/uploadArtifact
    
  • 指定子目录上传:如果需要将文件传到工作区的子目录,可添加remoteFile参数指定路径,例如要传到ws/reports/file.txt:
    curl -v -X POST --user username:api-key-here -F "file=@/path/to/local/file.txt" -F "remoteFile=reports/file.txt" http://my-jenkins-url.com/job/job%20name/63/uploadArtifact
    
  • 权限验证:确保使用的Jenkins账号拥有该任务的构建/上传工件权限,API密钥需正确绑定到有权限的账号。
  • 上传后验证:可通过Jenkins构建页面的“工作区”或“工件”标签查看文件,也可以用以下API查询工作区内容:
    curl --user username:api-key-here http://my-jenkins-url.com/job/job%20name/63/ws/
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 22:51:09