Типы заданий Jenkins: Freestyle, Pipeline, Multibranch и Organization

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

Типы заданий Jenkins: Freestyle, Pipeline, Multibranch и Organization

Сообщение 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, жмёшь "Создать Item" - и упираешься в список из пяти-шести типов. Freestyle project, Pipeline, Multibranch Pipeline, Folder, какая-то Organization. Новичок обычно тыкает в первое, что похоже на "обычную сборку", и через полгода тонет в сотне ручных заданий, каждое из которых надо чинить руками. Этот урок про то, как jenkins job выбирается осознанно: какой тип под какую задачу, почему один из них в 2026 году закрывает потребности большинства команд, а остальные либо наследие, либо узкие инструменты.

Что такое job и какие типы бывают

Job (он же item, он же "проект") в Jenkins - это единица работы. Внутри неё описано, что собирать, откуда брать код, какие шаги выполнять и что делать с результатом. Когда ты слышишь "у нас 300 jenkins jobs" - речь именно про эти настроенные единицы. Тип job определяет, как ты её описываешь и насколько она умеет жить сама.

Базовый набор типов, который ты увидишь на свежем Jenkins LTS (линейка 2.5xx.x, на 2026 год это семейство 2.516+ на Java 17/21):
  • Freestyle project - классический кликабельный проект. Всё через веб-форму: галочки, текстовые поля, выпадающие списки.
  • Pipeline - проект на основе скрипта-конвейера (Jenkinsfile), описанного кодом.
  • Multibranch Pipeline - конвейер, который сам разворачивается на каждую ветку и pull request с Jenkinsfile.
  • Folder - не сборка, а папка-контейнер для группировки других jobs.
  • Organization Folder (GitHub Organization, Bitbucket, GitLab Group, Gitea) - сканирует целую организацию и сам плодит Multibranch-проекты на каждый репозиторий.
Разберём их по очереди и сразу честно: где наследие, а где рабочая лошадка.

Изображение

Jenkins freestyle: наследие, которое всё ещё живо

Jenkins freestyle - самый старый формат. Ты открываешь форму, выбираешь источник кода, добавляешь шаги сборки (Execute shell, Invoke Maven), настраиваешь триггеры и post-build действия мышкой. Никакого кода - всё кликается.

Звучит дружелюбно, и для пятиминутной задачи это правда удобно. Но у freestyle есть фундаментальные проблемы, из-за которых сообщество давно сдвинулось в сторону Pipeline:
  • Конфигурация не в Git. Настройки живут в config.xml внутри Jenkins. Нет ревью, нет истории изменений рядом с кодом, нет отката через pull request.
  • Хрупкость. Сложный freestyle - это десятки галочек и плагинов. Воспроизвести его на другом контроллере или после миграции - боль.
  • Слабая логика. Условия, циклы, параллельные стадии, ручные подтверждения - всё это либо костыли через плагины, либо вообще никак.
Когда freestyle всё-таки уместен в 2026: разовая утилитарная задача (прогнать скрипт по расписанию, дёрнуть бэкап), быстрый прототип "на пощупать", или ты поддерживаешь легаси-инсталляцию, где так исторически сложилось. Для всего нового - не начинай отсюда.

Pipeline: конвейер как код

Тип Pipeline - это переход от кликов к коду. Логика сборки описана в Jenkinsfile, который лежит в репозитории рядом с приложением. Стандарт 2026 года - declarative pipeline: читаемый, со строгой структурой и понятными ошибками. Scripted (полный Groovy) держим в уме для случаев, где нужна настоящая динамика.

Минимальный, но рабочий declarative Jenkinsfile:

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

