Jenkins声明式Pipeline使用HTTP Request插件上传本地zip文件如何实现?
正确实现方式
你当前的写法存在误区:multipart/form-data 格式的文件上传不能手动拼接 requestBody 实现,Jenkins HTTP Request 插件已内置专门的文件上传参数,直接调用对应配置即可,修正后代码如下:
def response = httpRequest url: "https://cloud.tenable.com/compliance/export", customHeaders: [[name: 'X-ApiKeys', value: "${ACCESS_KEY}"]], httpMode: 'POST', acceptType: 'APPLICATION_JSON', // 上传文件专用配置 uploadFile: 'test.zip', multipartName: 'Filedata'
配置说明
uploadFile:指定要上传的文件路径,因为test.zip在当前Pipeline工作区根目录,直接填写文件名即可multipartName:对应Tenable文件上传接口要求的文件表单字段名,即你原来要填的Filedata- 不需要手动配置
contentType参数,插件会自动生成带边界值的合法multipart/form-data请求头
注意事项
- 如果你用的是分布式Jenkins集群,要确保当前执行请求的节点工作区根目录下确实存在test.zip文件
- 建议不要硬编码
ACCESS_KEY,可以把密钥存在Jenkins凭据管理中,通过凭据变量调用避免密钥泄露
内容的提问来源于stack exchange,提问作者HC LW
相关产品推荐
相关产品推荐

