dev fix pipline
Test Workflow / test (push) Successful in 4s

This commit is contained in:
vladp
2026-01-26 21:00:22 +07:00
parent 300383e523
commit 9ba3d8b973
+72 -64
View File
@@ -17,6 +17,7 @@ pipeline {
stages { stages {
stage('Git pull') { stage('Git pull') {
steps { steps {
cleanWs()
script { script {
checkout([ checkout([
$class: 'GitSCM', $class: 'GitSCM',
@@ -30,7 +31,6 @@ pipeline {
} }
} }
stage('Deploy with docker-compose') { stage('Deploy with docker-compose') {
steps { steps {
script { script {
@@ -44,68 +44,76 @@ pipeline {
string(credentialsId: 'DB_PASSWORD', variable: 'DB_PASSWORD') string(credentialsId: 'DB_PASSWORD', variable: 'DB_PASSWORD')
]) { ]) {
sh """ sh """
echo "Deploying branch: ${params.BRANCH}" echo "Deploying branch: ${params.BRANCH}"
echo "Copying files to server..." echo "Copying files to server..."
sshpass -p '$SSH_PASS' ssh -o StrictHostKeyChecking=no $SSH_USER@$SERVER "mkdir -p /opt/deployments/${params.BRANCH}" sshpass -p '$SSH_PASS' ssh -o StrictHostKeyChecking=no $SSH_USER@$SERVER "mkdir -p /opt/deployments/${params.BRANCH}"
sshpass -p '$SSH_PASS' scp -r -o StrictHostKeyChecking=no ./* $SSH_USER@$SERVER:/opt/deployments/${params.BRANCH}/
sshpass -p '$SSH_PASS' rsync -av --delete \\
sshpass -p '$SSH_PASS' ssh -o StrictHostKeyChecking=no $SSH_USER@$SERVER " --exclude=.git \\
cd /opt/deployments/${params.BRANCH} --exclude=.gradle \\
--exclude=build \\
echo '1. Остановка старого приложения...' --exclude=**/build \\
docker stop app-backend 2>/dev/null || echo 'Контейнер не найден' --exclude=.idea \\
docker rm app-backend 2>/dev/null || echo 'Контейнер не найден' --exclude=out \\
. $SSH_USER@$SERVER:/opt/deployments/${params.BRANCH}/
echo '2. Удаление старых образов...'
docker images --filter 'reference=*app*' -q | xargs -r docker rmi -f 2>/dev/null || echo 'Нет образов для удаления' sshpass -p '$SSH_PASS' ssh -o StrictHostKeyChecking=no $SSH_USER@$SERVER "
cd /opt/deployments/${params.BRANCH}
echo '3. Создание сети если нужно...'
docker network create app-network 2>/dev/null || echo 'Сеть уже существует' echo '1. Остановка старого приложения...'
docker stop app-backend 2>/dev/null || echo 'Контейнер не найден'
echo '4. Запуск инфраструктуры...' docker rm app-backend 2>/dev/null || echo 'Контейнер не найден'
docker-compose up -d db storage
echo '2. Удаление старых образов...'
echo '5. Ожидание PostgreSQL...' docker images --filter 'reference=*app*' -q | xargs -r docker rmi -f 2>/dev/null || echo 'Нет образов для удаления'
sleep 10
echo '3. Создание сети если нужно...'
echo '6. Сборка нового образа приложения...' docker network create app-network 2>/dev/null || echo 'Сеть уже существует'
docker build --no-cache -t app-backend:latest .
echo '4. Запуск инфраструктуры...'
echo '7. Запуск приложения...' docker-compose up -d db storage
docker run -d \\
--name app-backend \\ echo '5. Ожидание PostgreSQL...'
--network app-network \\ sleep 10
--network-alias app \\
-p 80:8080 \\ echo '6. Сборка нового образа приложения...'
-v uploads_data:/data/uploads:rw \\ docker build --no-cache -t app-backend:latest .
-e POSTGRES_DB=no_copy_ \\
-e POSTGRES_USER=$DB_USER \\ echo '7. Запуск приложения...'
-e POSTGRES_PASSWORD=$DB_PASSWORD \\ docker run -d \\
-e POSTGRES_PORT=5432 \\ --name app-backend \\
-e POSTGRES_HOST=db \\ --network app-network \\
--restart unless-stopped \\ --network-alias app \\
app-backend:latest -p 80:8080 \\
-v uploads_data:/data/uploads:rw \\
echo '8. Запуск мониторинга...' -e POSTGRES_DB=no_copy_ \\
docker-compose up -d grafana prometheus loki tempo alloy -e POSTGRES_USER=$DB_USER \\
-e POSTGRES_PASSWORD=$DB_PASSWORD \\
echo '9. Проверка...' -e POSTGRES_PORT=5432 \\
sleep 5 -e POSTGRES_HOST=db \\
--restart unless-stopped \\
echo 'Статус контейнеров:' app-backend:latest
docker ps --format 'table {{.Names}}\\t{{.Image}}\\t{{.Status}}'
echo '8. Запуск мониторинга...'
echo '10. Проверка health...' docker-compose up -d grafana prometheus loki tempo alloy
if curl -s -f http://localhost:80/health > /dev/null 2>&1; then
echo 'Приложение работает' echo '9. Проверка...'
echo 'URL: http://${params.SERVER}:80' sleep 5
else
echo 'Проверка health не удалась' echo 'Статус контейнеров:'
docker logs app-backend --tail=20 docker ps --format 'table {{.Names}}\\t{{.Image}}\\t{{.Status}}'
fi
" echo '10. Проверка health...'
""" if curl -s -f http://localhost:80/health > /dev/null 2>&1; then
echo 'Приложение работает'
echo 'URL: http://${params.SERVER}:80'
else
echo 'Проверка health не удалась'
docker logs app-backend --tail=20
fi
"
"""
} }
} }
} }
@@ -124,4 +132,4 @@ pipeline {
echo "Deployment process finished" echo "Deployment process finished"
} }
} }
} }