Files
go-lcg/deploy/4.build-binaries.sh

115 lines
3.7 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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"