Files
ai-shell/scripts/release.sh
zackeryyy wang 0f5f740e96 feat: add Git workflow and release automation
- Add comprehensive Git workflow documentation
- Create automated release script (scripts/release.sh)
- Enhance Makefile with Git operations and release commands
- Add version tagging and remote push automation
- Include project status checking and validation
- Support for patch/minor/major release workflows
2025-07-12 22:10:18 +08:00

95 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
# AI Shell 自动发布脚本
set -e
VERSION_TYPE=${1:-patch}
echo "🚀 AI Shell 自动发布流程开始..."
echo "版本类型: $VERSION_TYPE"
# 检查是否在项目根目录
if [ ! -f "pyproject.toml" ]; then
echo "❌ 请在 ai-shell 项目根目录中运行此脚本"
exit 1
fi
# 检查工作区是否干净
if [ -n "$(git status --porcelain)" ]; then
echo "❌ 工作区有未提交的更改,请先提交或暂存"
git status --short
exit 1
fi
# 获取当前版本
CURRENT_VERSION=$(grep '__version__' ai_shell/__init__.py | cut -d'"' -f2)
echo "当前版本: $CURRENT_VERSION"
# 升级版本
echo "📈 升级版本..."
python scripts/bump_version.py $VERSION_TYPE
# 获取新版本
NEW_VERSION=$(grep '__version__' ai_shell/__init__.py | cut -d'"' -f2)
echo "新版本: $NEW_VERSION"
# 重新构建
echo "📦 重新构建..."
uv build
# 重新安装
echo "🔧 重新安装..."
uv tool install . --force
# 验证安装
echo "🧪 验证安装..."
if command -v ai &> /dev/null; then
INSTALLED_VERSION=$(ai --version 2>/dev/null | grep -o 'v[0-9]\+\.[0-9]\+\.[0-9]\+' | sed 's/v//' || echo "unknown")
if [ "$INSTALLED_VERSION" = "$NEW_VERSION" ]; then
echo "✅ 安装验证成功: $INSTALLED_VERSION"
else
echo "⚠️ 版本不匹配: 期望 $NEW_VERSION, 实际 $INSTALLED_VERSION"
fi
else
echo "⚠️ ai 命令未找到,可能需要重新加载 shell"
fi
# 提交更改
echo "📝 提交更改..."
git add .
git commit -m "bump: version to v$NEW_VERSION
- Update version from $CURRENT_VERSION to $NEW_VERSION
- Rebuild package and update dependencies
- Ready for release"
# 创建标签
echo "🏷️ 创建版本标签..."
git tag -a "v$NEW_VERSION" -m "Release version $NEW_VERSION
Changes in this release:
- Version bump from $CURRENT_VERSION to $NEW_VERSION
- Package rebuild and dependency updates"
# 推送到远程
echo "🚀 推送到远程仓库..."
git push
git push --tags
echo ""
echo "✅ 发布完成!"
echo ""
echo "📋 发布信息:"
echo " 版本: v$NEW_VERSION"
echo " 标签: v$NEW_VERSION"
echo " 仓库: https://gitea.nosuchip.de/zack/ai-shell"
echo ""
echo "🔗 查看发布:"
echo " 代码: https://gitea.nosuchip.de/zack/ai-shell/src/tag/v$NEW_VERSION"
echo " 标签: https://gitea.nosuchip.de/zack/ai-shell/releases/tag/v$NEW_VERSION"
echo ""
echo "🧪 测试新版本:"
echo " ai --version"
echo " ai --config"
echo " ai \"echo test\""