dev #1
+61
-44
@@ -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 'Контейнер приложения не найден'
|
||||
|
||||
echo '3. Собираем образ...'
|
||||
docker stop admin-db-${params.PORT} 2>/dev/null || echo 'Контейнер БД не найден'
|
||||
docker rm admin-db-${params.PORT} 2>/dev/null || echo 'Контейнер БД не найден'
|
||||
|
||||
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}}'
|
||||
"
|
||||
"""
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user