← Назад к вопросам

Какие шаги делал в Jenkins

1.7 Middle🔥 231 комментариев
#CI/CD и автоматизация

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Этапы работы с Jenkins в моей практике

В своей карьере я работал с Jenkins на протяжении последних 7 лет, внедряя CI/CD pipeline для различных проектов. Расскажу о ключевых этапах и подходах, которые я использовал.

1. Инициальная настройка Jenkins сервера

Первый этап - установка и конфигурация самого Jenkins:

# Установка на Ubuntu
sudo apt-get update
sudo apt-get install openjdk-11-jdk
sudo apt-get install jenkins
sudo systemctl start jenkins
sudo systemctl enable jenkins

# Доступ к Jenkins
# http://localhost:8080
# Получить начальный пароль
sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Что я обычно делал:

  • Устанавливал необходимые плагины (Git, Docker, Pipeline)
  • Настраивал безопасность (CSRF protection, права доступа)
  • Интегрировал с системой аутентификации (LDAP, OAuth)
  • Настраивал backup и восстановление

2. Создание Pipeline для проектов

Второй важный этап - проектирование CI/CD pipeline с Jenkinsfile:

pipeline {
    agent any
    
    environment {
        DOCKER_REGISTRY = 'registry.example.com'
        APP_NAME = 'myapp'
        APP_VERSION = '1.0.0'
    }
    
    stages {
        stage('Checkout') {
            steps {
                git 'https://github.com/user/repo.git'
            }
        }
        
        stage('Build') {
            steps {
                sh 'mvn clean package'
            }
        }
        
        stage('Test') {
            steps {
                sh 'mvn test'
            }
        }
        
        stage('Build Docker') {
            steps {
                sh 'docker build -t ${DOCKER_REGISTRY}/${APP_NAME}:${APP_VERSION} .'
            }
        }
        
        stage('Push to Registry') {
            steps {
                sh 'docker push ${DOCKER_REGISTRY}/${APP_NAME}:${APP_VERSION}'
            }
        }
        
        stage('Deploy to Dev') {
            when { branch 'develop' }
            steps {
                sh 'kubectl set image deployment/myapp-dev myapp=${DOCKER_REGISTRY}/${APP_NAME}:${APP_VERSION}'
            }
        }
        
        stage('Deploy to Prod') {
            when { branch 'main' }
            steps {
                input 'Approve deployment?'
                sh 'kubectl set image deployment/myapp-prod myapp=${DOCKER_REGISTRY}/${APP_NAME}:${APP_VERSION}'
            }
        }
    }
    
    post {
        failure {
            slackSend(color: 'danger', message: 'Build failed')
        }
    }
}

3. Интеграция с системами контроля версий

Настраивал webhook'и от GitHub/GitLab для триггеринга сборок. В Jenkins создавал Pipeline Job с триггерами Poll SCM или GitHub hook trigger.

4. Артефакты и зависимости

Управление артефактами через Nexus или Artifactory с кешированием зависимостей для ускорения сборок.

5. Мониторинг и логирование

Настройка интеграции с Slack, Email, PagerDuty для уведомлений о результатах сборки:

post {
    always {
        junit 'target/test-results/**/*.xml'
        archiveArtifacts artifacts: 'target/*.jar'
    }
    failure {
        slackSend(color: 'danger', message: 'Build failed: ${BUILD_URL}')
    }
}

6. Управление узлами (Nodes/Agents)

Настройка распределённых сборок через agents:

  • Добавлял Linux и Windows agents к Jenkins master
  • Настраивал метки для разных типов задач
  • Использовал cloud provisioning с AWS/Azure

7. Безопасность и управление доступом

  • Role-based access control (RBAC)
  • Credentials plugin для безопасного хранения токенов
  • Скрытие sensitive data в logs
  • Audit logging

8. Best Practices

  • Использовать declarative pipeline вместо scripted
  • Кешировать зависимости Maven/Gradle
  • Параллелизировать этапы
  • Использовать Blue Ocean для визуализации
  • Архивировать старые сборки
  • Настраивать timeouts

Переход к современным инструментам

В последние годы работал с GitLab CI/CD и GitHub Actions, которые встроены в платформы, но Jenkins остаётся актуальным для enterprise инфраструктуры благодаря гибкости и экосистеме плагинов.

Основной урок: Jenkins - мощный инструмент, но требует правильной архитектуры и maintenance для эффективной работы.