2
0
Эх сурвалжийг харах

🔧 chore(release): 重构发布脚本,增强功能和用户体验

- 重命名脚本文件从release_tag.sh为release.sh
- 添加标签列表功能(--list/-l),显示最近10个或所有标签
- 实现版本号格式验证,确保语义化版本规范
- 添加工作目录检查和用户确认步骤
- 集成分支检查和最新代码拉取
- 优化输出信息,增加视觉提示和操作指引
- 添加构建进度查看链接自动生成功能
- 增强错误处理和用户交互体验
yourname 1 сар өмнө
parent
commit
cad4ae1fe5
1 өөрчлөгдсөн 69 нэмэгдсэн , 36 устгасан
  1. 69 36
      scripts/release_tag.sh

+ 69 - 36
scripts/release_tag.sh

@@ -1,55 +1,88 @@
 #!/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
+# 查看标签: ./release.sh --list 或 ./release.sh -l
+
+set -e
+
+# 检查参数
+if [ $# -eq 0 ]; then
+    echo "错误: 请提供版本号"
+    echo "使用方法: $0 <版本号>"
+    echo "例如: $0 1.0.0"
+    echo ""
+    echo "📋 Gitea 最近10个标签:"
+    # 尝试获取远程标签,如果失败则使用本地标签
+    REMOTE_TAGS=$(git ls-remote --tags gitea 2>/dev/null | grep -v "\^{}" | cut -f 2 | sed 's|refs/tags/||')
+    if [ -z "$REMOTE_TAGS" ]; then
+        echo "⚠️  无法获取远程标签,显示本地最近10个标签:"
+        git tag --list | sort -V | tail -10
+    else
+        echo "$REMOTE_TAGS" | sort -V | uniq | tail -10
+    fi
     exit 1
 fi
 
-# 获取版本号参数
-VERSION=$1
+# 特殊参数: 查看所有标签
+if [ "$1" = "--list" ] || [ "$1" = "-l" ]; then
+    echo "📋 Gitea 所有标签:"
+    # 尝试获取远程标签,如果失败则使用本地标签
+    REMOTE_TAGS=$(git ls-remote --tags gitea 2>/dev/null | grep -v "\^{}" | cut -f 2 | sed 's|refs/tags/||')
+    if [ -z "$REMOTE_TAGS" ]; then
+        echo "⚠️  无法获取远程标签,显示本地标签:"
+        git tag --list | sort -V
+    else
+        echo "$REMOTE_TAGS" | sort -V | uniq
+    fi
+    exit 0
+fi
+
+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
 fi
 
-# 检查是否有未提交的更改
+echo "🚀 开始发布 版本: $VERSION"
+
+# 检查工作目录是否干净
 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
     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 "正在推送标签到 gitea 远程仓库..."
-git push gitea "$VERSION"
+# 创建标签
+echo "🏷️  创建标签 $TAG..."
+git tag "$TAG"
 
-if [ $? -ne 0 ]; then
-    echo "错误: 推送标签失败"
-    exit 1
-fi
+# 推送标签
+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"