dev #1
+61
-44
@@ -23,9 +23,9 @@ pipeline {
|
|||||||
description: 'Имя сети (будет создана если не существует)'
|
description: 'Имя сети (будет создана если не существует)'
|
||||||
)
|
)
|
||||||
string(
|
string(
|
||||||
name: 'DB_HOST',
|
name: 'DB_PORT',
|
||||||
defaultValue: 'db',
|
defaultValue: '5454',
|
||||||
description: 'Хост базы данных'
|
description: 'Порт для базы данных'
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,19 +57,14 @@ pipeline {
|
|||||||
)
|
)
|
||||||
]) {
|
]) {
|
||||||
sh """
|
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}/*
|
rm -rf /opt/deployments/admin-panel-${params.PORT}/*
|
||||||
mkdir -p /opt/deployments/admin-panel-${params.PORT}
|
'
|
||||||
"
|
|
||||||
|
|
||||||
sshpass -p '${SSH_PASS}' rsync -av --delete \\
|
sshpass -p '${SSH_PASS}' scp -r -o StrictHostKeyChecking=no \
|
||||||
--exclude=.git \\
|
. \
|
||||||
--exclude=.gradle \\
|
${SSH_USER}@${params.SERVER}:/opt/deployments/admin-panel-${params.PORT}/
|
||||||
--exclude=build \\
|
|
||||||
--exclude=**/build \\
|
|
||||||
--exclude=.idea \\
|
|
||||||
--exclude=out \\
|
|
||||||
. ${SSH_USER}@${params.SERVER}:/opt/deployments/admin-panel-${params.PORT}/
|
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -85,9 +80,7 @@ pipeline {
|
|||||||
credentialsId: 'server-root-password',
|
credentialsId: 'server-root-password',
|
||||||
usernameVariable: 'SSH_USER',
|
usernameVariable: 'SSH_USER',
|
||||||
passwordVariable: 'SSH_PASS'
|
passwordVariable: 'SSH_PASS'
|
||||||
),
|
)
|
||||||
string(credentialsId: 'DB_USER', variable: 'DB_USER'),
|
|
||||||
string(credentialsId: 'DB_PASSWORD', variable: 'DB_PASSWORD')
|
|
||||||
]) {
|
]) {
|
||||||
sh """
|
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} "
|
||||||
@@ -101,32 +94,56 @@ pipeline {
|
|||||||
echo 'Сеть ${params.NETWORK} уже существует'
|
echo 'Сеть ${params.NETWORK} уже существует'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo '2. Останавливаем старый контейнер...'
|
echo '2. Останавливаем старые контейнеры...'
|
||||||
docker stop admin-panel-${params.PORT} 2>/dev/null || echo 'Контейнер не найден'
|
docker stop admin-panel-${params.PORT} 2>/dev/null || echo 'Контейнер приложения не найден'
|
||||||
docker rm 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 .
|
docker build --no-cache -t admin-panel-${params.PORT}:latest .
|
||||||
|
|
||||||
echo '4. Запускаем контейнер...'
|
echo '6. Запускаем приложение...'
|
||||||
docker run -d \\
|
docker run -d \\
|
||||||
--name admin-panel-${params.PORT} \\
|
--name admin-panel-${params.PORT} \\
|
||||||
--network ${params.NETWORK} \\
|
--network ${params.NETWORK} \\
|
||||||
--network-alias admin \\
|
--network-alias admin \\
|
||||||
--network-alias admin-${params.PORT} \\
|
--network-alias admin-${params.PORT} \\
|
||||||
-p ${params.PORT}:${params.PORT} \\
|
-p ${params.PORT}:${params.PORT} \\
|
||||||
-v uploads_data:/data/uploads:rw \\
|
-v uploads_data:/data/uploads:rw \\
|
||||||
-e POSTGRES_DB=admin_db \\
|
-e POSTGRES_DB=admin_db \\
|
||||||
-e POSTGRES_USER=admin \\
|
-e POSTGRES_USER=admin \\
|
||||||
-e POSTGRES_PASSWORD=adminDbApp \\
|
-e POSTGRES_PASSWORD=adminDbApp \\
|
||||||
-e POSTGRES_PORT=5454 \\
|
-e POSTGRES_PORT=5432 \\
|
||||||
-e POSTGRES_HOST=${params.DB_HOST} \\
|
-e POSTGRES_HOST=db \\
|
||||||
-e SERVER_PORT=${params.PORT} \\
|
-e SERVER_PORT=${params.PORT} \\
|
||||||
-e BUILD_TIME='${buildTime}' \\
|
-e BUILD_TIME='${buildTime}' \\
|
||||||
--restart unless-stopped \\
|
--restart unless-stopped \\
|
||||||
admin-panel-${params.PORT}:latest
|
admin-panel-${params.PORT}:latest
|
||||||
|
|
||||||
echo '5. Проверка...'
|
echo '7. Проверка...'
|
||||||
sleep 10
|
sleep 10
|
||||||
|
|
||||||
if curl -s -f http://localhost:${params.PORT}/actuator/health > /dev/null 2>&1; then
|
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}'
|
echo 'URL: http://${params.SERVER}:${params.PORT}'
|
||||||
else
|
else
|
||||||
echo 'Проверка health не удалась'
|
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
|
fi
|
||||||
"
|
"
|
||||||
"""
|
"""
|
||||||
@@ -155,11 +175,8 @@ pipeline {
|
|||||||
]) {
|
]) {
|
||||||
sh """
|
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} "
|
||||||
echo 'Проверяем подключение к сети ${params.NETWORK}'
|
echo '=== Контейнеры в сети ${params.NETWORK} ==='
|
||||||
docker network inspect ${params.NETWORK} --format='{{.Name}}: {{range .Containers}}{{.Name}} {{end}}'
|
docker network inspect ${params.NETWORK} --format='{{range .Containers}}{{.Name}} ({{.IPv4Address}}){{println}}{{end}}'
|
||||||
|
|
||||||
echo 'Проверяем алиас admin для контейнера admin-panel-${params.PORT}'
|
|
||||||
docker inspect admin-panel-${params.PORT} | grep -A 5 'Aliases'
|
|
||||||
"
|
"
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user