mirror of
https://github.com/Direct-Dev-Ru/go-lcg.git
synced 2025-11-16 09:39:56 +00:00
115 lines
3.7 KiB
Bash
Executable File
115 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# 🚀 LCG Binary Build Script
|
||
# Скрипт для сборки бинарных файлов с помощью goreleaser на хосте
|
||
|
||
set -e
|
||
|
||
# Цвета для вывода
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
BLUE='\033[0;34m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# Функция для вывода сообщений
|
||
log() {
|
||
echo -e "${BLUE}[$(date +'%Y-%m-%d %H:%M:%S')]${NC} $1"
|
||
}
|
||
|
||
success() {
|
||
echo -e "${GREEN}✅ $1${NC}"
|
||
}
|
||
|
||
warning() {
|
||
echo -e "${YELLOW}⚠️ $1${NC}"
|
||
}
|
||
|
||
error() {
|
||
echo -e "${RED}❌ $1${NC}"
|
||
}
|
||
|
||
# Параметры
|
||
VERSION=${1:-"dev"}
|
||
# CLEAN=${2:-"true"}
|
||
|
||
# Записываем версию в файл VERSION.txt (в корневой директории проекта)
|
||
echo "$VERSION" > VERSION.txt
|
||
log "📝 Версия записана в VERSION.txt: $VERSION"
|
||
|
||
log "🚀 Сборка бинарных файлов LCG с goreleaser..."
|
||
|
||
# Проверяем наличие goreleaser
|
||
if ! command -v goreleaser &> /dev/null; then
|
||
error "goreleaser не найден. Установите goreleaser:"
|
||
echo " curl -sL https://github.com/goreleaser/goreleaser/releases/latest/download/goreleaser_Linux_x86_64.tar.gz | tar -xz -C /usr/local/bin goreleaser"
|
||
exit 1
|
||
fi
|
||
|
||
# Проверяем наличие Go
|
||
if ! command -v go &> /dev/null; then
|
||
error "Go не найден. Установите Go для сборки."
|
||
exit 1
|
||
fi
|
||
|
||
# Переходим в корневую директорию проекта
|
||
cd "$(dirname "$0")/.."
|
||
|
||
log "📁 Рабочая директория: $(pwd)"
|
||
log "📁 Папка dist будет создана в: $(pwd)/dist"
|
||
|
||
# Очищаем предыдущие сборки если нужно
|
||
# if [ "$CLEAN" = "true" ]; then
|
||
# log "🧹 Очистка предыдущих сборок..."
|
||
# rm -rf dist/
|
||
# goreleaser clean
|
||
# fi
|
||
|
||
# Проверяем наличие .goreleaser.yaml
|
||
if [ ! -f "deploy/.goreleaser.yaml" ]; then
|
||
error "Файл .goreleaser.yaml не найден в папке deploy/"
|
||
exit 1
|
||
fi
|
||
|
||
# Копируем конфигурацию goreleaser в корень проекта
|
||
log "📋 Копирование конфигурации goreleaser..."
|
||
cp deploy/.goreleaser.yaml .goreleaser.yaml
|
||
|
||
# Устанавливаем переменные окружения для версии
|
||
export GORELEASER_CURRENT_TAG="$VERSION"
|
||
|
||
# Собираем бинарные файлы
|
||
log "🏗️ Сборка бинарных файлов для всех платформ..."
|
||
goreleaser build --snapshot --clean
|
||
|
||
# Проверяем результат
|
||
if [ -d "dist" ]; then
|
||
log "📊 Собранные бинарные файлы:"
|
||
find dist -name "lcg_*" -type f | while read -r binary; do
|
||
echo " $binary ($(stat -c%s "$binary") bytes, $(file "$binary" | cut -d: -f2))"
|
||
done
|
||
|
||
success "🎉 Бинарные файлы успешно собраны!"
|
||
|
||
# Показываем структуру dist/
|
||
log "📁 Структура папки dist/:"
|
||
tree -h dist/ 2>/dev/null || find dist -type f | sort
|
||
|
||
else
|
||
error "Папка dist/ не создана. Проверьте конфигурацию goreleaser."
|
||
exit 1
|
||
fi
|
||
|
||
# Очищаем временный файл конфигурации
|
||
rm -f .goreleaser.yaml
|
||
|
||
success "🎉 Сборка бинарных файлов завершена!"
|
||
|
||
# Показываем команды для Docker сборки
|
||
echo ""
|
||
log "📝 Следующие шаги:"
|
||
echo " cd deploy"
|
||
echo " docker buildx build --platform linux/amd64,linux/arm64 --tag your-registry.com/lcg:$VERSION --push ."
|
||
echo " # или используйте скрипт:"
|
||
echo " ./5.build-docker.sh your-registry.com/lcg $VERSION"
|