Настраивали ли вы CI/CD пайпланы (например, в Jenkins)?

«Настраивали ли вы CI/CD пайпланы (например, в Jenkins)?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, настраивал пайпланы для автоматизации сборки, тестирования и деплоя.

Основные задачи:

  • Автоматизация сборки и запуска тестов.
  • Интеграция с инструментами анализа кода (SonarQube).
  • Сборка Docker-образов и публикация в registry.
  • Деплой на тестовые и production-окружения.

Пример Jenkinsfile (Declarative Pipeline) для Java/Maven:

pipeline {
    agent any
    tools {
        maven 'Maven-3.8'
        jdk 'JDK-17'
    }
    stages {
        stage('Build') {
            steps {
                sh 'mvn clean compile'
            }
        }
        stage('Test & Analysis') {
            steps {
                sh 'mvn test'
                // Интеграция с SonarQube
                sh 'mvn sonar:sonar'
            }
        }
        stage('Package & Publish Image') {
            when {
                branch 'main' 
            }
            steps {
                script {
                    docker.build("my-app:${env.BUILD_ID}").push()
                }
            }
        }
    }
}

Также имел опыт настройки пайпланов в GitHub Actions и GitLab CI/CD.