Что такое Jenkins Pipeline и как он работает?

Ответ

Jenkins Pipeline — это набор плагинов, который позволяет описывать процесс непрерывной интеграции и доставки (CI/CD) в виде кода (Pipeline as Code).

Ключевые концепции:

  • Declarative vs Scripted: Declarative Pipeline использует упрощенный предопределенный синтаксис, а Scripted — полноценный Groovy-скрипт.
  • Узел (Node): Машина, на которой выполняется Pipeline.
  • Этап (Stage): Логический раздел конвейера (например, Build, Test, Deploy).
  • Шаг (Step): Конкретная операция (например, выполнить команду оболочки).

Пример Declarative Pipeline (Jenkinsfile):

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh 'mvn clean compile'
            }
        }
        stage('Test') {
            steps {
                sh 'mvn test'
            }
        }
        stage('Deploy') {
            steps {
                sh 'mvn deploy'
            }
        }
    }
}

Преимущества: версионность, возможность код-ревью, возможность ветвления и циклов, возможность паузы и ручного подтверждения.

Ответ 18+ 🔞

Давай я тебе объясню про эти дженкинсовские пайплайны, а то смотрю, у тебя в глазах уже туман от этих "декларативных синтаксисов". Ситуация, блядь, проще, чем кажется.

Представь, что ты — начальник стройки, а твой код — это дом, который надо построить. Ты не будешь же сам, как мудак, таскать кирпичи, мешать бетон и крышу класть? Ты пишешь бумажку-инструкцию: "Шаг 1 — залить фундамент, Шаг 2 — возвести стены, Шаг 3 — накрыть крышей". Вот эта бумажка — и есть Jenkins Pipeline. Ты описываешь процесс (CI/CD) в виде кода, а Дженкинс — тот самый безотказный и туповатый прораб, который всё это выполняет строго по списку. Идиотская, но рабочая схема.

Основные пиздюлины, которые надо усвоить:

  • Declarative vs Scripted: Тут два пути. Declarative — это как заполнить готовую анкету в ЖЭКе. Есть строгие графы: agent, stages, steps. Вписал команды — и поехали. Просто, безопасно, для дебилов. Scripted — это уже полный Groovy-скрипт, где ты можешь творить любую хуйню: циклы, условия, свои функции. Мощно, но можно так въебать, что потом месяц будешь разгребать.
  • Узел (Node): Обычная рабочая машина, раб на галерах. Тот самый комп, где всё и происходит. Можешь сказать "работай на любой свободной" (any), а можешь привязать к конкретной тачке, если нужны особые пиздюлины типа видеокарты.
  • Этап (Stage): Крупный, логический кусок работы. Все эти твои "Собрать", "Протестить", "Задеплоить". В интерфейсе Дженкинса они красиво подсвечиваются, и сразу видно, на каком этапе всё накрылось медным тазом.
  • Шаг (Step): Конкретное, элементарное действие. "Выполни команду mvn clean compile", "Скопируй файл", "Пошли письмо". Кишки процесса.

Смотри, как это выглядит в жизни, на примере простейшего Declarative Pipeline (файл Jenkinsfile):

pipeline { // Объявляем, что это конвейер, а не сценарий для порнофильма
    agent any // "Работай на любой свободной рабсиле, мне похуй"
    stages { // Начинаются этапы, ёпта
        stage('Build') { // Этап "Сборка"
            steps { // Шаги внутри этапа
                sh 'mvn clean compile' // Команда в шелле: "Мувон, почистись и скомпились!"
            }
        }
        stage('Test') { // Этап "Тесты"
            steps {
                sh 'mvn test' // "А теперь, мувон, протестируй свою жопу"
            }
        }
        stage('Deploy') { // Этап "Деплой"
            steps {
                sh 'mvn deploy' // "И выкатывай это всё на прод, будь что будет!"
            }
        }
    }
}

И в чём, собственно, охуенность всего этого? Да в том, что твой процесс сборки теперь не набор тыканий по кнопкам в веб-морде, а код. Его можно хранить в гите вместе с проектом (версионность!), его можно ревьювить, обсуждать и править. В нём можно делать ветвления (if), циклы (for), ставить паузы и ждать, пока какой-нибудь менеджер ручкой подтвердит деплой. В общем, это уже не детский конструктор, а вполне себе инструмент, чтобы автоматизировать всю эту ебучую рутину. Волнение, блядь, пропадает, когда понимаешь, что после пуша в репу всё запустится само и либо соберётся, либо, в случае пиздеца, красиво и наглядно свалится на конкретном этапе, указав тебе пальцем, где именно ты обосрался.