Files
go-service/build.sh
2026-07-03 11:20:01 +03:00

85 lines
2.4 KiB
Bash

#!/usr/bin/env bash
set -e # Остановка при любой ошибке
APP_NAME="gpio-monitor-server"
CMD_PATH="./cmd/server"
BUILD_DIR="./build"
echo "СБОРКА GPIO MONITOR SERVER"
# ===== 1. СБОРКА TYPESCRIPT =====
echo ""
echo "Шаг 1/4: Сборка TypeScript фронтенда..."
cd ~/temp/golang/cmd/server/web
# Проверяем наличие node_modules
if [ ! -d "node_modules" ]; then
echo " Установка npm зависимостей..."
npm install
fi
# Собираем TypeScript
echo " Компиляция TypeScript в JavaScript..."
npm run build
if [ -d "dist" ]; then
echo " TypeScript скомпилирован успешно!"
echo " Скомпилированные файлы: $(ls dist/ | wc -l) файлов"
else
echo " Ошибка: папка dist не создана!"
exit 1
fi
# ===== 2. ПОДГОТОВКА GO СБОРКИ =====
echo ""
echo "Шаг 2/4: Подготовка Go сборки..."
cd ~/temp/golang
echo " Очистка старой сборки..."
rm -rf ${BUILD_DIR}
mkdir -p ${BUILD_DIR}
echo " Загрузка зависимостей..."
go mod tidy
# ===== 3. КОМПИЛЯЦИЯ GO =====
echo ""
echo "Шаг 3/4: Компиляция Go сервера..."
# Для Raspberry Pi (ARM64)
echo " Целевая платформа: Linux ARM64"
GOOS=linux GOARCH=arm64 go build -o ${BUILD_DIR}/${APP_NAME} ${CMD_PATH}
# Проверяем успешность сборки
if [ -f "${BUILD_DIR}/${APP_NAME}" ]; then
echo " Go сервер скомпилирован успешно!"
else
echo " Ошибка компиляции Go сервера!"
exit 1
fi
# ===== 4. ФИНАЛЬНЫЕ ДЕЙСТВИЯ =====
echo ""
echo "Шаг 4/4: Финальная проверка..."
# Проверяем размер
SIZE=$(ls -lh ${BUILD_DIR}/${APP_NAME} | awk '{print $5}')
echo " Размер бинарного файла: ${SIZE}"
# Проверяем наличие embed файлов
echo " Проверка встроенных файлов..."
if [ -d "cmd/server/web/dist" ]; then
echo " TypeScript файлы (dist) включены в сборку"
fi
if [ -d "cmd/server/web/css" ]; then
echo " CSS файлы включены в сборку"
fi
if [ -f "cmd/server/web/dashboard.html" ]; then
echo " HTML файлы включены в сборку"
fi
echo "СБОРКА ЗАВЕРШЕНА!"