如何配置使未生成APK产物时Gradle构建主动失败
方案选择结论
两边都可以实现该需求,优先在Gradle侧配置,该方案不依赖特定CI平台能力,本地构建、其他CI环境复用代码时都能统一生效,一致性更好。
Gradle侧配置实现
直接给你执行的APK打包任务追加产物校验逻辑,校验不通过直接抛出构建异常,Gradle会自动返回非0退出码,Bamboo会直接识别为构建失败,配置示例如下:
// 替换为你实际执行的打包任务名,比如assembleDebug、assembleRelease等 tasks.named("assembleRelease") { doLast { // 替换为你项目实际的APK输出路径 def targetApk = layout.buildDirectory.file("outputs/apk/release/app-release.apk").get().asFile if (!targetApk.exists() || targetApk.length() == 0) { throw new GradleException("构建失败:未生成有效APK产物,预期路径:${targetApk.absolutePath}") } } }
配置完成后,只要执行对应打包任务,无论运行环境是本地还是Bamboo,没生成有效APK都会直接判定构建失败。
Bamboo侧兜底方案(临时使用)
如果暂时不方便修改项目Gradle配置,可在Bamboo流水线增加校验步骤:
- 在Gradle构建任务之后新增一个脚本任务
- 脚本内判断APK文件是否存在,不存在则返回非0状态码,Bamboo会自动判定任务失败,Shell脚本示例:
# 替换为Bamboo工作空间内实际的APK存放路径 APK_FILE="${bamboo.build.working.directory}/app/build/outputs/apk/release/app-release.apk" if [ ! -s "$APK_FILE" ]; then echo "构建异常:未检测到有效APK产物" exit 1 fi
该方案仅对当前Bamboo流水线生效,本地执行构建不会触发校验,仅适合临时兜底使用,长期还是建议把校验逻辑收敛到Gradle侧。
内容的提问来源于stack exchange,提问作者Alessandro Violante
相关产品推荐
相关产品推荐

