Files
no-copy/infra/deploy.groovy
T
2025-12-01 16:49:41 +07:00

126 lines
5.6 KiB
Groovy
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
pipeline {
agent any
parameters {
string(
name: 'BRANCH',
defaultValue: 'dev',
description: 'Имя ветки'
)
string(
name: 'DEPLOY_PATH',
defaultValue: '/opt/test-app',
description: 'Путь на сервере для деплоя'
)
}
stages {
stage('1. Checkout из Git') {
steps {
git(
url: 'https://code.3err0.ru/backdev/no-copy.git',
branch: params.BRANCH,
credentialsId: 'nx-jen'
)
echo "✓ Код успешно загружен из ветки: ${params.BRANCH}"
}
}
stage('2. Проверка файлов') {
steps {
script {
sh """
echo "=== ФАЙЛЫ В РЕПОЗИТОРИИ ==="
ls -la
echo ""
echo "=== DOCKER-COMPOSE.YAML ==="
if [ -f "docker-compose.yaml" ]; then
echo "✓ docker-compose.yaml найден"
cat docker-compose.yaml
else
echo "✗ docker-compose.yaml не найден"
echo "Создаем тестовый docker-compose.yaml..."
cat > docker-compose.yaml << EOF
version: '3.8'
services:
web:
image: nginx:alpine
container_name: web-${params.BRANCH}
ports:
- "8080:80"
restart: unless-stopped
EOF
echo "Тестовый docker-compose.yaml создан"
fi
"""
}
}
}
stage('3. Деплой на сервер (с паролем)') {
steps {
script {
echo "=== ДЕПЛОЙ НА СЕРВЕР ==="
echo "Сервер: 92.242.61.23"
echo "Путь: ${params.DEPLOY_PATH}"
echo "Ветка: ${params.BRANCH}"
}
withCredentials([
usernamePassword(
credentialsId: 'server-root-password',
usernameVariable: 'SSH_USER',
passwordVariable: 'SSH_PASS'
)
]) {
script {
sh """
echo "Начинаем деплой..."
# Устанавливаем sshpass если нет
if ! command -v sshpass &> /dev/null; then
echo "Устанавливаем sshpass..."
apt-get update && apt-get install -y sshpass
fi
# 1. Создаем папку на сервере
sshpass -p '${SSH_PASS}' ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 ${SSH_USER}@92.242.61.23 "
echo 'Создаю папку ${params.DEPLOY_PATH}...'
mkdir -p ${params.DEPLOY_PATH}
echo 'Папка создана'
"
# 2. Копируем docker-compose.yml
echo 'Копирую docker-compose.yml...'
sshpass -p '${SSH_PASS}' scp -o StrictHostKeyChecking=no -o ConnectTimeout=10 docker-compose.yml ${SSH_USER}@92.242.61.23:${params.DEPLOY_PATH}/
# 3. Запускаем docker-compose на сервере
echo 'Запускаю docker-compose на сервере...'
sshpass -p '${SSH_PASS}' ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 ${SSH_USER}@92.242.61.23 "
cd ${params.DEPLOY_PATH}
echo 'Текущая директория: \$(pwd)'
ls -la
echo 'Останавливаю старые контейнеры...'
docker-compose down 2>/dev/null || echo '✓ Не было запущенных контейнеров'
echo 'Запускаю новые контейнеры...'
docker-compose up -d
echo 'Проверяю статус...'
docker-compose ps
echo 'Логи последние 5 строк:'
docker-compose logs --tail=5
"
echo "Деплой завершен"
"""
}
}
}
}
}
}