|
@@ -1,55 +1,72 @@
|
|
|
#!/bin/bash
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
-# 版本标签创建与推送脚本
|
|
|
|
|
-# 使用方法: ./release_tag.sh v0.0.3
|
|
|
|
|
-
|
|
|
|
|
-# 检查是否提供了版本号参数
|
|
|
|
|
-if [ -z "$1" ]; then
|
|
|
|
|
- echo "错误: 请提供版本号作为参数"
|
|
|
|
|
- echo "用法: $0 <版本号>"
|
|
|
|
|
- echo "示例: $0 v1.2.3"
|
|
|
|
|
|
|
+# 发布脚本
|
|
|
|
|
+# 使用方法: ./release.sh <版本号>
|
|
|
|
|
+# 例如: ./release.sh 1.0.0
|
|
|
|
|
+
|
|
|
|
|
+set -e
|
|
|
|
|
+
|
|
|
|
|
+# 检查参数
|
|
|
|
|
+if [ $# -eq 0 ]; then
|
|
|
|
|
+ echo "错误: 请提供版本号"
|
|
|
|
|
+ echo "使用方法: $0 <版本号>"
|
|
|
|
|
+ echo "例如: $0 1.0.0"
|
|
|
exit 1
|
|
exit 1
|
|
|
fi
|
|
fi
|
|
|
|
|
|
|
|
-# 获取版本号参数
|
|
|
|
|
-VERSION=$1
|
|
|
|
|
|
|
+VERSION="$1"
|
|
|
|
|
+TAG="v$VERSION"
|
|
|
|
|
|
|
|
-# 检查是否在 Git 仓库中
|
|
|
|
|
-if ! git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
|
|
|
|
|
- echo "错误: 当前目录不是 Git 仓库"
|
|
|
|
|
|
|
+# 验证版本号格式
|
|
|
|
|
+if ! [[ $VERSION =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
|
|
|
+ echo "错误: 版本号格式不正确,请使用语义化版本格式 (例如: 1.0.0)"
|
|
|
exit 1
|
|
exit 1
|
|
|
fi
|
|
fi
|
|
|
|
|
|
|
|
-# 检查是否有未提交的更改
|
|
|
|
|
|
|
+echo "🚀 开始发布 版本: $VERSION"
|
|
|
|
|
+
|
|
|
|
|
+# 检查工作目录是否干净
|
|
|
if [ -n "$(git status --porcelain)" ]; then
|
|
if [ -n "$(git status --porcelain)" ]; then
|
|
|
- echo "警告: 有未提交的更改,建议先提交"
|
|
|
|
|
- read -p "是否继续? (y/n): " response
|
|
|
|
|
- if [[ ! $response =~ ^[Yy]$ ]]; then
|
|
|
|
|
|
|
+ echo "⚠️ 警告: 工作目录有未提交的更改"
|
|
|
|
|
+ git status
|
|
|
|
|
+ read -p "是否继续发布? [y/N] " -n 1 -r
|
|
|
|
|
+ echo
|
|
|
|
|
+ if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
|
|
|
+ echo "发布已取消"
|
|
|
exit 1
|
|
exit 1
|
|
|
fi
|
|
fi
|
|
|
fi
|
|
fi
|
|
|
|
|
|
|
|
-# 检查远程仓库是否存在
|
|
|
|
|
-if ! git remote | grep -q "gitea"; then
|
|
|
|
|
- echo "错误: 未找到名为 'gitea' 的远程仓库"
|
|
|
|
|
- exit 1
|
|
|
|
|
-fi
|
|
|
|
|
|
|
+# 检查当前分支
|
|
|
|
|
+CURRENT_BRANCH=$(git branch --show-current)
|
|
|
|
|
+echo "🌿 当前分支: $CURRENT_BRANCH"
|
|
|
|
|
|
|
|
-# 创建并推送标签
|
|
|
|
|
-echo "正在创建标签: $VERSION"
|
|
|
|
|
-git tag "$VERSION"
|
|
|
|
|
|
|
+# 拉取最新代码
|
|
|
|
|
+echo "📥 拉取最新代码..."
|
|
|
|
|
+git pull gitea "$CURRENT_BRANCH"
|
|
|
|
|
|
|
|
-if [ $? -ne 0 ]; then
|
|
|
|
|
- echo "错误: 创建标签失败"
|
|
|
|
|
- exit 1
|
|
|
|
|
-fi
|
|
|
|
|
|
|
+# 运行测试
|
|
|
|
|
+echo "🧪 运行测试..."
|
|
|
|
|
+yarn test
|
|
|
|
|
|
|
|
-echo "正在推送标签到 gitea 远程仓库..."
|
|
|
|
|
-git push gitea "$VERSION"
|
|
|
|
|
|
|
+# 运行类型检查
|
|
|
|
|
+echo "🔍 运行类型检查..."
|
|
|
|
|
+yarn build
|
|
|
|
|
|
|
|
-if [ $? -ne 0 ]; then
|
|
|
|
|
- echo "错误: 推送标签失败"
|
|
|
|
|
- exit 1
|
|
|
|
|
-fi
|
|
|
|
|
|
|
+echo "✅ 所有检查通过"
|
|
|
|
|
+
|
|
|
|
|
+# 创建标签
|
|
|
|
|
+echo "🏷️ 创建标签 $TAG..."
|
|
|
|
|
+git tag "$TAG"
|
|
|
|
|
+
|
|
|
|
|
+# 推送标签
|
|
|
|
|
+echo "📤 推送标签到远程仓库..."
|
|
|
|
|
+git push gitea "$TAG"
|
|
|
|
|
|
|
|
-echo "成功! 标签 $VERSION 已创建并推送到 gitea 远程仓库"
|
|
|
|
|
|
|
+echo ""
|
|
|
|
|
+echo "🎉 发布流程已启动!"
|
|
|
|
|
+echo "📋 版本: $VERSION"
|
|
|
|
|
+echo "🏷️ 标签: $TAG"
|
|
|
|
|
+echo "🔗 GitHub Actions 将自动构建和发布 Docker 镜像"
|
|
|
|
|
+echo ""
|
|
|
|
|
+echo "📊 查看构建进度: $(git config --get remote.gitea.url | sed 's|^ssh://||' | sed 's|^git@||' | sed 's|:|/|' | sed 's|\.git$||')/actions"
|