Jenkins归档多变体APK求助:paidA/paidB的Debug/Release APK归档失败
问题解决:Jenkins归档Android多变体APK失败
原脚本的核心问题
- 单独的
sh "cd ${env.WORKSPACE}"无意义:每个sh步骤是独立的Shell进程,目录切换不会延续到后续步骤。 - Zip命令参数错误:
-i builds没有匹配到实际APK文件,且未指向APK的真实生成路径(Android项目APK默认在app/build/outputs/apk/[变体]/目录下)。
两种可行解决方案
方案1:直接归档APK(无需手动打包Zip)
Jenkins的archiveArtifacts支持直接指定多个文件路径,无需手动压缩:
// 替换app为你的项目模块名,路径根据实际结构调整 archiveArtifacts artifacts: ''' app/build/outputs/apk/paidA/debug/*.apk, app/build/outputs/apk/paidA/release/*.apk, app/build/outputs/apk/paidB/debug/*.apk, app/build/outputs/apk/paidB/release/*.apk ''', onlyIfSuccessful: true
方案2:手动打包Zip后归档
如果必须打包成单个Zip文件,确保cd和zip在同一个Shell进程执行(用多行脚本包裹):
sh """ cd ${env.WORKSPACE} // 打包所有目标APK到builds.zip zip -r builds.zip \ app/build/outputs/apk/paidA/debug/*.apk \ app/build/outputs/apk/paidA/release/*.apk \ app/build/outputs/apk/paidB/debug/*.apk \ app/build/outputs/apk/paidB/release/*.apk """ archiveArtifacts artifacts: 'builds.zip', onlyIfSuccessful: true
注意事项
- 若你的项目主模块不是
app,替换为实际模块名称(如module-paid)。 - 可以通过Jenkins构建日志的
assemble步骤输出,或登录服务器查看目录,确认APK的准确路径。
内容的提问来源于stack exchange,提问作者IamVariable
相关产品推荐
相关产品推荐

