67d1c1ef2f
- ci-cd: enforce-label(本次push无标签→fail,merge豁免) + check-vps-needed(nas-verify绿后对比vps-deployed tag,有[vps]未部署→开issue) - vps-deploy: 成功打vps-deployed tag + 关issue(gap清空) - scripts/ci/vps_pending_check.py: issue开/关/更新(CI复用) - docs: vps-impact-map触及面表 + vps-deploy-pending判定记录 - CLAUDE.md: 部署流程段补标签约定
58 lines
2.4 KiB
YAML
58 lines
2.4 KiB
YAML
name: VPS Deploy
|
|
# VPS 生产部署(人工 UI 点 Run workflow 或 agent 通过 API dispatch 触发)。
|
|
# 与 ci-cd.yml 分离: ci-cd(push) 只到 NAS 验证; VPS 必须 nas-verify 绿后由此 workflow 主动触发。
|
|
#
|
|
# 严格版本一致: 接收 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
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
sha:
|
|
description: "NAS 验证通过的 commit SHA(完整 40 位, ci-cd 的 nas-verify 输出)"
|
|
required: true
|
|
type: string
|
|
|
|
jobs:
|
|
vps:
|
|
runs-on: macos-arm64
|
|
env:
|
|
HOME: /Users/chufeng
|
|
steps:
|
|
- name: checkout 指定 commit(= NAS 验证通过的版本)
|
|
env:
|
|
TOKEN: ${{ github.token }}
|
|
run: |
|
|
set -e
|
|
SHA="${{ inputs.sha }}"
|
|
git init .
|
|
git config --local http.proxy ""
|
|
git config --local https.proxy ""
|
|
git remote add origin "http://oauth2:${TOKEN}@192.168.2.154:3000/${GITHUB_REPOSITORY}.git"
|
|
git fetch --depth 1 origin "$SHA"
|
|
git checkout FETCH_HEAD
|
|
echo "部署 commit: $(git rev-parse HEAD)"
|
|
- name: promote 代码到 VPS (只推 VPS, 不动 NAS)
|
|
run: bash scripts/nas_sync/promote.sh --target vps
|
|
- name: VPS 冒烟 (LocalUnifiedProvider 真数据)
|
|
run: ssh 49.232.102.198 'cd C:\sanguo_vnpy_v2 && C:\Python310\python.exe -X utf8 scripts/data_platform/verify_unified_e2e.py'
|
|
- name: mark vps-deployed tag (VPS 版本真相, session 用 git log vps-deployed..HEAD 查未部署)
|
|
env:
|
|
TOKEN: ${{ github.token }}
|
|
run: |
|
|
set -e
|
|
SHA="${{ inputs.sha }}"
|
|
git tag -f vps-deployed "$SHA"
|
|
git push -f "http://oauth2:${TOKEN}@192.168.2.154:3000/${GITHUB_REPOSITORY}.git" refs/tags/vps-deployed
|
|
echo "✅ vps-deployed → ${SHA::7}"
|
|
- name: 关闭 [待推VPS] issue (tag=HEAD → gap 清空 = 绿)
|
|
env:
|
|
GTOKEN: ${{ github.token }}
|
|
run: |
|
|
export VPS_LOG=""
|
|
python3 scripts/ci/vps_pending_check.py
|