#!/bin/bash # Скрипт для автоматизации релиза # Использование: ./scripts/release.sh # Пример: ./scripts/release.sh 1.0.25 set -e # Остановить выполнение при ошибке # Проверка аргументов if [ $# -eq 0 ]; then echo "Ошибка: Необходимо указать версию" echo "Использование: $0 " echo "Пример: $0 1.0.25" exit 1 fi VERSION=$1 # Проверка формата версии (простая проверка) if [[ ! $VERSION =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then echo "Ошибка: Неверный формат версии. Используйте формат X.Y.Z (например, 1.0.25)" exit 1 fi echo "🚀 Начинаем релиз версии v$VERSION..." # Проверяем, что мы в git репозитории if ! git rev-parse --git-dir > /dev/null 2>&1; then echo "Ошибка: Не найден git репозиторий" exit 1 fi # Проверяем, что нет незакоммиченных изменений if ! git diff-index --quiet HEAD --; then echo "Ошибка: Есть незакоммиченные изменения. Сначала закоммитьте их." exit 1 fi # Обновляем версию в main.go echo "📝 Обновляем версию в main.go..." if [[ "$OSTYPE" == "darwin"* ]]; then # macOS sed -i '' "s/const version = \"[^\"]*\"/const version = \"$VERSION\"/" main.go else # Linux sed -i "s/const version = \"[^\"]*\"/const version = \"$VERSION\"/" main.go fi # Проверяем, что изменение применилось if ! grep -q "const version = \"$VERSION\"" main.go; then echo "Ошибка: Не удалось обновить версию в main.go" exit 1 fi echo "✅ Версия обновлена в main.go" # Выполняем git команды echo "📦 Добавляем изменения в git..." git add . echo "💾 Создаем коммит..." git commit -m "Release v$VERSION" echo "🏷️ Создаем тег..." git tag -a "v$VERSION" -m "Release v$VERSION" echo "🚀 Отправляем изменения и теги..." git push git push --tags echo "🎉 Релиз v$VERSION успешно завершен!" echo "📋 Выполненные действия:" echo " - Обновлена версия в main.go" echo " - Создан коммит с сообщением 'Release v$VERSION'" echo " - Создан тег v$VERSION" echo " - Изменения отправлены в удаленный репозиторий"