Teamcity上传zip制品到Artifactory及版本配置、故障排查问题咨询
Teamcity 与 Artifactory 集成问题解决方案
1. 正确推送zip文件至Artifactory的操作方法
首先排查当前配置的核心问题:
- 确认zip文件生成路径和spec中pattern的匹配性:你当前spec配置的匹配规则是
test/*.zip,该路径是相对于Teamcity构建工作根目录(即%teamcity.build.checkoutDir%)的相对路径,你可以在构建步骤中新增一行shell/cmd命令(Linux执行ls -l %teamcity.build.checkoutDir%/test,Windows执行dir %teamcity.build.checkoutDir%\test),确认构建运行时该目录下确实存在zip格式文件。 - 校验Artifactory仓库限制:确认当前集成使用的账号对
basis-apps路径所属的仓库有上传权限,同时联系Artifactory管理员确认仓库没有配置zip格式文件的上传拦截规则。 - 调整spec配置增强兼容性:可以给pattern添加绝对路径前缀,修改为如下配置:
{ "files": [ { "pattern": "%teamcity.build.checkoutDir%/test/*.zip", "target": "basis-apps/", "flat": true } ] }
添加flat: true参数可以确保zip文件直接上传到target目录,不会额外嵌套路径。
2. 为zip文件添加版本标识的实现方式
有两种常用方案可选:
- 文件名嵌版本:在打包zip的步骤中直接使用Teamcity内置的构建号变量
%build.number%生成带版本的文件名,例如打包输出为test/xxx-app-%build.number%.zip,上传后文件名自带版本标识。 - 上传时附加版本属性/路径:可以在spec中配置target路径带版本号,或者给文件附加自定义属性,示例配置如下:
{ "files": [ { "pattern": "test/*.zip", "target": "basis-apps/%build.number%/", "properties": { "version": "%build.number%", "build_id": "%teamcity.build.id%" } } ] }
该配置会把zip文件上传到对应版本号的子目录下,同时给文件附加版本属性,可在Artifactory中通过属性快速筛选对应版本的文件。
3. 上传成功但Artifactory未收到文件的日志排查路径
Teamcity侧日志
- 构建详细日志:将构建日志级别调整为DEBUG后重新运行构建,查看Artifactory插件执行段的输出,重点确认是否有
0 files matched/0 files uploaded的记录,90%以上的此类问题都是pattern未匹配到任何文件,插件会返回执行成功但实际上传0个文件。 - 插件专属日志:登录Teamcity服务器,查看安装目录下
logs/teamcity-artifactory-plugin.log文件,该日志会打印所有和Artifactory交互的请求参数、返回结果,可确认是否请求正常发送到Artifactory。
Artifactory侧日志
- 请求日志:查看Artifactory节点
var/log/artifactory-request.log,搜索Teamcity服务器IP对应的请求记录,确认是否有上传请求到达、返回的状态码是多少(403为权限不足、404为路径不存在、201为上传成功)。 - 服务日志:查看
var/log/artifactory-service.log,搜索对应时间点的报错,确认是否有文件格式拦截、上传后自动清理的相关记录。 - 审核日志:在Artifactory后台管理界面的审核日志中,搜索对应时间的操作记录,确认文件是否上传成功后被自动规则删除。
内容的提问来源于stack exchange,提问作者user2535599
相关产品推荐
相关产品推荐

