如何在TeamCity中获取制品(.apk)的路径或名称?
从TeamCity获取制品路径/名称的实现方案
方法1:通过构建参数直接传递
在TeamCity的构建配置里,在生成.apk的步骤后新增一个命令行步骤,用脚本提取.apk的路径或名称,再存入TeamCity自定义参数:
- 以Linux构建机为例,shell脚本示例:
# 定位最新生成的.apk文件路径 APK_PATH=$(find /path/to/build/outputs -name "*.apk" -type f | sort -r | head -n 1) # 提取文件名 APK_NAME=$(basename "$APK_PATH") # 将值注入TeamCity环境变量,后续脚本可直接读取 echo "##teamcity[setParameter name='env.APK_PATH' value='$APK_PATH']" echo "##teamcity[setParameter name='env.APK_NAME' value='$APK_NAME']" - 之后你的自定义脚本直接读取
$APK_PATH或$APK_NAME环境变量即可,无需重复查找文件。
方法2:用REST API获取制品元数据
既然你了解REST API,可直接调用接口获取制品的名称和相对路径,无需下载:
- 调用构建制品列表接口:
http://<teamcity-server>/app/rest/builds/id:<build-id>/artifacts/children - 用
curl结合文本过滤快速提取.apk信息,示例:
若需要完整相对路径,可解析接口返回的XML/JSON响应(默认XML格式,可通过# 替换为你的TeamCity地址、构建ID和认证信息 curl -u 账号:密码 "http://teamcity.example.com/app/rest/builds/id:123/artifacts/children" | grep -oP '(?<=<name>).*\.apk(?=</name>)'?fields=*指定返回JSON)。
方法3:从构建日志中提取
如果你的构建步骤已经会输出.apk的生成路径,可通过API拉取构建日志后匹配提取:
curl -u 账号:密码 "http://teamcity.example.com/app/rest/builds/id:123/log" | grep -oP '/.*\.apk'
这种方法适合已有日志输出路径的场景,无需额外新增构建步骤。
内容的提问来源于stack exchange,提问作者Svyatoslav Volkov
相关产品推荐
相关产品推荐

