Структура конвейера: node, stage, steps и первый pipeline

Рейтинг: 52.3% · 11 голосов
Подробный курс по Jenkins и CI/CD: установка и настройка, плагины и Configuration as Code, конвейеры (pipeline) и Jenkinsfile, declarative и scripted, агенты, Docker и Kubernetes, общие библиотеки на Groovy, безопасность и credentials, интеграции (SonarQube, артефакты), траблшутинг. Актуально на 2026.
Ответить
Аватара пользователя
Andrey_CICD
Сообщения: 47
Зарегистрирован: 11 май 2026, 05:31

Структура конвейера: node, stage, steps и первый pipeline

Сообщение Andrey_CICD »

Оглавление курса (47)
  1. Что такое Jenkins и зачем нужен CI/CD
  2. Jenkins в 2026: версии, экосистема и сравнение с GitLab CI и GitHub Actions
  3. Архитектура Jenkins: контроллер, агенты, узлы и исполнители
  4. Установка Jenkins: пакеты, Docker и Kubernetes
  5. Первичная настройка Jenkins: мастер, плагины, пользователи
  6. Плагины Jenkins: установка, обновление и ключевой набор
  7. Configuration as Code (JCasC): настройка Jenkins декларативно
  8. Конвейеры Jenkins и Jenkinsfile: pipeline as code
  9. Scripted против Declarative: два синтаксиса конвейера
  10. Структура конвейера: node, stage, steps и первый pipeline (вы здесь)
  11. Генератор сниппетов, запуск конвейера и Replay
  12. Типы заданий Jenkins: Freestyle, Pipeline, Multibranch и Organization
  13. Декларативный конвейер: структура pipeline, agent, stages
  14. agent, environment и переменные в конвейере
  15. tools, options, parameters и triggers в декларативном конвейере
  16. stages, parallel и matrix: организация этапов
  17. Условное выполнение when и блок post
  18. Триггеры сборки: webhook от GitHub, SCM polling и расписание
  19. Параметры сборки и пользовательский ввод
  20. Управление потоком: timeout, retry, sleep и waitUntil
  21. Параллелизм и блокировки: parallel, lock, milestone
  22. Постобработка и уведомления о результате сборки
  23. Groovy для Jenkins: основы скриптового конвейера
  24. Скриптовый конвейер: логика, циклы и функции
  25. Общие библиотеки Jenkins: Shared Libraries
  26. Подключение и загрузка общих библиотек
  27. Шаги оболочки: sh, bat, powershell и коды возврата
  28. Переменные среды, withEnv и рабочие пространства
  29. Работа с файлами, артефактами и отпечатками
  30. Сборка проектов в конвейере: Maven, Gradle, npm
  31. Качество кода: SonarQube и покрытие тестами
  32. Управление артефактами: публикация в Nexus и Artifactory
  33. Docker в Jenkins: образы как агенты сборки
  34. Сборка и публикация Docker-образов из конвейера
  35. Jenkins в Kubernetes: динамические pod-агенты
  36. Развёртывание в Kubernetes из конвейера
  37. Безопасность Jenkins: аутентификация и матрица прав
  38. Учётные данные Jenkins: credentials в конвейере
  39. Безопасность сценариев: Groovy sandbox и Vault
  40. Уведомления и отчёты: email, Slack, Telegram, HTML
  41. Blue Ocean и интерфейс Jenkins в 2026
  42. Автоматизация Jenkins: CLI, REST API и script console
  43. Поиск и устранение неисправностей: читаем логи конвейера
  44. Типичные ошибки конвейера: сериализация и неутверждённый код
  45. Эксплуатация Jenkins: бэкап, обновление, масштабирование
  46. Конвертация и миграция: от Freestyle к Jenkinsfile
  47. Итог: сквозной CI/CD конвейер и Jenkins против альтернатив в 2026
Ты установил Jenkins, потыкал интерфейс, может, собрал что-то через старый freestyle-проект мышкой. И тут начинается главная боль: галочки в форме невозможно ревьюить, нельзя положить в git, нельзя скопировать на другой проект без танцев. Конвейер как код (pipeline-as-code) решает это: вся логика сборки лежит в файле Jenkinsfile рядом с твоим приложением. Поменял шаг - видно в diff. В этом уроке разбираем три кита, на которых стоит любой Jenkins pipeline: где выполнять (node/agent), какие логические этапы проходим (stage) и что конкретно делаем (steps). И собираем первый рабочий конвейер от checkout до тестов.

Три кита: node, stage и steps

