自动生成 go sdk
This commit is contained in:
34
script/get_next_version.sh
Executable file
34
script/get_next_version.sh
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 版本号管理脚本:负责生成并返回下一个版本号
|
||||
# 递增规则:每次递增MINOR位,重置PATCH位为0
|
||||
|
||||
# 获取proto根目录
|
||||
ROOT_DIR=$(dirname "$(dirname "$0")")
|
||||
|
||||
# 确保version.txt文件存在并设置默认值
|
||||
if [ ! -f "$ROOT_DIR/version.txt" ]; then
|
||||
echo "1.0.0" > "$ROOT_DIR/version.txt"
|
||||
echo "警告:version.txt文件不存在,已创建并设置默认值1.0.0"
|
||||
fi
|
||||
|
||||
# 读取当前版本号
|
||||
CURRENT_VERSION=$(cat "$ROOT_DIR/version.txt")
|
||||
|
||||
# 解析版本号的MAJOR、MINOR和PATCH部分
|
||||
MAJOR=$(echo $CURRENT_VERSION | cut -d. -f1)
|
||||
MINOR=$(echo $CURRENT_VERSION | cut -d. -f2)
|
||||
PATCH=$(echo $CURRENT_VERSION | cut -d. -f3)
|
||||
|
||||
# 递增MINOR版本号并重置PATCH为0
|
||||
MINOR=$((MINOR + 1))
|
||||
PATCH=0
|
||||
|
||||
# 生成新版本号
|
||||
NEW_VERSION="$MAJOR.$MINOR.$PATCH"
|
||||
|
||||
# 更新version.txt文件
|
||||
echo "$NEW_VERSION" > "$ROOT_DIR/version.txt"
|
||||
|
||||
# 输出版本号变更信息
|
||||
echo "版本号已从 $CURRENT_VERSION 更新到 $NEW_VERSION"
|
||||
97
script/publish-git.sh
Executable file
97
script/publish-git.sh
Executable file
@@ -0,0 +1,97 @@
|
||||
#!/bin/bash
|
||||
|
||||
# git操作发布脚本
|
||||
# 参数1: 远程仓库URL
|
||||
# 参数2: 工作目录
|
||||
|
||||
# 确保提供了必要的参数
|
||||
if [ $# -lt 2 ]; then
|
||||
echo "错误:缺少必要参数"
|
||||
echo "用法:$0 <远程仓库URL> <工作目录>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
REMOTE_REPO="$1"
|
||||
WORK_DIR="$2"
|
||||
|
||||
# 获取版本号
|
||||
echo "正在获取版本号..."
|
||||
# 返回proto根目录获取version.txt
|
||||
ROOT_DIR=$(dirname "$(dirname "$0")")
|
||||
NEW_VERSION=$(cat "$ROOT_DIR/version.txt")
|
||||
NEW_TAG="v$NEW_VERSION"
|
||||
echo "使用的版本号: $NEW_TAG"
|
||||
|
||||
# 创建临时目录用于克隆仓库
|
||||
TEMP_DIR=$(mktemp -d)
|
||||
echo "创建临时目录: $TEMP_DIR"
|
||||
|
||||
# 清理函数,确保临时目录被删除
|
||||
trap "rm -rf \"$TEMP_DIR\"" EXIT
|
||||
|
||||
# 1. 在临时目录克隆远程仓库,只获取.git目录
|
||||
echo "在临时目录克隆远程仓库..."
|
||||
git clone --no-checkout "$REMOTE_REPO" "$TEMP_DIR"
|
||||
|
||||
# 2. 确保工作目录存在
|
||||
if [ ! -d "$WORK_DIR" ]; then
|
||||
echo "创建工作目录: $WORK_DIR"
|
||||
mkdir -p "$WORK_DIR"
|
||||
fi
|
||||
|
||||
# 3. 复制.git目录到工作目录
|
||||
# 先删除工作目录中可能存在的.git目录
|
||||
if [ -d "$WORK_DIR/.git" ]; then
|
||||
echo "删除工作目录中已有的.git目录..."
|
||||
rm -rf "$WORK_DIR/.git"
|
||||
fi
|
||||
|
||||
echo "将.git目录复制到工作目录..."
|
||||
cp -a "$TEMP_DIR/.git" "$WORK_DIR/"
|
||||
|
||||
# 4. 切换到工作目录
|
||||
cd "$WORK_DIR"
|
||||
|
||||
# 5. 添加所有文件
|
||||
echo "添加文件..."
|
||||
git add .
|
||||
|
||||
# 6. 检查是否有更改需要提交
|
||||
if ! git diff --cached --exit-code > /dev/null; then
|
||||
echo "提交更改..."
|
||||
git commit -m "自动生成 protobuf 代码 (tag: $NEW_TAG)"
|
||||
else
|
||||
echo "没有更改需要提交,创建空提交..."
|
||||
git commit --allow-empty -m "自动生成 protobuf 代码 (tag: $NEW_TAG)"
|
||||
fi
|
||||
|
||||
# 7. 如果标签已存在,先删除
|
||||
if git rev-parse --verify "$NEW_TAG" > /dev/null 2>&1; then
|
||||
echo "标签 $NEW_TAG 已存在,先删除..."
|
||||
git tag -d "$NEW_TAG"
|
||||
# 同时删除远程标签
|
||||
git push origin :refs/tags/"$NEW_TAG"
|
||||
fi
|
||||
|
||||
# 8. 创建新标签
|
||||
echo "创建标签..."
|
||||
git tag "$NEW_TAG"
|
||||
|
||||
# 9. 推送标签和分支
|
||||
echo "推送标签和分支..."
|
||||
|
||||
# 先推送标签
|
||||
git push origin "$NEW_TAG"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "错误:标签推送失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 再推送分支
|
||||
git push origin main
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "警告:分支推送失败,请检查远程仓库状态"
|
||||
echo "标签 $NEW_TAG 已成功发布到仓库 $REMOTE_REPO"
|
||||
else
|
||||
echo "成功发布版本 $NEW_TAG 和分支到仓库 $REMOTE_REPO"
|
||||
fi
|
||||
38
script/test_version_script.sh
Executable file
38
script/test_version_script.sh
Executable file
@@ -0,0 +1,38 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 测试版本号管理脚本
|
||||
|
||||
# 设置测试环境
|
||||
echo "设置测试环境..."
|
||||
TEST_VERSION="1.0.0"
|
||||
echo "$TEST_VERSION" > version.txt
|
||||
|
||||
# 显示初始版本号
|
||||
echo "初始版本号: $(cat version.txt)"
|
||||
|
||||
# 测试独立脚本
|
||||
chmod +x get_next_version.sh
|
||||
|
||||
# 运行get_next_version.sh脚本
|
||||
echo -e "\n运行版本号管理脚本..."
|
||||
NEW_TAG=$(./get_next_version.sh)
|
||||
|
||||
# 显示更新后的版本号
|
||||
echo -e "\n更新后的版本号: $(cat version.txt)"
|
||||
|
||||
# 验证版本号是否正确递增
|
||||
expected_version="1.1.0"
|
||||
actual_version=$(cat version.txt)
|
||||
|
||||
echo -e "\n测试结果:"
|
||||
if [ "$actual_version" = "$expected_version" ]; then
|
||||
echo "✅ 版本号递增测试通过!"
|
||||
echo "成功将版本从 $TEST_VERSION 更新到 $actual_version"
|
||||
echo "生成的git tag: $NEW_TAG"
|
||||
else
|
||||
echo "❌ 版本号递增测试失败!"
|
||||
echo "期望版本: $expected_version, 实际版本: $actual_version"
|
||||
fi
|
||||
|
||||
# 清理测试环境
|
||||
echo "$TEST_VERSION" > version.txt
|
||||
Reference in New Issue
Block a user