| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #!/bin/bash
- # 发布脚本
- # 使用方法: ./release.sh <版本号>
- # 例如: ./release.sh 1.0.0
- set -e
- # 检查参数
- if [ $# -eq 0 ]; then
- echo "错误: 请提供版本号"
- echo "使用方法: $0 <版本号>"
- echo "例如: $0 1.0.0"
- exit 1
- fi
- VERSION="$1"
- TAG="v$VERSION"
- # 验证版本号格式
- 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 "⚠️ 警告: 工作目录有未提交的更改"
- git status
- read -p "是否继续发布? [y/N] " -n 1 -r
- echo
- if [[ ! $REPLY =~ ^[Yy]$ ]]; then
- echo "发布已取消"
- exit 1
- fi
- fi
- # 检查当前分支
- CURRENT_BRANCH=$(git branch --show-current)
- echo "🌿 当前分支: $CURRENT_BRANCH"
- # 拉取最新代码
- echo "📥 拉取最新代码..."
- git pull gitea "$CURRENT_BRANCH"
- # 运行测试
- echo "🧪 运行测试..."
- yarn test
- # 运行类型检查
- echo "🔍 运行类型检查..."
- yarn build
- echo "✅ 所有检查通过"
- # 创建标签
- echo "🏷️ 创建标签 $TAG..."
- git tag "$TAG"
- # 推送标签
- echo "📤 推送标签到远程仓库..."
- git push gitea "$TAG"
- 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"
|