TeamCity中SSH Upload未成功部署依赖工件问题
问题分析
从日志可以明确看到:
- 依赖工件已成功取回2个文件,且被下载到构建代理的
/tmp目录 - 但SSH Upload执行时提示
Uploaded [0] files for [] pattern,说明步骤未找到匹配的文件
核心原因:SSH Upload步骤默认在构建工作区目录(日志中显示为/opt/buildagent/work/245575fe8c01221b)查找待上传文件,而你将工件下载到了/tmp,两者路径不匹配,导致无法找到目标文件。
解决方案
方案1:修改工件下载路径到工作区
在工件依赖配置中,将目标路径改为当前工作区(用.表示):
*.deb => . *.rpm => .
这样工件会直接下载到构建工作区,SSH Upload步骤无需额外配置即可找到这些文件。
方案2:在SSH Upload中指定完整源路径
如果必须保留下载到/tmp的配置,在SSH Upload的「源路径」字段填写完整的文件路径:
/tmp/*.deb /tmp/*.rpm
此配置会让步骤直接去/tmp目录查找待上传的包文件。
方案3:使用构建代理临时目录(不推荐)
可将工件下载到构建代理的临时目录(日志中的/opt/buildagent/temp/buildTmp),但该目录会在每次构建前被清空,稳定性较差,不建议采用。
日志关键片段验证
工件下载路径确认:
[21:54:55] [Resolving artifact dependencies] Destination directory [/tmp] cleaned
[21:54:55] [Resolving artifact dependencies] Downloading files from <Xenoss.test / Build job of deb/rpm packages, build #0.0.2 [id 15836]> for pattern [*.deb => /tmp *.rpm => /tmp]
[21:54:55] [Resolving artifact dependencies] 2 files retrieved
SSH Upload未找到文件的证据:
[21:54:56] [Step 1/1] Uploaded [0] files for [] pattern
内容的提问来源于stack exchange,提问作者Rus Zzzeta

