auto-sync: 2026-06-08 12:53:37
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# 工具链 Skill 设计 + 自动部署 + 端到端验证
|
||||
|
||||
> **状态**: v1.0-draft
|
||||
> **状态**: v1.1 — 仲达评审 M1/M2 修正 + S1-S4 采纳
|
||||
> **作者**: 庞统(副军师)🐦
|
||||
> **评审**: 司马懿(仲达)🗡️
|
||||
> **日期**: 2026-06-08
|
||||
@@ -337,13 +337,16 @@ deploy() {
|
||||
echo "Target: ${TARGET_DIR}"
|
||||
|
||||
# 1. 同步文件(排除不需要部署的)
|
||||
# ⚠️ --delete 会删除目标中源没有的文件,必须排除 data/(生产数据)
|
||||
rsync -av --delete \
|
||||
--exclude='.git' \
|
||||
--exclude='__pycache__' \
|
||||
--exclude='.venv' \
|
||||
--exclude='data' \
|
||||
--exclude='tests' \
|
||||
--exclude='docs' \
|
||||
--exclude='.gitea' \
|
||||
--exclude='node_modules' \
|
||||
"${SOURCE_DIR}/" "${TARGET_DIR}/"
|
||||
|
||||
# 2. 安装依赖
|
||||
@@ -368,9 +371,13 @@ deploy() {
|
||||
}
|
||||
fi
|
||||
|
||||
# 5. 记录版本
|
||||
# 5. 记录版本(rollback 时可通过 DEPLOY_OVERRIDE_COMMIT 覆盖)
|
||||
local commit_hash
|
||||
commit_hash=$(cd "${SOURCE_DIR}" && git rev-parse --short HEAD 2>/dev/null || echo "unknown")
|
||||
if [ -n "${DEPLOY_OVERRIDE_COMMIT:-}" ]; then
|
||||
commit_hash="${DEPLOY_OVERRIDE_COMMIT}"
|
||||
else
|
||||
commit_hash=$(cd "${SOURCE_DIR}" && git rev-parse --short HEAD 2>/dev/null || echo "unknown")
|
||||
fi
|
||||
local timestamp
|
||||
timestamp=$(date -u +%Y-%m-%dT%H:%M:%SZ)
|
||||
echo "{\"timestamp\": \"${timestamp}\", \"commit\": \"${commit_hash}\", \"source\": \"${SOURCE_DIR}\"}" >> "${DEPLOY_HISTORY}"
|
||||
@@ -387,11 +394,13 @@ rollback() {
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 读取倒数第二行
|
||||
# 读取倒数第二行的 commit(不依赖 SOURCE_DIR 的 git 状态)
|
||||
local prev_line
|
||||
prev_line=$(tail -2 "${DEPLOY_HISTORY}" | head -1)
|
||||
local prev_commit
|
||||
local prev_source
|
||||
prev_commit=$(echo "${prev_line}" | python3 -c "import sys,json; print(json.load(sys.stdin)['commit'])" 2>/dev/null)
|
||||
prev_source=$(echo "${prev_line}" | python3 -c "import sys,json; print(json.load(sys.stdin).get('source',''))" 2>/dev/null)
|
||||
|
||||
if [ -z "${prev_commit}" ] || [ "${prev_commit}" = "unknown" ]; then
|
||||
echo "Cannot determine previous version"
|
||||
@@ -399,10 +408,14 @@ rollback() {
|
||||
fi
|
||||
|
||||
echo "=== Rolling back to ${prev_commit} ==="
|
||||
# checkout 到指定 commit,部署,然后回到 main
|
||||
cd "${SOURCE_DIR}"
|
||||
local current_branch
|
||||
current_branch=$(git branch --show-current)
|
||||
git checkout "${prev_commit}"
|
||||
# 重新部署(不递归 rollback)
|
||||
deploy
|
||||
# 部署时明确传 commit hash,不依赖 HEAD
|
||||
DEPLOY_OVERRIDE_COMMIT="${prev_commit}" deploy
|
||||
git checkout "${current_branch:-main}"
|
||||
}
|
||||
|
||||
case $ACTION in
|
||||
|
||||
Reference in New Issue
Block a user