Любой Jenkins pipeline отвечает на три вопроса, и каждому соответствует своя сущность DSL.
  • Где выполнять - это node (узел) в терминах scripted-конвейера или директива agent в declarative. Jenkins node - это контроллер или, чаще, отдельный агент, на котором реально крутятся твои команды. Контроллер дирижирует, агенты пашут. Когда ты пишешь agent any, ты говоришь: "запусти на любом свободном исполнителе".
  • Логический этап - это stage. Build, Test, Deploy - вот типичные jenkins stage. Каждый stage - это именованный блок, который Jenkins отдельно рисует в интерфейсе. Видишь зелёную или красную плитку в Stage View - это и есть твой stage. Этапы нужны людям: с одного взгляда понятно, на чём сборка упала.
  • Конкретные шаги - это steps. Внутри stage живут jenkins steps: вызвать shell, напечатать сообщение, забрать код из git. Шаг - это атомарная операция. echo печатает строку в лог, sh выполняет команду оболочки. Из таких кирпичей и складывается работа.
Запомни иерархию вложенности, она железная: pipeline содержит stages, stages содержит несколько stage, каждый stage содержит steps, а внутри steps - сами команды. Перепутаешь уровни - получишь ошибку парсинга ещё до запуска.

Изображение

Declarative как стандарт 2026: каркас pipeline

В 2018 году спорили, что брать - scripted (чистый Groovy) или declarative. В 2026 спор закрыт: declarative pipeline - выбор по умолчанию. Он строже, понятнее, его валидирует линтер, и он покрывает 95 процентов задач. Scripted берём только там, где нужна реальная динамика: генерить стейджи в цикле, сложные условия на Groovy. Для всего остального - declarative.

Минимальный каркас, который надо выучить наизусть:

Код: Выделить всё

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Собираю проект'
            }
        }
    }
}
Разберём по слоям. Блок pipeline - корень, всё живёт внутри него. agent any - где выполнять: на любом доступном агенте Jenkins. stages - контейнер для этапов. stage('Build') - один этап с человекочитаемым именем (оно появится в UI). steps - то, что реально делаем. echo - самый безобидный шаг, печать в консоль. Это валидный конвейер: сохрани как Jenkinsfile, и он запустится.

Важно про среду 2026: Jenkins давно ушёл от терминов master и slave. Теперь это контроллер (controller) и агент (agent). Если в старых статьях видишь node как "slave" - это устаревший словарь. Сам Jenkins на актуальной LTS-линии (ветка 2.541.x, а свежий baseline 2.555.1) уже требует Java 21 как минимум - Java 17 с начала 2026 года не поддерживается. Это к тому, что примеры из книги 2018 года надо мысленно переносить на современную базу.

Jenkins pipeline пример: первый конвейер от checkout до тестов

Теперь полноценный jenkins pipeline example с тремя стейджами. Это не псевдокод, а рабочий Jenkinsfile для типового приложения. Подставь свои команды сборки - и поедет.

Код: Выделить всё

pipeline {
    agent any

    options {
        timestamps()
        timeout(time: 20, unit: 'MINUTES')
    }

    stages {
        stage('Checkout') {
            steps {
                checkout scm
                echo "Ветка: ${env.BRANCH_NAME}"
            }
        }

        stage('Build') {
            steps {
                sh 'make build'
            }
        }

        stage('Test') {
            steps {
                sh 'make test'
            }
            post {
                always {
                    junit 'reports/**/*.xml'
                }
            }
        }
    }

    post {
        success {
            echo 'Конвейер прошёл успешно'
        }
        failure {
            echo 'Сборка упала, смотри лог стейджа'
        }
    }
}
Что здесь происходит. Стейдж Checkout забирает код: шаг checkout scm берёт ту же ревизию репозитория, из которой Jenkins прочитал сам Jenkinsfile - удобно, не нужно хардкодить URL. Build вызывает sh - шаг оболочки, который выполняет твою команду сборки. Test гоняет тесты, а блок post с always публикует JUnit-отчёты независимо от того, прошли тесты или нет - чтобы в UI видеть упавшие кейсы.

Директива options сверху - это глобальные настройки: timestamps() добавляет время к каждой строке лога (бесценно при разборе зависаний), timeout прибьёт сборку, если она висит дольше 20 минут. Финальный post на уровне pipeline реагирует на общий итог: success или failure.

