fix job
Test Workflow / test (push) Successful in 2s

This commit is contained in:
vladp
2025-12-17 15:40:38 +07:00
parent 8b6f0f1072
commit 651b92cb59
+65 -12
View File
@@ -54,15 +54,26 @@ pipeline {
echo 'Step 1: Checking current state...' echo 'Step 1: Checking current state...'
# Смотрим что запущено # Смотрим что запущено
docker ps --filter 'name=postgres|app-backend' --format 'table {{.Names}}\\t{{.Status}}\\t{{.Ports}}' docker ps --filter 'name=postgres|app-backend' --format 'table {{.Names}}\\t{{.Image}}\\t{{.Status}}\\t{{.Ports}}'
echo 'Step 2: Stopping only application (keeping DB)...' echo 'Step 2: Force cleanup old application...'
# Останавливаем только приложение, БД оставляем работать # Принудительно удаляем старый контейнер и образ
docker stop app-backend 2>/dev/null || echo 'App not running' docker stop app-backend 2>/dev/null || echo 'App not running'
docker rm app-backend 2>/dev/null || echo 'App not found' docker rm app-backend 2>/dev/null || echo 'App not found'
docker rmi app-backend:latest 2>/dev/null || echo 'Image not found'
# Проверяем что БД работает, если нет - запускаем # Удаляем все образы app-backend
docker images --filter 'reference=app-backend*' -q | xargs -r docker rmi 2>/dev/null || echo 'No images to remove'
echo 'Step 3: Verify copied files...'
echo 'Files in directory:'
ls -la
echo ''
echo 'Checking Java sources:'
find . -name '*.java' | head -2
echo 'Step 4: Check if PostgreSQL is running...'
if ! docker ps | grep -q postgres; then if ! docker ps | grep -q postgres; then
echo 'Starting PostgreSQL...' echo 'Starting PostgreSQL...'
docker-compose up -d db docker-compose up -d db
@@ -71,13 +82,37 @@ pipeline {
echo 'PostgreSQL already running' echo 'PostgreSQL already running'
fi fi
echo 'Step 3: Building new application image...' echo 'Step 5: Build application with forced rebuild...'
docker build --no-cache -t app-backend:latest . echo 'Checking Dockerfile exists:'
ls -la Dockerfile 2>/dev/null || echo 'Dockerfile not found, creating simple one'
echo 'Step 4: Starting application...' # Если нет Dockerfile, создаем простой
if [ ! -f Dockerfile ]; then
echo 'Creating simple Dockerfile...'
cat > Dockerfile << 'EOF'
FROM eclipse-temurin:21-jre
WORKDIR /app
COPY . /app/
CMD ["java", "-jar", "app.jar"]
EOF
fi
# Собираем с подробным выводом
echo 'Building Docker image...'
docker build --no-cache --progress=plain -t app-backend:latest . 2>&1 | tail -50
echo 'Step 6: Verify new image...'
echo 'Current app-backend images:'
docker images | grep app-backend
echo 'Image creation time:'
docker inspect app-backend:latest --format='{{.Created}}' 2>/dev/null || echo 'Cannot inspect image'
echo 'Step 7: Starting application with alias...'
docker run -d \\ docker run -d \\
--name app-backend \\ --name app-backend \\
--network app-network \\ --network app-network \\
--network-alias app \\
-p 80:8080 \\ -p 80:8080 \\
-e POSTGRES_DB=no_copy_ \\ -e POSTGRES_DB=no_copy_ \\
-e POSTGRES_USER=postgres \\ -e POSTGRES_USER=postgres \\
@@ -87,17 +122,35 @@ pipeline {
--restart unless-stopped \\ --restart unless-stopped \\
app-backend:latest app-backend:latest
echo 'Step 5: Checking deployment...' echo 'Step 8: Checking deployment...'
sleep 10 sleep 10
echo 'Containers status:' echo 'Containers status:'
docker ps --filter 'name=postgres|app-backend' --format 'table {{.Names}}\\t{{.Status}}\\t{{.Ports}}' docker ps --filter 'name=postgres|app-backend' --format 'table {{.Names}}\\t{{.Image}}\\t{{.Status}}\\t{{.CreatedAt}}'
echo 'Application logs (last 5 lines):' echo 'Checking image inside container:'
docker logs --tail=5 app-backend 2>/dev/null || echo 'Logs not available yet' docker exec app-backend ls -la /app/ 2>/dev/null || echo 'Cannot check container files'
echo 'Application logs (last 10 lines):'
docker logs --tail=10 app-backend 2>/dev/null || echo 'Logs not available yet'
echo 'Step 9: Health check...'
if docker ps | grep -q app-backend; then if docker ps | grep -q app-backend; then
echo 'Deployment successful' echo 'Container is running'
echo 'Testing application health...'
for i in {1..5}; do
if curl -s -f http://localhost:80/health > /dev/null 2>&1; then
echo 'Health check passed'
echo 'Deployment successful'
echo 'Application URL: http://${params.SERVER}:80'
exit 0
fi
echo 'Waiting for application to start... attempt ' \$i
sleep 5
done
echo 'Health check failed, but container is running'
echo 'Application might be starting slowly'
echo 'Application URL: http://${params.SERVER}:80' echo 'Application URL: http://${params.SERVER}:80'
else else
echo 'Application failed to start' echo 'Application failed to start'