
Hackers发布流程完全指南从TestFlight到App Store的完整流程【免费下载链接】HackersHackers is an elegant iOS app for reading Hacker News written in Swift.项目地址: https://gitcode.com/gh_mirrors/ha/HackersHackers是一个优雅的iOS Hacker News阅读应用采用SwiftUI和Swift Package Manager模块构建。本指南将详细介绍Hackers应用的完整发布流程涵盖从版本准备、TestFlight测试到App Store发布的每一个关键步骤。无论您是新手开发者还是经验丰富的iOS工程师这份终极指南都将帮助您掌握Hackers应用的发布全流程。 发布流程概览Hackers采用标签驱动的发布模型每个TestFlight构建都使用完整的语义版本构建号标签vMARKETING_VERSIONCURRENT_PROJECT_VERSION。例如v5.3.2160表示营销版本5.3.2构建号160。整个发布流程分为三个阶段版本准备- 更新版本号和应用内容TestFlight发布- 构建、上传和分发测试版本App Store发布- 提交到App Store审核 发布前准备检查清单在开始发布之前请确认以下准备工作已完成✅master分支通过所有必需检查lint、build、test和ui smoke✅testflightGitHub环境已配置并需要审批✅ App Store Connect API密钥具有读取构建、上传构建、更新TestFlight元数据等权限✅ match仓库包含两个Bundle ID的签名资产com.weiranzhang.Hackerscom.weiranzhang.Hackers.ActionExtension 版本准备步骤1. 确定版本类型首先决定这是新的营销版本还是当前营销版本的另一个构建# 查看当前版本信息 cat docs/release-process.md | grep -A 5 Release Model2. 更新版本号需要更新两个目标的版本号Hackers- 主应用目标HackersActionExtension- 操作扩展目标在Hackers.xcodeproj中更新MARKETING_VERSION- 控制发布家族如5.3.2CURRENT_PROJECT_VERSION- 控制App Store Connect构建号3. 更新应用内容如果构建包含用户可见的更改需要更新应用内的Whats New内容。相关代码位于Features/WhatsNew/模块中。4. 本地验证在提交前进行本地验证# 运行测试套件 ./run_tests.sh # 运行UI烟雾测试 ./run_ui_tests.sh smoke5. 提交发布准备更改在通过所有必需检查后将发布准备更改提交到master分支git add . git commit -m Prepare release vX.Y.ZN git push origin master️ 创建标签并触发TestFlight标签格式要求标签格式必须为vMARKETING_VERSIONCURRENT_PROJECT_VERSION# 示例标签 tagv5.3.2160 # 创建标签 git tag $tag master git push origin refs/tags/$tag触发TestFlight工作流标签推送会自动触发.github/workflows/release-testflight.yml工作流。您也可以在GitHub Actions中手动触发# 手动触发 gh workflow run release-testflight.yml -f release_tagv5.3.2160审批保护环境TestFlight工作流运行在受保护的testflightGitHub环境中需要手动审批。在GitHub Actions界面中批准部署请求。 TestFlight发布说明管理TestFlight工作流会在上传前解析artifacts/release/what-to-test.txt并为标签创建或更新GitHub Release。草稿发布使用前一个标签的生成说明已发布的发布使用前一个已发布版本的生成说明。手动创建发布说明如果需要手动创建或替换发布说明tagv5.3.2160 gh release create $tag \ --target $tag \ --title ${tag#v} \ --notes-file release-notes.txt \ --draft编辑现有发布gh release edit $tag --title ${tag#v} --notes-file release-notes.txt发布为App Store候选版本当TestFlight说明完成后将GitHub Release发布为公开状态gh release edit $tag --draftfalse 监控TestFlight上传监控工作流进度# 查看最近的工作流运行 gh run list --workflow release-testflight.yml --limit 5 # 监控特定运行 gh run watch run-id --exit-status预期成功日志里程碑✅Archive Succeeded✅Successfully exported and signed the ipa file✅Successfully uploaded package to App Store Connect✅Successfully finished processing the build✅Successfully set the changelog for build✅Successfully distributed build to External testers✅Uploaded Hackers X.Y.Z (N) to TestFlight验证构建状态工作流成功完成后在App Store Connect中确认构建出现且状态为VALID。GitHub工作流摘要会记录标签和上传的构建号。 在App Store Connect中验证成功上传后需要验证以下内容构建状态- 确认构建在App Store Connect/TestFlight中显示为有效处理状态- 确保构建处理完成且无错误版本匹配- 验证版本号和构建号与标签匹配测试分发- 确认已正确分发到外部测试组✍️ 编写App Store发布说明重要提示App Store发布说明与GitHub Release正文和TestFlightWhat to Test文本不同。它们是面向App Store客户的最终公开产品文案。发布说明规则✅ 专门为公开的App Store列表编写✅ 用通俗语言总结用户可见的更改✅ 保持简洁对决定是否更新的用户有用❌ 不要包含GitHub比较链接、Full Changelog链接、PR链接、issue链接、提交哈希❌ 不要粘贴GitHub Release正文或TestFlight说明而不为这个受众重写❌ 不要包含生成的变更日志部分、Markdown标题或测试说明发布说明示例好的示例改进Feed浏览体验并修复读者报告的问题。优化了评论加载性能增强了搜索功能。不好的示例修复了#123问题合并了PR #456。完整变更日志https://github.com/... 测试说明请检查... 提交到App Store审核前提条件仅在人工审查选定构建和最终自定义App Store发布说明后才推广已验证的TestFlight构建。提交命令gh workflow run release-appstore.yml \ -f release_tagv5.3.2160 \ -f app_store_release_notes改进Feed浏览体验并修复读者报告的问题。可选输入参数build_number- 仅当明确选择已处理的App Store Connect构建时使用skip_app_version_update- 跳过创建或更新App Store版本cancel_pending_version- 提交前取消待处理的App Store版本cancel_only- 仅取消待处理版本而不提交构建工作流保护App Store提交工作流同样运行在受保护的testflightGitHub环境中需要人工审批。不要提交最终说明是从GitHub/TestFlight内容复制或包含返回GitHub链接的构建。️ 故障处理与恢复发布失败处理步骤不要删除密钥或签名资产- 在确认错误前不要更改敏感信息检查失败日志- 查看失败的作业日志和上传的testflight-artifacts修复自动化或项目签名问题- 在master分支上修复问题推送修复- 将修复推送到仓库移动发布标签- 仅当失败的标签未产生可用的TestFlight构建时将发布标签移动到修复后的提交批准新的TestFlight部署- 批准新的受保护TestFlight部署并监控其完成强制移动失败标签仅在TestFlight构建成功完成前强制移动失败的发布标签tagv5.3.2160 git tag -f $tag HEAD git push --force origin refs/tags/$tag重要一旦TestFlight构建成功完成将标签视为不可变的。 现有草稿发布修复如果需要修复使用旧版说明生成逻辑创建的现有草稿发布GITHUB_REPOSITORYweiran/Hackers for tag in $(gh release list --json tagName,isDraft --limit 200 --jq .[] | select(.isDraft true).tagName); do # 处理逻辑... done 关键文件和路径发布流程文档docs/release-process.md - 完整的发布流程文档docs/development.md - 开发设置和测试指南docs/project-overview.md - 项目架构概览工作流文件.github/workflows/release-testflight.yml - TestFlight发布工作流.github/workflows/release-appstore.yml - App Store提交工作流Fastlane配置fastlane/Fastfile - Fastlane自动化脚本fastlane/Appfile - 应用配置fastlane/Matchfile - 代码签名配置 最佳实践与建议版本管理始终保持MARKETING_VERSION和CURRENT_PROJECT_VERSION在两个目标中同步更新对于同一营销版本CURRENT_PROJECT_VERSION必须单调递增使用语义版本控制遵循vX.Y.ZN格式测试策略发布前始终运行完整的测试套件使用UI烟雾测试验证关键用户流程考虑为发布构建生成App Store截图沟通协作在发布说明中清晰传达用户可见的更改确保TestFlight测试者了解测试重点保持App Store发布说明面向最终用户监控与验证监控工作流运行状态和构建处理进度在App Store Connect中验证构建状态确认TestFlight分发到正确的测试组 总结Hackers应用的发布流程经过精心设计结合了自动化工作流和人工审查确保每个版本的质量和稳定性。通过遵循本指南中的步骤您可以自信地管理从版本准备到App Store发布的完整流程。记住发布流程的三个核心原则自动化但受控- 自动化重复任务但保留关键决策点的人工审批版本驱动- 一切从标签开始确保可追溯性质量优先- 每个构建都经过测试验证每个发布都经过仔细审查通过掌握这个流程您将能够高效、可靠地发布Hackers应用的新版本为Hacker News读者提供最佳的阅读体验。【免费下载链接】HackersHackers is an elegant iOS app for reading Hacker News written in Swift.项目地址: https://gitcode.com/gh_mirrors/ha/Hackers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考