Как читать вывод и Stage View. После запуска открой страницу сборки. Раздел Stage View (он же стейдж-вью) покажет горизонтальную ленту плиток - по одной на каждый stage. Зелёная - этап прошёл, красная - упал, время в плитке - сколько он длился. Кликаешь на красную плитку и проваливаешься прямо в лог этого этапа, не листая весь вывод. Полный текстовый лог - в Console Output. Старый плагин Blue Ocean, который раньше рисовал красивые конвейеры, сейчас фактически заброшен и не развивается - не строй на нём процессы, штатного Stage View и Pipeline Graph View хватает.

Типичные грабли
  • steps забыли, пишут команды прямо в stage. Внутри stage обязателен блок steps (в declarative). Голый sh внутри stage без steps - ошибка. Это самая частая опечатка новичка.
  • Путают echo и println. В declarative для печати используй шаг echo, а не Groovy-шный println - последний работает, но это уже выход в scripted-территорию.
  • Кавычки в sh. Двойные кавычки в Groovy раскрывают переменные (${env.BRANCH_NAME}), одинарные - нет. Если в shell-строке есть $ для самой оболочки, бери одинарные кавычки, иначе Groovy попытается подставить переменную раньше времени.
  • agent none без agent в стейджах. Если на уровне pipeline стоит agent none, то каждый stage обязан объявить свой agent, иначе шагам негде выполняться.
  • Один гигантский stage. Свалить checkout, сборку и тесты в один этап технически можно, но тогда Stage View бесполезен - не видно, где упало. Дроби на логические этапы.
Мини-лаба

Повтори руками, без этого не уложится:
  • Создай в Jenkins новый Pipeline-проект. В поле определения выбери "Pipeline script" и вставь минимальный каркас с одним стейджем Build и шагом echo. Запусти, найди Stage View.
  • Добавь второй и третий стейджи (Test, Deploy) с echo внутри. Перезапусти, убедись, что в Stage View стало три плитки.
  • В одном из стейджей замени echo на sh 'date' и sh 'uname -a'. Открой Console Output, найди вывод команд.
  • Сломай конвейер специально: убери блок steps вокруг шага. Прочитай сообщение об ошибке - так ты запомнишь, как выглядит нарушение иерархии.
  • Перенеси этот скрипт в файл Jenkinsfile в корень git-репозитория и пересобери проект через "Pipeline script from SCM". Теперь твой конвейер - это код.
Контрольные вопросы
  • Чем отличаются stage и steps и почему этапов должно быть несколько, а не один на всё?
  • Что делает директива agent any и в каком случае каждому стейджу нужен свой agent?
  • Какой шаг печатает строку в лог, а какой выполняет команду оболочки?
  • Зачем нужен Stage View и как по нему быстро найти место падения сборки?
Итог

Конвейер Jenkins - это три уровня: agent отвечает где, stage отвечает какой этап, steps отвечает что делаем. Declarative-каркас pipeline -> stages -> stage -> steps в 2026 году стандарт, и его иерархию надо знать на автомате. Ты собрал первый рабочий jenkins pipeline с checkout, сборкой и тестами, научился читать Stage View и находить упавший этап. Дальше будем наращивать: переменные окружения, параметры, параллельные стейджи и агенты в Kubernetes. Но фундамент - вот эти node, stage и steps - останется тем же.
👍3 ❤️2 🔥 😄 🤔
Аватара пользователя
python4
Сообщения: 1
Зарегистрирован: 21 май 2026, 01:59

Re: Структура конвейера: node, stage, steps и первый pipeline

Сообщение python4 »

Спасибо, наконец дошло чем stage от steps отличается. Раньше пихал все в один этап и потом гадал где упало.
👍 ❤️ 🔥1 😄 🤔
Аватара пользователя
overclockedkraken
Сообщения: 1
Зарегистрирован: 12 май 2026, 20:06

Re: Структура конвейера: node, stage, steps и первый pipeline

Сообщение overclockedkraken »

Вопрос: а checkout scm точно сам подтянет нужную ветку если собираю через Pipeline script from SCM? Или надо явно git-шаг прописывать?
👍 ❤️1 🔥 😄 🤔
Ответить
← Предыдущая глава
Scripted против Declarative: два синтаксиса конвейера
Следующая глава →
Генератор сниппетов, запуск конвейера и Replay

Все главы курса «Jenkins: конвейеры CI/CD от основ до продакшена»

Поделиться темой: ✈ Telegram VK
Похожие запросы: что такое jenkins простыми словамикакие плагины jenkins нужны новичкуcicd для начинающих с чего начать на jenkinsjenkinsfile declarative или scripted что выбратьgroovy в jenkins scripted pipeline как написатьjenkins shared library как создать и подключить

Вернуться в «Jenkins: конвейеры CI/CD от основ до продакшена»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя