From 2041f964a03fc0ff605ed12555e7364587dcc45d Mon Sep 17 00:00:00 2001 From: vladp Date: Mon, 1 Dec 2025 16:49:41 +0700 Subject: [PATCH] work build and deploy --- infra/deploy.groovy | 126 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 infra/deploy.groovy diff --git a/infra/deploy.groovy b/infra/deploy.groovy new file mode 100644 index 0000000..d772217 --- /dev/null +++ b/infra/deploy.groovy @@ -0,0 +1,126 @@ +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 "Деплой завершен" + """ + } + } + } + } + } +} \ No newline at end of file