This commit is contained in:
93
scripts/ci/build.sh
Executable file
93
scripts/ci/build.sh
Executable file
@@ -0,0 +1,93 @@
|
||||
#!/bin/bash
|
||||
# scripts/ci/build.sh - Сборка приложения
|
||||
|
||||
set -e
|
||||
|
||||
echo "🏗️ Building CatLink application..."
|
||||
|
||||
# Проверка окружения
|
||||
echo "📋 Checking environment..."
|
||||
echo " • Docker version: $(docker --version)"
|
||||
echo " • Docker Compose version: $(docker-compose --version)"
|
||||
echo " • Current directory: $(pwd)"
|
||||
echo " • Available space: $(df -h . | tail -1 | awk '{print $4}')"
|
||||
|
||||
# Создание .env файла для CI если не существует
|
||||
if [ ! -f ".env" ]; then
|
||||
echo "⚙️ Creating .env file for CI..."
|
||||
cp .env.example .env
|
||||
|
||||
# Установка переменных для CI
|
||||
cat >> .env << EOF
|
||||
|
||||
# CI/CD Variables
|
||||
CI=true
|
||||
NODE_ENV=test
|
||||
DJANGO_ENV=test
|
||||
DEBUG=False
|
||||
DATABASE_URL=postgres://catlink:catlink@postgres:5432/catlink_test
|
||||
SECRET_KEY=ci-secret-key-for-testing-only
|
||||
ALLOWED_HOSTS=localhost,127.0.0.1,testserver
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Очистка предыдущих сборок
|
||||
echo "🧹 Cleaning up previous builds..."
|
||||
docker-compose down --remove-orphans || true
|
||||
docker system prune -f || true
|
||||
|
||||
# Сборка образов
|
||||
echo "🔨 Building Docker images..."
|
||||
echo " • Building backend image..."
|
||||
docker-compose build web --no-cache
|
||||
|
||||
echo " • Building frontend image..."
|
||||
docker-compose build frontend --no-cache
|
||||
|
||||
# Проверка размера образов
|
||||
echo "📊 Checking image sizes..."
|
||||
docker images | grep -E "(catlink|links)" | head -10
|
||||
|
||||
# Запуск контейнеров для проверки
|
||||
echo "🚀 Starting containers for verification..."
|
||||
docker-compose up -d
|
||||
|
||||
# Ожидание готовности сервисов
|
||||
echo "⏳ Waiting for services to be ready..."
|
||||
sleep 30
|
||||
|
||||
# Проверка статуса контейнеров
|
||||
echo "🔍 Checking container status..."
|
||||
docker-compose ps
|
||||
|
||||
# Проверка логов на ошибки
|
||||
echo "📋 Checking logs for errors..."
|
||||
docker-compose logs web | tail -20
|
||||
docker-compose logs frontend | tail -20
|
||||
|
||||
# Проверка здоровья сервисов
|
||||
echo "🏥 Health check..."
|
||||
backend_health=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/api/ || echo "000")
|
||||
frontend_health=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:3000 || echo "000")
|
||||
|
||||
echo " • Backend API health: $backend_health"
|
||||
echo " • Frontend health: $frontend_health"
|
||||
|
||||
if [ "$backend_health" = "200" ] && [ "$frontend_health" = "200" ]; then
|
||||
echo "✅ Build completed successfully!"
|
||||
echo " • Backend: http://localhost:8000"
|
||||
echo " • Frontend: http://localhost:3000"
|
||||
else
|
||||
echo "❌ Build failed - services not responding properly"
|
||||
echo "Backend logs:"
|
||||
docker-compose logs web | tail -50
|
||||
echo "Frontend logs:"
|
||||
docker-compose logs frontend | tail -50
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Экспорт образов для последующих этапов
|
||||
echo "💾 Exporting images for next stages..."
|
||||
docker save -o /tmp/catlink-images.tar $(docker images --format "{{.Repository}}:{{.Tag}}" | grep -E "(catlink|links)")
|
||||
|
||||
echo "🎉 Build stage completed successfully!"
|
||||
Reference in New Issue
Block a user