← ClaudeAtlas

laixin-deploylisted

来信平台生产发布卡——把 main 部署到 laixin.net.cn 生产服务器时使用。核心原则:部署失败与部署成功长得一模一样,每一步都要有能区分两者的判据。防已发生过的失败:生产陈旧 5 天无人发现、不推裸仓导致 deploy.sh 成功却零更新、以 root 跑 git 报 dubious ownership、拿 /healthz 200 当发布成功的判据。Use when the user asks to 更新服务器/发布/上线/部署/deploy 来信平台, or after a 片 merges and needs to reach production. 触发词:部署、发布、更新服务器、上线、deploy、生产、laixin.net.cn。
pingxia710/laixin-pipeline · ★ 0 · AI & Automation · score 72
Install: claude install-skill pingxia710/laixin-pipeline
# 来信 · 生产发布卡 > **唯一原则:部署失败与部署成功,长得一模一样。** > 服务照常 200、页面照常打开、日巡照常全绿 —— 这三件事在"部署成功"和"根本没部署上"两种情况下**完全一致**。⇒ **每一步都必须有能区分两者的判据**,⛔ 用"看起来正常"当判据。 > > **本卡管命令、顺序、授权闸门**;**判据的理由与案底**在 `~/Obsidian/项目入口/来信平台/知识库/4-开发层/来信平台-运维手册.md` §四之二,**部署脚本细则**在仓库 `docs/deploy.md`。⛔ 三处互相复制正文,各引对方。 ## 〇、授权:部署是**黄级**,⛔ 自动执行 阿里云项目 `AGENTS.md` 分级(绿=查状态自动做 / 黄=改动可逆先说再做 / 红=不做): - **部署属黄级** ⇒ **动手前把「这次带多少变更 + 回滚代价」摆给创始人,得到明确「做」再动**;🔁 **2026-08-25 14:03:46 三档收窄(版本总纲 §一 第 6 条,创始人 2026-08-25 拍「具体这种小版本要怎么发你敲定就好了」)**:本条「当次『做』」只管**封盘版 `vX.Y`**;**热修 `vX.Y.z`** 立即上事后通报;**期中版 `vX.Y.z`** 按每工作日 17:00–18:00 节拍**规则预授权**,⛔ 逐次问——三档定义与工序见 version-flow 卡 §一 5-bis;创始人任何时候可喊停; - ⚠️ **「创始人问了一个问题」≠「授权执行」**;「更新一下服务器」是意向,**具体那一次动手仍要当次确认**; - **执行主体已裁定**(阿里云 log 2026-08-14 决策3):**AI 窗口**经本机代理直连,⛔ 推给创始人手敲(他不熟服务器)。 ## 一、连接(实测可用,2026-08-19 复验) ```bash ssh -J wyinmac-vps-gateway -i ~/.ssh/aliyun-laixin-ed25519 root@121.196.192.44 ``` - 安全组 22 只放行代理出口 `67.230.165.28`(即 `wyinmac-vps-gateway`)⇒ **必须走 `-J`**,直连会被挡; - 主机密钥已在 `known_hosts`;非交互加 `-o BatchMode=yes -o ConnectTimeout=15`。 **生产事实**:阿里云 ECS `i-bp16su7e8xjslqjkhgk3`(杭州)· Ubuntu 24.04 · **Python 3.12.3**(验收环境必须同 minor)· SQLite · 代码 `/opt/laixin`(属主 `laixin`)· 服务 `laixin-api` / `laixin-web` / `caddy`。 ## 二、⛔ 三个"看起来成功"的陷阱(全部实撞过) 1. **服务器 origin 不是 GitHub,是本机裸仓 `/srv/git/laixin.git`** —— `deploy.sh` 只做 `git fetch origin` + `git pull --ff-only` ⇒ **不先推,脚本会一路成功而什么都没更新**; 2. **`/opt/laixin` 属主是 `laixin`** —— 以 root 跑 `git -C /opt/laixin ...` **直接报错** `fatal: detected dubious