如何通过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
相关产品推荐
相关产品推荐

