rudrankriyam/App-Store-Connect-CLI

GitHub: rudrankriyam/App-Store-Connect-CLI

一款基于Go语言的App Store Connect命令行工具,用于自动化iOS/macOS应用的TestFlight分发、商店提交、元数据管理和签名配置等发布流程。

Stars: 3652 | Forks: 303

# App Store Connect CLI 与 ASC Studio

Latest Release GitHub Stars Go Version License Homebrew Estimated total downloads

asc -- App Store Connect CLI

一个快速、轻量且可脚本化的 App Store Connect API CLI。 从你的终端、IDE 或 CI/CD pipeline 自动化 iOS、macOS、tvOS 和 visionOS 的发布工作流。 以及 ASC Studio,一个构建在 ASC CLI 之上的 App Store Connect 客户端。 ## 目录 - [asc skills](#asc-skills) - [赞助者](#sponsors) - [快速入门](#quick-start) - [故障排除](#troubleshooting) - [支持](#support) - [应用墙](#wall-of-apps) - [常用工作流](#common-workflows) - [命令与参考](#commands-and-reference) - [文档](#documentation) - [贡献](#contributing) - [许可证](#license) ## asc 技能 用于自动化 `asc` 工作流的 Agent Skills,包括构建、TestFlight、元数据同步、提交和签名: https://github.com/rudrankriyam/app-store-connect-cli-skills ## 快速入门 如果你想在配置身份验证之前确认二进制文件能否正常工作: ``` asc version asc --help ``` ### 1. 安装 ``` # Homebrew (推荐) brew install rudrankriyam/tap/asc # 安装脚本 curl -fsSL https://asccli.sh/install | bash ``` Windows 用户可以直接从 [GitHub releases 页面](https://github.com/rudrankriyam/App-Store-Connect-CLI/releases/latest)下载签名的发布二进制文件。 关于源码构建和贡献者设置,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。 ### 2. 认证 ``` asc auth login \ --name "MyApp" \ --key-id "ABC123" \ --issuer-id "DEF456" \ --private-key /path/to/AuthKey.p8 \ --network ``` 在此生成 API 密钥: https://appstoreconnect.apple.com/access/integrations/api 如果你在 CI、无头 shell 或无法访问 keychain 的机器上运行,请改用基于配置文件的身份验证: ``` asc auth login \ --bypass-keychain \ --name "MyCIKey" \ --key-id "ABC123" \ --issuer-id "DEF456" \ --private-key /path/to/AuthKey.p8 ``` ### 3. 验证认证 ``` asc auth status --validate asc auth doctor ``` ### 4. 第一条命令 ``` asc apps list --output table asc apps list --output json --pretty ``` ### 输出默认值 (感知 TTY) `asc` 根据标准输出连接的位置选择默认的 `--output`: - 交互式终端 (TTY): `table` - 非交互式输出 (管道/文件/CI): `json` 你仍然可以设置全局偏好: ``` export ASC_DEFAULT_OUTPUT=markdown ``` 并且显式标志始终优先: ``` asc apps list --output json ``` ### 稳定性标签 `asc` 使用可见的生命周期标签,以便你在 CI 或脚本中依赖某个命令之前判断支持预期: - 无标签:用于正常使用的稳定公共 CLI 契约 - `[experimental]`:有用,但仍在演进中;预期会有较粗糙的边缘和更快的迭代 - `DEPRECATED:` 或弃用警告:在迁移期间保留的兼容路径,但不是长期归宿 ## 故障排除 ### Homebrew - 首先刷新 Homebrew: `brew update && brew upgrade asc` - 检查你正在运行哪个二进制文件: `which asc` - 确认已安装的版本: `asc version` - 如果 Homebrew 落后于最新的 GitHub release,请使用 `https://asccli.sh/install` 中的安装脚本 ### 认证 - 验证活动配置文件: `asc auth status --validate` - 运行认证健康检查: `asc auth doctor` - 如果 keychain 访问被阻止,请使用 `ASC_BYPASS_KEYCHAIN=1` 重试或重新运行 `asc auth login --bypass-keychain` - 当你希望在 `./.asc/config.json` 中使用仓库本地凭据时,请使用 `asc auth login --local --bypass-keychain ...` ### 输出 - `asc` 在交互式终端中默认为 `table`,在管道、文件和 CI 中默认为 `json` - 在编写脚本或共享复现步骤时使用显式格式:`--output json`、`--output table` 或 `--output markdown` - 当你希望在终端或错误报告中获得可读输出时,将 `--pretty` 与 JSON 一起使用 - 使用 `ASC_DEFAULT_OUTPUT` 设置个人默认值,但请记住 `--output` 始终优先 ## 支持 - 使用 [GitHub Discussions](https://github.com/rudrankriyam/App-Store-Connect-CLI/discussions) 获取安装帮助、认证设置、工作流建议以及“我该如何……?”问题 - 使用 [GitHub Issues](https://github.com/rudrankriyam/App-Store-Connect-CLI/issues) 报告可复现的错误和具体的功能请求 - 请参阅 [SUPPORT.md](SUPPORT.md) 了解支持政策和错误报告清单 - 在提交认证或 API 错误之前,请使用 `ASC_BYPASS_KEYCHAIN=1` 重试;如果安全的话,请包含来自 `ASC_DEBUG=api asc ...` 或 `asc --api-debug ...` 的经过编辑的输出 ## 应用墙 [查看应用墙 →](https://asccli.sh/#wall-of-apps) 想要添加你的应用? `asc apps wall submit --app "1234567890" --confirm` 该命令使用你经过认证的 `gh` session 来 fork 仓库并打开一个更新 `docs/wall-of-apps.json` 的 pull request。 它会自动从 app ID 解析公共 App Store 名称、URL 和图标。对于尚不在公共 App Store 上的手动条目,请使用带有 `--name` 的 `--link`。 使用 `asc apps wall submit --dry-run` 可以在创建任何内容之前预览 fork、分支和 PR 计划。 ## 常用工作流 ### TestFlight 反馈与崩溃 ``` asc testflight feedback list --app "123456789" --paginate asc testflight crashes list --app "123456789" --sort -createdDate --limit 10 asc testflight crashes log --submission-id "SUBMISSION_ID" ``` ### 构建与分发 ``` asc builds upload --app "123456789" --ipa "/path/to/MyApp.ipa" asc builds list --app "123456789" --output table asc testflight groups list --app "123456789" --output table ``` ### 发布 (高层 App Store 发布流程) ``` # 可选:提交前预览 staging 计划 asc release stage --app "123456789" --version "1.2.3" --build "BUILD_ID" --copy-metadata-from "1.2.2" --dry-run # Canonical 上传 + 附加 + 提交命令 asc publish appstore --app "123456789" --ipa "/path/to/MyApp.ipa" --version "1.2.3" --submit --confirm # 提交后监控状态 asc status --app "123456789" --watch ``` 较低层级的提交生命周期命令(用于调试或部分工作流): ``` # Canonical 就绪检查 asc validate --app "123456789" --version "1.2.3" asc submit status --version-id "VERSION_ID" asc submit cancel --version-id "VERSION_ID" --confirm ``` ### 审核状态与阻碍 ``` asc review status --app "123456789" asc review doctor --app "123456789" ``` ### 元数据与本地化 ``` asc localizations list --app "123456789" asc metadata apply --app "123456789" --version "1.2.3" --dir "./metadata" --dry-run asc apps info view --app "123456789" --output json --pretty ``` ### 截图与媒体 ``` asc screenshots plan --app "123456789" --version "1.2.3" --review-output-dir "./screenshots/review" asc screenshots apply --app "123456789" --version "1.2.3" --review-output-dir "./screenshots/review" --confirm asc screenshots list --version-localization "LOC_ID" asc video-previews list --app "123456789" ``` ### 签名与 Bundle ID ``` asc certificates list asc profiles list asc bundle-ids list ``` ### 工作流自动化 ``` asc workflow validate asc workflow run --dry-run testflight_beta VERSION:1.2.3 ``` ### 已验证的本地 Xcode -> TestFlight 工作流 请参阅 [docs/WORKFLOWS.md](docs/WORKFLOWS.md) 获取可复制的 `.asc/workflow.json` 以及使用 `asc builds next-build-number`、`asc xcode archive`、 `asc xcode export` 和 `asc publish testflight --group ... --wait` 的 `ExportOptions.plist`。 ``` asc workflow validate asc workflow run --dry-run testflight_beta VERSION:1.2.3 asc workflow run testflight_beta VERSION:1.2.3 ``` ### Xcode Cloud 工作流与构建运行 ``` # 从 Pull Request 触发 asc xcode-cloud run --workflow-id "WORKFLOW_ID" --pull-request-id "PR_ID" # 从现有构建运行以全新构建重新运行 asc xcode-cloud run --source-run-id "BUILD_RUN_ID" --clean # 根据 ID 获取单个构建运行 asc xcode-cloud build-runs get --id "BUILD_RUN_ID" ``` ## 命令与参考 使用内置帮助作为事实来源: ``` asc --help asc --help asc --help ``` 参考层级: - `asc --help`:权威的命令和标志概览 - `docs/COMMANDS.md`:生成的顶层分类图 - `asc docs show workflows`:精选的工作流配方 - `asc docs show reference`:`asc init` 使用的仓库本地快速参考模板 有关完整的命令族、标志和发现模式,请参阅: - [docs/COMMANDS.md](docs/COMMANDS.md) ## 文档 - [docs/CI_CD.md](docs/CI_CD.md) - CI/CD 集成指南 (GitHub Actions, GitLab, Bitrise, CircleCI) - [docs/COMMANDS.md](docs/COMMANDS.md) - 命令族与参考导航 - [docs/WORKFLOWS.md](docs/WORKFLOWS.md) - 可复用的工作流模式,包括本地 Xcode 到 TestFlight - [docs/API_NOTES.md](docs/API_NOTES.md) - API 特性与行为 - [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md) - CLI 开发与测试说明 - [docs/TESTING.md](docs/TESTING.md) - 测试模式与约定 - [docs/openapi/README.md](docs/openapi/README.md) - 离线 OpenAPI 快照 + 更新流程 - [CONTRIBUTING.md](CONTRIBUTING.md) - 贡献指南 ## 致谢 本地截图装裱使用 Koubou(固定于 `0.18.1` 版本)以实现确定性的设备边框渲染。 GitHub: https://github.com/bitomule/koubou 用于截图捕获和交互的模拟器 UI 自动化使用 AXe CLI。 GitHub: https://github.com/cameroncooke/AXe ## 许可证 MIT License - 详情请参阅 [LICENSE](LICENSE)。 ## 作者 [Rudrank Riyam](https://github.com/rudrankriyam)
标签:API 客户端, App Store Connect, ASC Studio, CLI 工具, EVTX分析, Go 语言, Homebrew, Homebrew安装, iOS 开发, JSON 处理, macOS 开发, TestFlight, tvOS, visionOS, 发布管理, 威胁情报, 应用分析, 应用签名, 开发者工具, 开源框架, 截图自动化, 持续部署, 持续集成, 无交互提示, 日志审计, 构建自动化, 移动开发, 网络调试, 脚本工具, 自动化, 订阅管理