Xcode Cloud中如何在TestFlight上传成功后执行后置处理代码
可行方案说明
完全存在可落地的实现方案,可覆盖上传TestFlight后执行自定义逻辑、推送完整更新说明到Slack、自动填充TestFlight「What's New」板块的全部需求,不需要受限于Xcode Cloud默认Slack集成的能力限制,常用实现路径有两种:
方案1:基于Xcode Cloud自定义后置脚本实现(无额外服务成本,适配现有工作流)
Xcode Cloud原生支持在构建全流程插入自定义执行脚本,不需要对接第三方工具就能实现需求:
- 在项目仓库根目录创建
ci_scripts文件夹,在文件夹内新建post_build.sh脚本文件,执行chmod +x ci_scripts/post_build.sh给脚本添加可执行权限,Xcode Cloud会在构建产物成功上传TestFlight后自动运行该脚本。 - 脚本内可直接实现所有需求逻辑:
- 读取全量更新内容:两种方式任选即可,一是执行
git log -1 --pretty=%B命令直接拉取最近一次提交的完整标题、描述内容;二是直接读取仓库内独立存放的变更记录文件(比如CHANGELOG.md),用sed/awk命令截取对应当前版本号的更新段落即可。 - 推送Slack消息:直接调用Slack incoming webhook接口,把获取到的完整更新内容、版本号、构建号组装成指定格式的消息推送即可,可自定义消息样式,不受默认集成只展示提交标题的限制。
- 自动填充TestFlight「What's New」:调用苹果官方命令行工具
altool,传入对应语言的更新说明参数,即可在上传构建时直接写入发布说明,不需要手动登录App Store Connect后台填写。
- 读取全量更新内容:两种方式任选即可,一是执行
- 脚本可直接调用Xcode Cloud预置的环境变量获取当前构建的版本号、构建号、产物状态等信息,不需要额外做参数解析。
方案2:基于App Store Connect Webhook触发自定义逻辑(灵活度更高)
如果不想把业务逻辑写在CI脚本里,可以用事件触发的方式实现:
- 在App Store Connect后台配置Webhook事件监听,勾选「构建完成并可用于TestFlight测试」的事件类型,事件触发时会向你配置的接收地址发送请求。
- 接收端可以用轻量云函数实现,不需要搭建常驻服务:收到触发请求后,拉取对应仓库的提交记录或变更日志文件,再分别执行Slack推送、调用App Store Connect API更新对应构建的「What's New」内容即可,后续如果要加其他自动化逻辑(比如自动通知测试组、触发灰度规则)也方便扩展。
注意:如果选择自动填充「What's New」的方案,注意要对应你App支持的所有本地化语言分别传入说明内容,避免对应语言的用户看不到更新提示。
内容的提问来源于stack exchange,提问作者Tarek
相关产品推荐
相关产品推荐

