--- name: slark-cicd description: Slark 仓库 staging、生产和 Desktop 安装包的端到端 CI/CD 可执行 runbook。覆盖本地预推快检、PR 与内网 ci/internal-gate 门禁、合并 origin/main、staging 真机预验、审批式生产发布,以及在 m5max 构建签名、公证并上传 macOS/Windows Desktop 包到 OSS。当用户要在 slark(qiudl/qiu-slark)里发布/上线、部署到生产或 staging、发布 Desktop 安装包、盯 CI/合并 PR、复现或验证运行时行为、或排查发布链/推送路由问题时使用。 --- # Slark CI/CD runbook 驱动 Slark 从改代码到上线的端到端流程。权威流程与完整细节见仓库文档 `docs/cicd-staging-production.md`(本技能命令与之一致);本文件是可直接照做的分阶段清单。 仓库:`qiudl/qiu-slark`(本机克隆通常在 `/Users/donglinlai/coding/slark`)。所有命令在**仓库根**执行。 `ai-proj` 相关命令加 `GODEBUG=netdns=go` 前缀。 ## 铁律(先记死) - GitHub `origin/main` 是唯一代码权威、合并入口与生产发布来源;`internal` 只用于 CI/镜像,永不发布。 - 生产发布只接受**最新 `origin/main` 的精确 40 位 SHA**;`HEAD != origin/main` 会被 `deploy.sh` 拒绝。 - 生产发布必须在**普通 clone** 中执行,且 `.git` 必须是目录;`release-prod.sh` / `deploy.sh` 会拒绝 `.git` 为指针文件的 git worktree。不要污染现有 checkout:主目录脏或被占用时,新建干净的临时 clone。 - 审批式部署,永不自动:亲手敲的 `sudo`/`rm -rf`/`dd`/`curl|sh`/包安装是 `destructive`(NEVER_AUTO), **每次都要人审**;命中审批闸就**等人批**,绝不绕过、绝不把这些 key 加进 auto-approve 白名单。 - staging 与生产硬隔离:staging 脚本带生产 IP 拒运行护栏、不 push origin、不反向 rsync。 - 当前 Slark staging 权威目标是 AWS `ap-southeast-2` 实例 `i-013e5ca3fdfddc13e` (Name=`slark-staging`,2026-08-18 核验公网 IP `15.135.112.181`)。公网 IP 自动分配,发布前必须按 实例 ID 重查并确认 Name/状态;不得凭历史 IP 判断目标。 - `82.157.141.202` 是 ai-proj 预生产宿主机。其 `/opt/slark-staging` cohost 是隔离的 Slark 兼容验收栈, 但不是 Slark 独立预生产;只有任务明确指定 cohost 时才能使用,不得作为普通 Slark staging 的默认目标。 - staging 发布若影响 `packages/daemon`、`packages/runtime`、Server/daemon 公共协议或 Desktop 公共运行链, 必须把 `server-staging` 与 `daemon-staging` 更新到同一精确 SHA;两者版本不一致不得宣告 staging 成功。 - 只修 PR 范围内的 CI 失败;不为过检去改 CI/workflow 或做无关改动。 ## 选择链路 - 「发布/上线/部署生产」→ 生产发布链:阶段 1→2→4→5。 - 「Desktop/桌面版打包、发布、上传 OSS」→ 阶段 1→2 后走 `docs/desktop-oss-release.md` 的 m5max 双平台链路。 - 「盯 CI/合并 PR」→ 阶段 1→2(用 babysit 心态循环到 green + mergeable + 评论收口)。 - 「复现/验证运行时行为、别碰生产」→ staging 预验链(阶段 3,可独立随时跑)。 ## 阶段 1:PR 与内网 gate(`ci/internal-gate`) 真实门禁是内网 CI(GitHub Actions 已停用)。检查与自查: ```bash gh pr checks # 应见 ci/internal-gate gh pr view --json state,mergeable,mergeStateStatus,isDraft,reviewDecision ``` - 基础门(全 PR):release-contract / member-gate / authz-matrix / controlled-content-exits / onconflict-predicate / migration-idempotency / wsl-path-translation / typecheck / test(全量)。 - 条件外部门(按改动路径):改 server DB/迁移/schema → `postgresql-security`;改 web → `web-e2e`; android / daemon+desktop 各有门。 - 本地复跑基础门可跑部分:`pnpm -r typecheck && pnpm test`。 红了:只修本 PR 范围内的失败。疑似无关的合并阻塞→先 merge 最新 `main`(可能别的 PR 已修)。 `BLOCKED: