- 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
95 lines
2.4 KiB
Bash
Executable File
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\""
|