diff --git a/DOCKER_DEPLOY.md b/DOCKER_DEPLOY.md index bc5df13..3e22a97 100644 --- a/DOCKER_DEPLOY.md +++ b/DOCKER_DEPLOY.md @@ -202,7 +202,7 @@ docker compose down `compose.yaml` 的镜像名与 revision 标签同样做了强校验:直接 `docker compose up -d --build` 会因缺少 `XIAOBAI_GIT_REV` / `XIAOBAI_GIT_SHORT` 变量而拒绝执行,避免再出现构建进 `latest` 的模糊版本。需要用 compose 时先 `export` 这两个变量(值以 -`~/xiaobai-git rev-parse HEAD` 为准),或直接用上面的脚本。 +`~/xiaobai-build/xiaobai-git rev-parse HEAD` 为准),或直接用上面的脚本。 ### 智能体高级入口:Git 归档流式构建 diff --git a/tools/update_from_main.sh b/tools/update_from_main.sh index e2d624c..d1a9726 100755 --- a/tools/update_from_main.sh +++ b/tools/update_from_main.sh @@ -33,6 +33,8 @@ $DIRTY" LOCAL_HEAD="$(g rev-parse HEAD)" REMOTE_HEAD="$(g rev-parse origin/main)" if [ "$LOCAL_HEAD" != "$REMOTE_HEAD" ]; then + g merge-base --is-ancestor "$LOCAL_HEAD" "$REMOTE_HEAD" \ + || refuse "本地 main 与 origin/main 历史分叉,停止(未改写工作目录)" TOP_AD="$(g diff --name-status HEAD origin/main | grep -E "^[AD][[:space:]]+[^/]+$" || true)" [ -z "$TOP_AD" ] || refuse "main 相比本地新增/删除了顶层文件,目录顶层归 root,需管理员执行: $TOP_AD" @@ -54,6 +56,8 @@ echo "==> 校验通过:本地 HEAD = origin/main = ${LOCAL_HEAD}(${SHORT}) if [ "$MODE" = "verify-tag" ]; then TAG="${2:?用法: update-from-main.sh verify-tag }" + [ "$TAG" = "main-${SHORT}" ] \ + || refuse "镜像标签必须是当前 main 对应的 main-${SHORT},收到:${TAG}" LABEL="$(docker image inspect "${IMAGE_REPO}:${TAG}" \ --format '{{index .Config.Labels "org.opencontainers.image.revision"}}' 2>/dev/null)" \ || refuse "镜像 ${IMAGE_REPO}:${TAG} 不存在"