使用Spec文件的Bamboo Artifactory插件PUT请求build.name拼接+-+致404
Fixing 404 Error When Using Artifactory Plugin with Bamboo Specs (Duplicate
build.name with +-+ Syntax) 我之前也碰到过一模一样的坑!当在Bamboo里搭配Spec文件使用Artifactory插件时,生成的PUT请求里的build.name字段会被用+-+拼接,还出现了重复的build.name参数,直接导致Artifactory返回404错误。用curl复现的时候,只要手动删掉那些多余的+-+和重复的build.name,请求立刻就能正常执行。
问题复现的请求示例
PUT https://our-url.com/artifactory/generic-repo-local/base-artifacts/ansible/ansible_archive.tgz;vcs.revision=somerevisionstring;build.timestamp=1525095244921;build.name=test;build.name=AWS_...
我实测有效的解决方法
排查Spec文件的重复配置
检查你的Bamboo Spec代码,有没有在多个地方定义了build.name——比如同时在全局变量和Artifactory上传任务里设置了这个字段,插件会把两个值用+-+强制拼接,还会生成重复的参数项。删掉重复的定义,只保留一处即可(比如只在Artifactory任务里明确指定buildName参数)。临时应急:手动修正curl请求
如果暂时没法修改Spec文件,直接在curl请求里移除重复的build.name和+-+部分就行,比如修正后的请求:PUT https://our-url.com/artifactory/generic-repo-local/base-artifacts/ansible/ansible_archive.tgz;vcs.revision=somerevisionstring;build.timestamp=1525095244921;build.name=AWS_...这样Artifactory就能正确识别资源路径,不会返回404了。
升级插件版本根治问题
这个本质是旧版Artifactory Bamboo插件的bug,我之前升级到最新稳定版之后,重复拼接参数的问题直接消失了。建议去Bamboo的插件市场检查下有没有可用的插件更新,升级后就能彻底解决这个问题。
额外排查技巧
如果升级插件后还是有问题,可以打开Bamboo的调试日志,查看Spec文件生成任务时的参数传递流程,能快速定位到底是哪段配置导致了重复的build.name字段。
内容的提问来源于stack exchange,提问作者Mat Lambeth
相关产品推荐
相关产品推荐

