ci(vps-gate): vps-deploy加口令闸门(用户拍板): dispatch必填confirm=推vps,不符第一步fail; 前置=nas-verify绿+用户NAS验收+报待推清单+用户原话说「推vps」,不得代填/推断/沿用旧授权(2026-08-14两次违规教训固化); CLAUDE.md部署规则同步 [nas]
This commit is contained in:
+4
-3
@@ -151,9 +151,10 @@ test(pytest 数据层) → nas-deploy(推 NAS 后端+前端 dist+restart 容器)
|
||||
```
|
||||
nas-verify 全绿 = NAS test 已自动部署+验证通过。**VPS 不再自动推**(Gitea 无 environment approval gate;且要 NAS 验证通过才推 prod 的隔离)。
|
||||
|
||||
**推 VPS prod(nas-verify 绿后,单独触发 vps-deploy.yml,两种方式)**:
|
||||
- **人工**:Gitea → Actions → `vps-deploy.yml` → Run workflow,填 `sha`(nas-verify notice 输出的 commit)
|
||||
- **agent**:调 dispatch API(basic auth,凭证走 Mac osxkeychain):`curl -u admin:*** -X POST http://192.168.2.154:3000/api/v1/repos/sanguo/sanguo_vnpy_v2/actions/workflows/vps-deploy.yml/dispatches -d '{"ref":"master","inputs":{"sha":"<full-sha>"}}'`
|
||||
**推 VPS prod(nas-verify 绿 + 用户确认,缺一不可;2026-08-14 起带口令闸门)**:
|
||||
- **前置铁律**:agent dispatch 的前提 = nas-verify 绿 **+ 用户本人 NAS 验收通过** + 报「待推 VPS」清单(commit 号/内容)给用户,**用户在对话中原话说「推vps」**。不得代填/推断/沿用旧授权(2026-08-14 曾两次违规自行 dispatch,用户严肃指正)。
|
||||
- **人工**:Gitea → Actions → `vps-deploy.yml` → Run workflow,填 `sha`(nas-verify notice 输出的 commit)+ `confirm=推vps`
|
||||
- **agent**(仅当用户原话说了「推vps」):调 dispatch API(basic auth,凭证走 Mac osxkeychain):`curl -u admin:*** -X POST http://192.168.2.154:3000/api/v1/repos/sanguo/sanguo_vnpy_v2/actions/workflows/vps-deploy.yml/dispatches -H 'Content-Type: application/json' -d '{"ref":"master","inputs":{"sha":"<full-sha>","confirm":"推vps"}}'`;口令不符 workflow 第一步直接 fail
|
||||
(⚠️ MCP 的 claude_dev token 对仓库无 write 权限,dispatch 会 403;agent 走 Mac git credential / basic auth)
|
||||
vps-deploy checkout 你传的 SHA(= NAS 验证过的 commit)→ `promote --target vps` → verify_unified_e2e。**严格版本一致**。
|
||||
|
||||
|
||||
@@ -5,10 +5,10 @@ name: VPS Deploy
|
||||
# 严格版本一致: 接收 sha input, checkout 该 commit(= NAS 验证通过的那个), 部署到 VPS。
|
||||
# 不会部署 nas-verify 未验证过的代码。
|
||||
#
|
||||
# 触发方式:
|
||||
# 人工: Gitea → Actions → vps-deploy.yml → Run workflow → 填 sha(NAS 验证通过的 commit)
|
||||
# agent: MCP dispatch_workflow workflow_id=vps-deploy.yml ref=master inputs={sha:<full-sha>}
|
||||
# 或 curl POST /api/v1/repos/sanguo/sanguo_vnpy_v2/actions/workflows/vps-deploy.yml/dispatches
|
||||
# 触发方式(2026-08-14 起带口令闸门,见 inputs.confirm):
|
||||
# 人工: Gitea → Actions → vps-deploy.yml → Run workflow → 填 sha + confirm=推vps
|
||||
# agent: 仅当用户在对话中原话说了「推vps」才可 dispatch,confirm 必须填 推vps;
|
||||
# 口令不符第一步直接 fail。不得代填/推断/沿用旧授权。
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
@@ -16,6 +16,10 @@ on:
|
||||
description: "NAS 验证通过的 commit SHA(完整 40 位, ci-cd 的 nas-verify 输出)"
|
||||
required: true
|
||||
type: string
|
||||
confirm:
|
||||
description: "部署确认口令: 只有用户在对话中说了「推vps」才可填(用户原话,agent 不得代填/推断)"
|
||||
required: true
|
||||
type: string
|
||||
|
||||
jobs:
|
||||
vps:
|
||||
@@ -23,7 +27,15 @@ jobs:
|
||||
env:
|
||||
HOME: /Users/chufeng
|
||||
steps:
|
||||
- name: checkout 指定 commit(= NAS 验证通过的版本)
|
||||
- name: 口令闸门(用户没说「推vps」就不许部署)
|
||||
run: |
|
||||
if [ "${{ inputs.confirm }}" != "推vps" ]; then
|
||||
echo "❌ 口令不符——部署未获用户确认,退出。"
|
||||
exit 1
|
||||
fi
|
||||
echo "✅ 口令确认,继续部署。"
|
||||
|
||||
- name: checkout 指定 commit(= NAS 验证过的版本)
|
||||
env:
|
||||
TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
|
||||
Reference in New Issue
Block a user