关于 asc-release-workflow
面向 App Store 应用发布的工作流技能,使用 `asc` 指导版本与构建号更新、归档上传、本地化、就绪检查及提交。
主要功能
- 01按配置处理平台与版本
- 02更新版本号和构建号
- 03指导归档、导出与上传
- 04更新各语言的 What's New
- 05检查就绪状态并指导提交
适用场景
- 01发布 iOS 或 macOS 应用
- 02只增加构建号而不改版本
- 03准备多语言更新说明
- 04检查提交准备情况
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ tddworks/ asc-cli-skills --skill asc-release-workflow安装后在 Claude Code 中输入/asc-release-workflow确认已加载。
附带文件release.yml
详细介绍
App 发布工作流
工作原理
项目在 .asc/release.yml 中保存发布配置。首先读取该配置,获取平台方案、版本文件路径和语言列表。
工作流步骤
步骤 1:确定发布内容
如果不明确,请询问用户:
- 哪个平台?(ios / macos / both)
- 新的版本号?(或者只为同一版本递增构建号)
- What's New 文本?(使用主要语言编写,你会为其他语言翻译)
步骤 2:递增版本号
读取发布配置,查找目标平台的 version_file 和 version_pattern。同时递增 build_number_file。
- 读取版本文件,使用正则表达式模式查找当前版本
- 替换为新版本字符串
- 读取构建号文件,递增构建号
- 如果多个平台共用同一个构建号文件,则两者的构建号都要递增
重要: 如果 CFBundleVersion 和 CURRENT_PROJECT_VERSION 与构建号模式分开定义,也要更新它们。检查 Shared.swift 和 TargetExtensions.swift。
步骤 3:重新生成项目(如有需要)
运行 pre_archive 中列出的任何命令(例如,tuist generate)。
步骤 4:归档、导出并上传
# Get the next build number automatically
BUILD_NUMBER=$(asc builds next-number --app-id <APP_ID> --version <VERSION> --platform <PLATFORM>)
asc builds archive \
--scheme <SCHEME> \
--platform <PLATFORM> \
--signing-style automatic \
--team-id <TEAM_ID> \
--upload \
--app-id <APP_ID> \
--version <VERSION> \
--build-number "$BUILD_NUMBER"
步骤 5:等待构建处理完成
轮询直到处理完成:
asc builds uploads get --upload-id <UPLOAD_ID>
检查 state 字段。如果为 FAILED,读取 errors 数组并向用户报告。常见故障:
- 缺少图标 → 修复资源目录
- 缺少权利文件 → 为 macOS 添加 App Sandbox 权利
- CFBundleVersion 不匹配 → 确保构建号一致
步骤 6:将构建关联到版本
# Find the version in PREPARE_FOR_SUBMISSION state for the platform
asc versions list --app-id <APP_ID>
# Filter for the target platform + PREPARE_FOR_SUBMISSION state
# Find the build
asc builds list --app-id <APP_ID>
# Match by build number
# Link them
asc versions set-build --version-id <VERSION_ID> --build-id <BUILD_ID>
步骤 7:更新 What's New(v1.0.0 首个版本可跳过)
对于配置中的每种语言:
asc version-localizations list --version-id <VERSION_ID>
# Get localization IDs for each locale
asc version-localizations update \
--localization-id <LOC_ID> \
--whats-new "<TRANSLATED_TEXT>"
生成 What's New 文本:
- 将用户提供的文本作为 en-US 版本
- 翻译为每种语言,同时保持相同的语气和格式
- 保持简洁(最多 2–4 句)
步骤 8:检查是否已准备就绪
asc versions check-readiness --version-id <VERSION_ID>
向用户报告结果。如果 isReadyToSubmit 为 true,询问是否要提交。如果未准备就绪,列出缺少的内容(屏幕截图、描述等)。
步骤 9:提交(经用户确认后)
如果 App 有从未获批的应用内购买或订阅项目,必须将它们与此版本一同提交审核。向用户展示将要提交的内容,然后与用户一起提交:
asc versions submit --version-id <VERSION_ID> --with-products --dry-run --output table
asc versions submit --version-id <VERSION_ID> --with-products
否则:
asc versions submit --version-id <VERSION_ID>
如果 Apple 拒绝提交,错误信息会列出需要修复的内容——请参阅 submit-with-products.md。
平台首次设置(仅需一次)
如果这是某个平台的首次发布(例如,为现有 iOS App 添加 macOS),则在常规工作流开始前需要进行额外设置:
-
配置描述文件 — 检查是否已存在;如果不存在,则创建:
asc bundle-ids list --identifier <BUNDLE_ID> asc certificates list --type MAC_APP_DISTRIBUTION # or IOS_DISTRIBUTION asc profiles list --bundle-id-id <BID_ID> asc profiles create --name "Mac App Store: <BUNDLE_ID>" --type MAC_APP_STORE --bundle-id-id <BID_ID> --certificate-ids <CERT_ID> -
权利文件 — macOS 需要 App Sandbox。检查是否存在
.entitlements文件。 -
App 图标 — 确认该平台的资源目录已指定图标。
-
描述 — 如果有现成的平台描述,则复制并调整为适用于新平台的内容。
-
创建版本 — 如果不存在 PREPARE_FOR_SUBMISSION 版本:
asc versions create --app-id <APP_ID> --platform MAC_OS --version-string 1.0.0