pipeline {
    agent any

    options {
        timeout(time: 30, unit: 'MINUTES')
        disableConcurrentBuilds()
    }

    stages {
        stage('Build') {
            steps {
                sh 'mvn -B -DskipTests clean package'
            }
        }
        stage('Test') {
            steps {
                sh 'mvn -B test'
            }
            post {
                always {
                    junit 'target/surefire-reports/*.xml'
                }
            }
        }
        stage('Deploy') {
            when {
                branch 'main'
            }
            steps {
                sh './deploy.sh staging'
            }
        }
    }

    post {
        failure {
            echo 'Сборка упала, разбираемся'
        }
    }
}
Видишь разницу с freestyle? Это текст, он в Git, его ревьюят в PR, у него есть история. Но у "простого" Pipeline-проекта остаётся одно ограничение: он привязан к одной ветке или одному пути. Хочешь собирать main, develop и десяток feature-веток - либо плоди отдельные jenkins jobs руками, либо переходи на следующий уровень.

Multibranch pipeline: то, что нужно большинству

Вот здесь и происходит главный сдвиг. Multibranch pipeline - это jenkins проект, который ты настраиваешь один раз, указываешь ему репозиторий, а дальше он сам сканирует ветки и pull requests. Нашёл в ветке Jenkinsfile - создал для неё под-job и начал собирать. Ветку удалили - соответствующий job сам убирается (по умолчанию через настраиваемый период хранения).

Что это даёт на практике:
  • Ноль ручной работы на ветку. Завёл feature/login - через минуту-другую (или сразу, если настроен вебхук) она уже собирается своим конвейером.
  • Сборка pull request. PR проверяется до мёржа, статус летит обратно в GitHub/GitLab/Bitbucket. Сломанный код не доезжает до main.
  • Разные Jenkinsfile в разных ветках. В main - полный пайплайн с деплоем, в feature - только сборка и тесты. Это просто разные файлы в разных ветках, никакой магии.
Важный нюанс, на котором спотыкаются: по умолчанию Multibranch не индексирует репозиторий сам по себе постоянно. Чтобы новые ветки подхватывались мгновенно, настраивают вебхук от Git-сервера на Jenkins. Как страховка - периодическое пересканирование (Periodically if not otherwise run) с интервалом в час-другой.

Сам Jenkinsfile для Multibranch выглядит так же, как для обычного Pipeline. Магия не в файле, а в директивах вроде when и в переменной BRANCH_NAME, которая подсказывает, в какой ветке мы сейчас:

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

pipeline {
    agent any
    stages {
        stage('Build & Test') {
            steps {
                sh 'make build test'
            }
        }
        stage('Deploy to prod') {
            when { branch 'main' }
            steps {
                sh 'make deploy ENV=production'
            }
        }
        stage('Preview env for PR') {
            when { changeRequest() }
            steps {
                echo "Поднимаю preview для PR #${env.CHANGE_ID}"
                sh './preview.sh up'
            }
        }
    }
}
Условие changeRequest() срабатывает только на pull request, branch 'main' - только на основной ветке. Один файл - разное поведение для PR, main и фич. Поэтому совет простой: если у тебя обычный репозиторий с ветками и PR - заводи Multibranch Pipeline, а не цепочку отдельных проектов.

Folder и Organization: масштаб на десятки репозиториев

Когда репозиториев становится много, всплывают два организационных типа.

Folder - это просто папка. Сборки в ней не делаются, она группирует другие jobs: по командам, по продуктам, по окружениям. Внутри папки можно задать свои права доступа, свои переменные, свой набор агентов. Чисто наведение порядка в большом Jenkins.

Organization Folder (GitHub Organization, Bitbucket Team, GitLab Group, Gitea) - это Multibranch, поднятый на уровень выше. Ты указываешь не репозиторий, а целую организацию и креденшелы. Jenkins сканирует все репозитории, и для каждого, где есть ветка с Jenkinsfile, автоматически создаёт Multibranch Pipeline. Появился новый репозиторий с Jenkinsfile - сам появился и job. Это тот случай, когда CI настраивается практически без участия админа: разработчик кладёт Jenkinsfile в корень - и его проект уже в конвейере.

Связь типов по нарастанию автоматизации:
  • Freestyle / Pipeline - один job на одну задачу или ветку.
  • Multibranch Pipeline - один job на репозиторий, ветки и PR сами.
  • Organization Folder - один job на организацию, репозитории сами.
