用途:这是 WordPress Workspace 仓库的发布运行手册,用于该仓库的发布、打包和构建运维工作,指导开发构建、本地发布包、公证包和 GitHub Release 发布等流程。
主要能力与用法:
- 操作前先检查 git status --short --branch,不覆盖无关的本地改动,并确认用户需要的是开发构建、本地发布包、公证包还是已发布的 GitHub Release;不得泄露 OAuth 密钥或将密钥值写入日志、文档或提交信息。
- 开发构建默认命令为 make,默认输出 build/WP Workspace Dev.app,默认 bundle 标识为 com.automattic.wpworkspace.dev。当前构建用 -lsqlite3 链接 SQLite 以支持 QuickLauncher/Workspace 缓存;仅在用户需要本地启动应用时运行 make run。
- OAuth 密钥处理:Info.plist 含 WordPress.com OAuth 客户端 ID,客户端密钥不提交。本地构建可注入:WPCOM_OAUTH_CLIENT_SECRET="$WPCOM_CLIENT_SECRET" make CODESIGN_IDENTITY=- 或 make CODESIGN_IDENTITY=- WPCOM_OAUTH_CLIENT_SECRET_FILE=.wpcom-oauth-client-secret。该应用密钥应视为可被检查的原生应用凭据,而非服务器级密钥。
- 手动发布:主脚本为 Tools/manual-release.sh,默认包路径 build/WPWorkspace-<version>.zip。脚本要求工作区干净,除非显式选择 --allow-dirty;使用 Info.plist 的 CFBundleShortVersionString,发布时创建或复用标签 v<version>;发布需 gh 并将 zip 上传到 GitHub Releases。发布可能通过应用更新徽标通知用户,公开前需确认版本、说明和制品就绪。
- CI 与公证:Makefile 负责直接 swiftc 编译、资源复制、密钥注入、代码签名、zip、DMG 和公证目标;若构建失败提示 SQLite 符号,需确认 Makefile 中 LDFLAGS = -lsqlite3 仍应用于所有架构构建。Tools/notarize.sh 处理公证与装订。.github/workflows/release.yml 被有意置于手动触发后禁用;.buildkite/pipeline.yml 在 mac 队列上运行构建、签名、公证和制品收集。创建 GitHub Release 会触发 Buildkite 生产构建,构建完成后需从 Buildkite 下载制品并手动附加到 GitHub Release,除非自动化已被明确更改。
- 冒烟测试:转录端点脚本 Tools/wpcom-transcribe.sh,需要 bearer token、站点和音频文件,向 /wpcom/v2/sites/{site}/ai/transcription 发送 multipart 音频。保持该路径无额外依赖:shell 加 curl,并提供 --verbose、--proxy、--envelope 供调试;测试选中文本转换时用 --intent command --selected-text "..."。
- 验证:仅文档改动时,除非用户要求,不要运行 make;构建改动优先运行 make 或最窄的相关目标;发布改动在密钥或发布不可用时用 shellcheck 式阅读和 dry-run 推理验证脚本。