This commit is contained in:
2026-01-21 16:43:54 +08:00
parent 6108ea7ebb
commit 91ddcc8e7b

View File

@@ -1,5 +1,6 @@
#!/bin/bash
set -euo pipefail
# 关闭 errexit改用手动判断关键步骤避免非致命错误中断
set -uo pipefail
# 前置校验当前是否为git仓库非git仓库直接退出
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
@@ -7,17 +8,23 @@ if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
exit 1
fi
# 重置本地修改
git restore .
# 重置本地修改(无修改也不报错,正常继续)
echo "重置本地修改..."
git restore . >/dev/null 2>&1
# 切main分支屏蔽正常提示,仅失败退出
# 切main分支无论是否已在main都正常继续,仅失败退出
echo "切换到main分支..."
git checkout main >/dev/null 2>&1 || { echo "切换main分支失败终止执行"; exit 1; }
git checkout main >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "错误切换main分支失败终止执行"
exit 1
fi
# 拉最新代码:兼容"已最新"场景,仅真失败才退出(核心修复
# 拉最新代码:已最新/拉取成功都继续,拉取失败才退出(彻底兼容所有场景
echo "拉取main分支最新代码..."
if ! git pull origin main --rebase >/dev/null 2>&1; then
echo "拉取main分支最新代码失败终止执行"
git pull origin main --rebase >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "错误拉取main分支最新代码失败终止执行"
exit 1
fi
@@ -35,19 +42,29 @@ get_latest_tag() {
# 获取并校验tag无tag直接退出
latest_tag=$(get_latest_tag)
if [ "$latest_tag" = "no_tag" ]; then
echo "仓库无任何tag终止执行"
echo "错误:仓库无任何tag终止执行"
exit 1
fi
echo "获取到目标tag$latest_tag"
# 切换tag失败退出
git checkout "$latest_tag" || { echo "切换至tag $latest_tag失败,终止执行"; exit 1; }
echo "切换至tag $latest_tag..."
git checkout "$latest_tag" >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "错误切换至tag $latest_tag失败,终止执行"
exit 1
fi
# 执行构建脚本,失败直接退出
bash bash/build_class.sh || { echo "构建脚本执行失败,终止执行"; exit 1; }
echo "执行构建脚本..."
bash bash/build_class.sh
if [ $? -ne 0 ]; then
echo "错误:构建脚本执行失败,终止执行"
exit 1
fi
# 确保config目录存在写入tag信息
mkdir -p config
mkdir -p config >/dev/null 2>&1
echo "$latest_tag" > config/version.flags
echo "✅ 全部操作完成tag已写入config/version.flags"