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
This commit is contained in:
94
scripts/release.sh
Executable file
94
scripts/release.sh
Executable file
@ -0,0 +1,94 @@
|
||||
#!/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\""
|
Reference in New Issue
Block a user