mcpField
A
asc-release-workflow

asc-release-workflow

github.com/tddworks云与 DevOps586 次安装5 周前更新
代码仓库

关于 asc-release-workflow

面向 App Store 应用发布的工作流技能,使用 `asc` 指导版本与构建号更新、归档上传、本地化、就绪检查及提交。

主要功能

  1. 01按配置处理平台与版本
  2. 02更新版本号和构建号
  3. 03指导归档、导出与上传
  4. 04更新各语言的 What's New
  5. 05检查就绪状态并指导提交

适用场景

  1. 01发布 iOS 或 macOS 应用
  2. 02只增加构建号而不改版本
  3. 03准备多语言更新说明
  4. 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。

  1. 读取版本文件,使用正则表达式模式查找当前版本
  2. 替换为新版本字符串
  3. 读取构建号文件,递增构建号
  4. 如果多个平台共用同一个构建号文件,则两者的构建号都要递增

重要: 如果 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),则在常规工作流开始前需要进行额外设置:

  1. 配置描述文件 — 检查是否已存在;如果不存在,则创建:

    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>
    
  2. 权利文件 — macOS 需要 App Sandbox。检查是否存在 .entitlements 文件。

  3. App 图标 — 确认该平台的资源目录已指定图标。

  4. 描述 — 如果有现成的平台描述,则复制并调整为适用于新平台的内容。

  5. 创建版本 — 如果不存在 PREPARE_FOR_SUBMISSION 版本:

    asc versions create --app-id <APP_ID> --platform MAC_OS --version-string 1.0.0
    

评论

支持 Markdown