From 213ae881e6aba29121947c55183ba1e0e6612b00 Mon Sep 17 00:00:00 2001 From: backdev-1 Date: Sat, 9 May 2026 12:44:04 +0700 Subject: [PATCH] add section admin permission --- infrastrucure/deploy.groovy | 105 +++++++++++++++++++++--------------- 1 file changed, 61 insertions(+), 44 deletions(-) diff --git a/infrastrucure/deploy.groovy b/infrastrucure/deploy.groovy index d0cef2b..46850ae 100644 --- a/infrastrucure/deploy.groovy +++ b/infrastrucure/deploy.groovy @@ -23,9 +23,9 @@ pipeline { description: 'Имя сети (будет создана если не существует)' ) string( - name: 'DB_HOST', - defaultValue: 'db', - description: 'Хост базы данных' + name: 'DB_PORT', + defaultValue: '5454', + description: 'Порт для базы данных' ) } @@ -57,19 +57,14 @@ pipeline { ) ]) { sh """ - sshpass -p '${SSH_PASS}' ssh -o StrictHostKeyChecking=no ${SSH_USER}@${params.SERVER} " + sshpass -p '${SSH_PASS}' ssh -o StrictHostKeyChecking=no ${SSH_USER}@${params.SERVER} ' + mkdir -p /opt/deployments/admin-panel-${params.PORT} && rm -rf /opt/deployments/admin-panel-${params.PORT}/* - mkdir -p /opt/deployments/admin-panel-${params.PORT} - " + ' - sshpass -p '${SSH_PASS}' rsync -av --delete \\ - --exclude=.git \\ - --exclude=.gradle \\ - --exclude=build \\ - --exclude=**/build \\ - --exclude=.idea \\ - --exclude=out \\ - . ${SSH_USER}@${params.SERVER}:/opt/deployments/admin-panel-${params.PORT}/ + sshpass -p '${SSH_PASS}' scp -r -o StrictHostKeyChecking=no \ + . \ + ${SSH_USER}@${params.SERVER}:/opt/deployments/admin-panel-${params.PORT}/ """ } } @@ -85,9 +80,7 @@ pipeline { credentialsId: 'server-root-password', usernameVariable: 'SSH_USER', passwordVariable: 'SSH_PASS' - ), - string(credentialsId: 'DB_USER', variable: 'DB_USER'), - string(credentialsId: 'DB_PASSWORD', variable: 'DB_PASSWORD') + ) ]) { sh """ sshpass -p '${SSH_PASS}' ssh -o StrictHostKeyChecking=no ${SSH_USER}@${params.SERVER} " @@ -101,32 +94,56 @@ pipeline { echo 'Сеть ${params.NETWORK} уже существует' fi - echo '2. Останавливаем старый контейнер...' - docker stop admin-panel-${params.PORT} 2>/dev/null || echo 'Контейнер не найден' - docker rm admin-panel-${params.PORT} 2>/dev/null || echo 'Контейнер не найден' + echo '2. Останавливаем старые контейнеры...' + docker stop admin-panel-${params.PORT} 2>/dev/null || echo 'Контейнер приложения не найден' + docker rm admin-panel-${params.PORT} 2>/dev/null || echo 'Контейнер приложения не найден' + + docker stop admin-db-${params.PORT} 2>/dev/null || echo 'Контейнер БД не найден' + docker rm admin-db-${params.PORT} 2>/dev/null || echo 'Контейнер БД не найден' - echo '3. Собираем образ...' + echo '3. Запускаем базу данных...' + docker run -d \\ + --name admin-db-${params.PORT} \\ + --network ${params.NETWORK} \\ + --network-alias db \\ + -p ${params.DB_PORT}:5432 \\ + -v admin_db_data_${params.PORT}:/var/lib/postgresql/data \\ + -e POSTGRES_DB=admin_db \\ + -e POSTGRES_USER=admin \\ + -e POSTGRES_PASSWORD=adminDbApp \\ + --restart unless-stopped \\ + postgres:16 + + echo '4. Ждем готовности БД...' + sleep 5 + until docker exec admin-db-${params.PORT} pg_isready -U admin; do + echo 'Waiting for database...' + sleep 2 + done + echo 'База данных готова' + + echo '5. Собираем образ приложения...' docker build --no-cache -t admin-panel-${params.PORT}:latest . - echo '4. Запускаем контейнер...' + echo '6. Запускаем приложение...' docker run -d \\ - --name admin-panel-${params.PORT} \\ - --network ${params.NETWORK} \\ - --network-alias admin \\ - --network-alias admin-${params.PORT} \\ - -p ${params.PORT}:${params.PORT} \\ - -v uploads_data:/data/uploads:rw \\ - -e POSTGRES_DB=admin_db \\ - -e POSTGRES_USER=admin \\ - -e POSTGRES_PASSWORD=adminDbApp \\ - -e POSTGRES_PORT=5454 \\ - -e POSTGRES_HOST=${params.DB_HOST} \\ - -e SERVER_PORT=${params.PORT} \\ - -e BUILD_TIME='${buildTime}' \\ - --restart unless-stopped \\ - admin-panel-${params.PORT}:latest + --name admin-panel-${params.PORT} \\ + --network ${params.NETWORK} \\ + --network-alias admin \\ + --network-alias admin-${params.PORT} \\ + -p ${params.PORT}:${params.PORT} \\ + -v uploads_data:/data/uploads:rw \\ + -e POSTGRES_DB=admin_db \\ + -e POSTGRES_USER=admin \\ + -e POSTGRES_PASSWORD=adminDbApp \\ + -e POSTGRES_PORT=5432 \\ + -e POSTGRES_HOST=db \\ + -e SERVER_PORT=${params.PORT} \\ + -e BUILD_TIME='${buildTime}' \\ + --restart unless-stopped \\ + admin-panel-${params.PORT}:latest - echo '5. Проверка...' + echo '7. Проверка...' sleep 10 if curl -s -f http://localhost:${params.PORT}/actuator/health > /dev/null 2>&1; then @@ -134,7 +151,10 @@ pipeline { echo 'URL: http://${params.SERVER}:${params.PORT}' else echo 'Проверка health не удалась' - docker logs admin-panel-${params.PORT} --tail=20 + echo '=== Логи приложения: ===' + docker logs admin-panel-${params.PORT} --tail=30 + echo '=== Логи БД: ===' + docker logs admin-db-${params.PORT} --tail=10 fi " """ @@ -155,11 +175,8 @@ pipeline { ]) { sh """ sshpass -p '${SSH_PASS}' ssh -o StrictHostKeyChecking=no ${SSH_USER}@${params.SERVER} " - echo 'Проверяем подключение к сети ${params.NETWORK}' - docker network inspect ${params.NETWORK} --format='{{.Name}}: {{range .Containers}}{{.Name}} {{end}}' - - echo 'Проверяем алиас admin для контейнера admin-panel-${params.PORT}' - docker inspect admin-panel-${params.PORT} | grep -A 5 'Aliases' + echo '=== Контейнеры в сети ${params.NETWORK} ===' + docker network inspect ${params.NETWORK} --format='{{range .Containers}}{{.Name}} ({{.IPv4Address}}){{println}}{{end}}' " """ }