#!/bin/bash # 版本发布脚本 # 使用方法: ./scripts/release.sh v1.0.0 "Release message" set -e VERSION=$1 MESSAGE=$2 if [ -z "$VERSION" ]; then echo "错误: 请提供版本号" echo "使用方法: ./scripts/release.sh v1.0.0 \"Release message\"" exit 1 fi if [ -z "$MESSAGE" ]; then MESSAGE="Release $VERSION" fi # 验证版本号格式 (v主版本号.次版本号.修订号) if ! [[ $VERSION =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then echo "错误: 版本号格式不正确,应为 v主版本号.次版本号.修订号 (例如: v1.0.0)" exit 1 fi echo "准备发布版本: $VERSION" echo "发布信息: $MESSAGE" echo "" # 检查是否有未提交的更改 if [ -n "$(git status --porcelain)" ]; then echo "警告: 检测到未提交的更改" read -p "是否继续? (y/n) " -n 1 -r echo if [[ ! $REPLY =~ ^[Yy]$ ]]; then exit 1 fi fi # 检查标签是否已存在 if git rev-parse "$VERSION" >/dev/null 2>&1; then echo "错误: 版本标签 $VERSION 已存在" exit 1 fi # 创建标签 echo "创建版本标签..." git tag -a "$VERSION" -m "$MESSAGE" # 询问是否推送 read -p "是否推送到远程仓库? (y/n) " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then echo "推送标签到远程仓库..." git push origin "$VERSION" echo "版本 $VERSION 已成功发布!" else echo "标签已创建,但未推送。使用以下命令推送:" echo " git push origin $VERSION" fi echo "" echo "完成! 调用方现在可以使用以下命令安装此版本:" echo " go get git.toowon.com/jimmy/go-common@$VERSION"