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
+58 -50
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' ssh -o StrictHostKeyChecking=no $SSH_USER@$SERVER " sshpass -p '$SSH_PASS' rsync -av --delete \\
cd /opt/deployments/${params.BRANCH} --exclude=.git \\
--exclude=.gradle \\
--exclude=build \\
--exclude=**/build \\
--exclude=.idea \\
--exclude=out \\
. $SSH_USER@$SERVER:/opt/deployments/${params.BRANCH}/
echo '1. Остановка старого приложения...' sshpass -p '$SSH_PASS' ssh -o StrictHostKeyChecking=no $SSH_USER@$SERVER "
docker stop app-backend 2>/dev/null || echo 'Контейнер не найден' cd /opt/deployments/${params.BRANCH}
docker rm app-backend 2>/dev/null || echo 'Контейнер не найден'
echo '2. Удаление старых образов...' echo '1. Остановка старого приложения...'
docker images --filter 'reference=*app*' -q | xargs -r docker rmi -f 2>/dev/null || echo 'Нет образов для удаления' docker stop app-backend 2>/dev/null || echo 'Контейнер не найден'
docker rm app-backend 2>/dev/null || echo 'Контейнер не найден'
echo '3. Создание сети если нужно...' echo '2. Удаление старых образов...'
docker network create app-network 2>/dev/null || echo 'Сеть уже существует' docker images --filter 'reference=*app*' -q | xargs -r docker rmi -f 2>/dev/null || echo 'Нет образов для удаления'
echo '4. Запуск инфраструктуры...' echo '3. Создание сети если нужно...'
docker-compose up -d db storage docker network create app-network 2>/dev/null || echo 'Сеть уже существует'
echo '5. Ожидание PostgreSQL...' echo '4. Запуск инфраструктуры...'
sleep 10 docker-compose up -d db storage
echo '6. Сборка нового образа приложения...' echo '5. Ожидание PostgreSQL...'
docker build --no-cache -t app-backend:latest . sleep 10
echo '7. Запуск приложения...' echo '6. Сборка нового образа приложения...'
docker run -d \\ docker build --no-cache -t app-backend:latest .
--name app-backend \\
--network app-network \\
--network-alias app \\
-p 80:8080 \\
-v uploads_data:/data/uploads:rw \\
-e POSTGRES_DB=no_copy_ \\
-e POSTGRES_USER=$DB_USER \\
-e POSTGRES_PASSWORD=$DB_PASSWORD \\
-e POSTGRES_PORT=5432 \\
-e POSTGRES_HOST=db \\
--restart unless-stopped \\
app-backend:latest
echo '8. Запуск мониторинга...' echo '7. Запуск приложения...'
docker-compose up -d grafana prometheus loki tempo alloy docker run -d \\
--name app-backend \\
--network app-network \\
--network-alias app \\
-p 80:8080 \\
-v uploads_data:/data/uploads:rw \\
-e POSTGRES_DB=no_copy_ \\
-e POSTGRES_USER=$DB_USER \\
-e POSTGRES_PASSWORD=$DB_PASSWORD \\
-e POSTGRES_PORT=5432 \\
-e POSTGRES_HOST=db \\
--restart unless-stopped \\
app-backend:latest
echo '9. Проверка...' echo '8. Запуск мониторинга...'
sleep 5 docker-compose up -d grafana prometheus loki tempo alloy
echo 'Статус контейнеров:' echo '9. Проверка...'
docker ps --format 'table {{.Names}}\\t{{.Image}}\\t{{.Status}}' sleep 5
echo '10. Проверка health...' echo 'Статус контейнеров:'
if curl -s -f http://localhost:80/health > /dev/null 2>&1; then docker ps --format 'table {{.Names}}\\t{{.Image}}\\t{{.Status}}'
echo 'Приложение работает'
echo 'URL: http://${params.SERVER}:80' echo '10. Проверка health...'
else if curl -s -f http://localhost:80/health > /dev/null 2>&1; then
echo 'Проверка health не удалась' echo 'Приложение работает'
docker logs app-backend --tail=20 echo 'URL: http://${params.SERVER}:80'
fi else
" echo 'Проверка health не удалась'
""" docker logs app-backend --tail=20
fi
"
"""
} }
} }
} }