如何避免AppCenter集成Detox时出现重复构建?
解决AppCenter与Detox集成时重复构建及流程终止问题
我完全懂你的痛点——两次构建不仅浪费时间,还容易混淆流程。下面是几个直接可行的方案,帮你实现「克隆代码→Detox构建→单元测试→Detox测试→结束」的理想流程,同时避免重复构建:
1. 先禁用AppCenter的默认构建流程
这是解决重复构建的核心:既然你已经通过Detox完成构建,就不需要让AppCenter再跑一遍默认构建流程了。操作步骤如下:
- 打开你的AppCenter项目,进入「Build」页面
- 选择你配置了脚本的目标分支,点击「Edit build configuration」
- 在构建配置里找到「Build」选项,取消勾选它
- 保存配置后,AppCenter就只会执行你在
appcenter-pre-build.sh里定义的脚本,不会再触发自身的构建流程
2. 优化appcenter-pre-build.sh脚本,确保失败即终止
在脚本里加入错误检查机制,同时明确控制流程的结束,这样就能实现「Detox构建失败则直接终止,成功则跑完测试就结束」的效果。修改后的脚本示例:
#!/bin/bash set -e # 关键:任何命令执行失败时,立即终止整个脚本 # 执行Detox构建 detox build --configuration ios.sim.release # 运行单元测试(请根据你的项目实际命令调整) xcodebuild test -workspace YourApp.xcworkspace -scheme YourAppScheme -destination 'platform=iOS Simulator,name=iPhone 15' -quiet # 运行Detox测试 detox test --configuration ios.sim.release --cleanup # 主动终止流程,避免AppCenter执行后续不必要的步骤 exit 0
set -e的作用:只要脚本里任何一步命令(比如Detox构建)返回非0的错误码,脚本就会立刻停止执行,整个AppCenter流程也会标记为失败,完全符合你说的「构建失败则无需继续」的逻辑。- 最后加
exit 0是为了在所有步骤都成功时,主动结束流程,不让AppCenter尝试执行其他默认步骤。
3. 关于你的疑问:Detox构建失败后是否无需再次构建?
完全正确!Detox构建的就是用于测试的应用包,如果这一步失败,后续的单元测试、UI测试都无法正常运行,AppCenter的默认构建也没有任何意义。用上面的set -e就能确保这种情况下直接终止流程,不会做无用功。
内容的提问来源于stack exchange,提问作者uioporqwerty
相关产品推荐
相关产品推荐