Отдельно про наследие: Blue Ocean, красивый UI для пайплайнов, который активно пиарили в книгах 2018 года, в 2026-м фактически заброшен и не развивается. Строить процесс вокруг него не надо - смотри на стандартный интерфейс и сам Jenkinsfile. А если сравнивать с GitLab CI и GitHub Actions: там модель "конвейер как код в репозитории" встроена изначально, и Multibranch с Organization Folder - это ровно ответ Jenkins на ту же идею, способ догнать декларативный и саморазворачивающийся CI.

Типичные грабли
  • Начинать с Freestyle "потому что проще". Через полгода это десятки несогласованных jobs без истории в Git. Стартуй с Pipeline или Multibranch.
  • Multibranch без вебхука. Ждёшь сборку новой ветки, а её нет - пересканирование по таймеру ещё не наступило. Настрой вебхук от Git-сервера.
  • Забыть про права в Organization Folder. Сканирование всей организации тянет в Jenkins всё подряд. Ограничивай через фильтры репозиториев и креденшелы с минимальными правами.
  • Тяжёлые Jenkinsfile в каждой ветке. При сканировании Jenkins прогоняет файл из каждой ветки. Логику выноси в Shared Library, в Jenkinsfile держи только оркестрацию.
Мини-лаба

Руками, чтобы осело:
  • Создай Freestyle с одним шагом Execute shell (echo plus uname -a). Запусти, глянь, где лежит его config.xml.
  • Создай Pipeline-проект, вставь declarative Jenkinsfile из урока, прогони.
  • Заведи Multibranch Pipeline на свой тестовый репозиторий с двумя ветками (main и feature), в каждой - свой Jenkinsfile. Проверь, что Jenkins создал по job на ветку.
  • Открой pull request из feature в main и убедись, что появился job на PR (changeRequest()).
Контрольные вопросы
  • Чем конфигурация Freestyle принципиально хуже Pipeline с точки зрения хранения и ревью?
  • Что именно автоматически делает Multibranch Pipeline при появлении новой ветки с Jenkinsfile?
  • В чём разница между Multibranch Pipeline и Organization Folder по уровню охвата?
  • Почему без вебхука новая ветка может собраться не сразу, и как это лечится?
Итог

Freestyle - наследие для разовых задач. Pipeline - конвейер как код, база современного Jenkins. Multibranch Pipeline - выбор по умолчанию для нормального репозитория с ветками и PR: настроил раз, дальше всё само. Organization Folder - тот же принцип на масштаб целой организации. Запомни лестницу автоматизации - и больше не будешь плодить сотни ручных jobs там, где хватит одного правильно выбранного типа.
👍6 ❤️1 🔥 😄 🤔1
Аватара пользователя
markopolo
Сообщения: 1
Зарегистрирован: 20 май 2026, 23:26

Re: Типы заданий Jenkins: Freestyle, Pipeline, Multibranch и Organization

Сообщение markopolo »

Спасибо, наконец дошло зачем Organization Folder вообще нужен. У нас полсотни репо и каждый раз руками заводить job это ад. А вебхук на гитлаб где настраивается, на стороне джобы или в самом гитлабе?
👍1 ❤️ 🔥 😄 🤔
Аватара пользователя
jason11
Сообщения: 1
Зарегистрирован: 15 май 2026, 16:00

Re: Типы заданий Jenkins: Freestyle, Pipeline, Multibranch и Organization

Сообщение jason11 »

Сидел на freestyle два года и страдал, не зная что есть Multibranch. Перевёл основной проект за вечер, теперь PR сами собираются и статус в гитхаб летит. Жалею что не сделал раньше.
👍 ❤️ 🔥 😄 🤔
Ответить
← Предыдущая глава
Генератор сниппетов, запуск конвейера и Replay
Следующая глава →
Декларативный конвейер: структура pipeline, agent, stages

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

Поделиться темой: ✈ Telegram VK
  • Похожие темы
Похожие запросы: что такое jenkins простыми словамикак установить jenkins на linux и в dockerпервичная настройка jenkins после установкикакие плагины jenkins нужны новичкукак настроить агенты jenkins для сборкиcicd для начинающих с чего начать на jenkins

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

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

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