Что такое Jenkins?

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

Ответ

Jenkins — это open-source сервер для автоматизации, предназначенный для реализации практик CI/CD (Continuous Integration и Continuous Delivery/Deployment). Он позволяет автоматизировать сборку, тестирование, развертывание и другие этапы жизненного цикла ПО.

Ключевые возможности:

  • Планирование задач (Jobs/Pipelines): Запуск по расписанию, по событию (например, push в Git) или вручную.
  • Масштабируемость: Работа с агентами (nodes) для распределения нагрузки.
  • Расширяемость: Огромная экосистема плагинов для интеграции с Git, Docker, JIRA, Slack и др.
  • Pipeline как код: Определение сложных процессов через Jenkinsfile (декларативный или скриптовый синтаксис).

Пример Jenkinsfile (декларативный стиль):

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh 'mvn clean compile'
            }
        }
        stage('Test') {
            steps {
                sh 'mvn test'
            }
            post {
                always {
                    junit 'target/surefire-reports/*.xml'
                }
            }
        }
        stage('Deploy') {
            when {
                branch 'main'
            }
            steps {
                sh './deploy.sh'
            }
        }
    }
}