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 "Деплой завершен" """ } } } } } }