Плагины Jenkins: установка, обновление и ключевой набор

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

Плагины Jenkins: установка, обновление и ключевой набор

Сообщение 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 почти ничего не умеет. Серьёзно: ядро - это маленький движок, очередь задач и веб-морда. Всё остальное, чем ты реально пользуешься каждый день - declarative pipeline, работа с Git, хранилище секретов, запуск агентов в Kubernetes, отправка в Docker - приезжает плагинами. Именно поэтому экосистема плагинов Jenkins одновременно его суперсила и его главная боль. Тысячи расширений дают гибкость, которой нет у конкурентов, но они же ломают обновления, тянут конфликтующие зависимости и валят контроллер, если ты ставишь их бездумно.

В этом уроке разберёмся, как устроены jenkins плагины, откуда они берутся, как обновлять и откатывать без сюрпризов, какой набор реально нужен в 2026 году и как описать всё это кодом, чтобы инсталляция была воспроизводимой.

Update Center и механика установки плагина Jenkins

Любой плагин Jenkins берётся из Update Center - это каталог, который контроллер периодически тянет с updates.jenkins.io. По умолчанию там лежат последние совместимые версии под твою сборку ядра. Зайди в "管理 Jenkins -> Plugins" (старый путь "Manage Plugins"), и увидишь четыре вкладки: доступные обновления, available для установки, installed и advanced с настройкой источника.

Когда ты ставишь плагин jenkins через UI, происходит вот что: контроллер скачивает .hpi-файл, кладёт его в JENKINS_HOME/plugins, разрешает зависимости (другие плагины, которые нужны этому) и тоже их докачивает. Многие плагины требуют рестарта - до перезапуска класслоадер не подхватит новые классы. Поэтому в Update Center есть галочка "Restart Jenkins when installation is complete and no jobs are running".

Самое важное про зависимости: ты почти никогда не ставишь один плагин. Например, ставя workflow-aggregator (это и есть jenkins pipeline plugin, мета-пакет всего пайплайна), ты тянешь два-три десятка transitive-зависимостей. Каждая из них - отдельный модуль со своей версией и своим темпом обновлений.

Изображение

Обновление, откат и совместимость: где больно

Update Center показывает, для каких плагинов есть свежие версии. Обновлять оптом и сразу на проде - плохая идея. Типичный сценарий аварии: ты жмёшь "обновить всё", один из плагинов в новой версии поднял минимальную версию ядра или другого плагина, зависимость не удовлетворилась - и после рестарта половина расширений в статусе "failed to load", а джобы не стартуют.

Откат в Jenkins есть, но он примитивный. На странице плагина внизу бывает кнопка "Downgrade to <предыдущая версия>" - она работает, только если старый .hpi ещё лежит локально (Jenkins хранит .bak). Если нет - качаешь нужную версию вручную со страницы плагина на plugins.jenkins.io, кладёшь .hpi в каталог plugins и перезапускаешь. Поэтому золотое правило: бэкап JENKINS_HOME (а точнее каталога plugins и config.xml) перед каждым обновлением. Без бэкапа откат превращается в археологию.

Про совместимость в 2026 держи в голове два слоя. Первый - версия ядра: плагин объявляет минимально требуемую LTS. Второй - версия Java. Тут за последние пару лет всё сдвинулось: актуальные LTS-линии Jenkins уже требуют Java 21, а самые свежие сборки поддерживают и Java 25; Java 17 в новых релизах LTS отвалилась. Если ты сидишь на старой Java, часть свежих плагинов просто не загрузится. Прежде чем массово обновлять плагины, убедись, что контроллер крутится на поддерживаемой Java - иначе словишь NoClassDefFoundError на ровном месте.

Ключевой набор jenkins plugins на 2026 год

Не ставь всё подряд "на всякий случай" - каждый лишний плагин это поверхность атаки и потенциальный конфликт. Вот разумный костяк для современного declarative-конвейера:
  • Pipeline (workflow-aggregator) - сердце. Тот самый jenkins pipeline plugin, который даёт директивы pipeline, stages, steps и парсинг Jenkinsfile.
  • Git (git, git-client) - чекаут репозиториев, без него никуда.
  • Credentials + Credentials Binding - безопасное хранилище секретов и их подстановка в шаги через withCredentials.
  • Configuration as Code (configuration-as-code) - настройка самого Jenkins через YAML. В книге 2018 года этого нет, а сегодня это базовая практика.
  • Docker Pipeline (docker-workflow) - сборка и запуск контейнеров прямо из пайплайна.
  • Kubernetes (kubernetes) - эфемерные агенты-поды, которые поднимаются под задачу и умирают после неё.
  • Role-based Authorization Strategy (role-strategy) - гибкие права по ролям вместо matrix-каши.
  • Blue Ocean (blueocean) - наследие. Когда-то это был модный UI для пайплайнов, но проект давно в режиме поддержки: новых фич не будет, только редкие правки безопасности. Не строй на нём процессы. Для визуализации стадий бери Pipeline Graph View или Pipeline: Stage View - они живые и активно развиваются.
Управление плагинами как кодом: plugins.txt

Кликать мышкой в Update Center нормально для песочницы, но для прода это путь к "снежинке" - серверу, который никто не может воспроизвести. Решение - описать список плагинов файлом и собирать Jenkins из образа.

Официальный Docker-образ Jenkins несёт утилиту jenkins-plugin-cli (плагин-менеджер). Она читает plugins.txt в формате artifactId:version (версию можно опустить - возьмётся latest, но для воспроизводимости лучше пинить), скачивает плагины со всеми зависимостями и показывает предупреждения безопасности.

Пример plugins.txt:

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

workflow-aggregator:latest
git
credentials-binding
configuration-as-code
docker-workflow
kubernetes
role-strategy
pipeline-graph-view
Dockerfile, который запекает плагины в образ:

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

FROM jenkins/jenkins:lts-jdk21

COPY --chown=jenkins:jenkins plugins.txt /usr/share/jenkins/ref/plugins.txt
RUN jenkins-plugin-cli --plugin-file /usr/share/jenkins/ref/plugins.txt
Дальше связываем это с JCasC, чтобы и настройки контроллера были в коде. Кусок casc.yaml:

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

jenkins:
  systemMessage: "Контроллер собран из plugins.txt и JCasC"
  numExecutors: 0
  authorizationStrategy:
    roleBased:
      roles:
        global:
          - name: "admin"
            permissions:
              - "Overall/Administer"
            assignments:
              - "devops"
unclassified:
  location:
    url: "https://ci.cyberlake.ru/"
JCasC подхватывает этот файл через переменную окружения CASC_JENKINS_CONFIG (укажи путь к каталогу или файлу). Теперь весь сервер - от набора плагинов до прав доступа - лежит в git, ревьюится через pull request и катится одинаково на staging и прод.

А вот как использовать установленные плагины в реальном Jenkinsfile - эфемерный агент в Kubernetes плюс шаг с секретом:

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

pipeline {
    agent {
        kubernetes {
            yaml '''
                apiVersion: v1
                kind: Pod
                spec:
                  containers:
                  - name: maven
                    image: maven:3.9-eclipse-temurin-21
                    command: ['sleep']
                    args: ['infinity']
            '''
        }
    }
    stages {
        stage('Build') {
            steps {
                container('maven') {
                    sh 'mvn -B clean package'
                }
            }
        }
        stage('Push') {
            steps {
                withCredentials([usernamePassword(
                    credentialsId: 'registry-creds',
                    usernameVariable: 'REG_USER',
                    passwordVariable: 'REG_PASS')]) {
                    sh 'echo "$REG_PASS" | docker login -u "$REG_USER" --password-stdin'
                }
            }
        }
    }
}
Заметь: kubernetes, credentials-binding, docker-workflow и workflow-aggregator тут работают вместе - и все они приехали из plugins.txt.

Типичные грабли
  • Заброшенные плагины. На plugins.jenkins.io у части плагинов висит плашка "deprecated" или давно не было релизов. Такой плагин - мина: он может не пережить следующее обновление ядра или нести незакрытую уязвимость. Перед установкой смотри дату последнего релиза и число инсталляций.
  • Конфликты версий. Два плагина тянут одну зависимость разных версий. Jenkins разрулит не всегда - в логах "plugin X requires Y >= z". Лечится синхронным обновлением связки, а не точечным тыком в один плагин.
  • Влияние на стабильность контроллера. Кривой или тяжёлый плагин может отъедать память контроллера, плодить потоки и ронять весь инстанс. Чем больше плагинов - тем выше шанс, что один утянет всех. Минимализм здесь это не аскетизм, а надёжность.
  • Безопасность. Jenkins security advisories выходят регулярно и чаще всего касаются именно плагинов. jenkins-plugin-cli и Update Center показывают security warnings - не игнорируй их. Уязвимый плагин Git или Credentials это прямой путь к утечке секретов.
Для сравнения: в GitLab CI и GitHub Actions модель другая. Там нет такого зоопарка плагинов на контроллере - функциональность собирается из встроенных возможностей и переиспользуемых компонентов (GitHub Actions из marketplace, GitLab из include-шаблонов и компонентов). Это снимает боль обновлений, но и отнимает ту тотальную гибкость, ради которой многие держат Jenkins. Понимая риски плагинной модели, ты осознанно выбираешь, где она оправдана.

Мини-лаба
  • Открой "Manage Jenkins -> Plugins", зайди на installed и найди три плагина с пометкой об устаревании или предупреждением безопасности.
  • Установи Pipeline Graph View, запусти любой пайплайн и сравни визуализацию со старым Blue Ocean (если он ещё стоит).
  • Собери plugins.txt из ключевого набора выше и забилди свой Docker-образ Jenkins командой из урока. Подними контейнер и убедись, что плагины на месте без единого клика в UI.
  • Подключи JCasC: смонтируй casc.yaml, выставь CASC_JENKINS_CONFIG и проверь, что systemMessage и URL применились автоматически.
Контрольные вопросы
  • Что такое Update Center и почему установка одного плагина обычно тянет десятки других?
  • Почему перед массовым обновлением плагинов критичен бэкап JENKINS_HOME и какой механизм отката есть штатно?
  • Зачем нужен plugins.txt и чем подход "плагины как код" лучше ручной установки через UI?
  • Какой статус у Blue Ocean в 2026 году и чем его заменить для визуализации стадий пайплайна?
Итог

Плагины - это и есть Jenkins: ядро лишь движок, а реальная работа делается расширениями. Сила в гибкости, риск в нестабильности, конфликтах версий и уязвимостях. Лечится это дисциплиной: минимальный осознанный набор, бэкап перед обновлением, контроль security warnings и - главное - описание всего хозяйства кодом через plugins.txt и JCasC. Тогда твой контроллер перестаёт быть снежинкой и становится воспроизводимым артефактом, который не страшно пересобрать с нуля.
👍4 ❤️1 🔥2 😄 🤔2
✔ Лучший ответ сформирован автоматически — avon99_3ed
Спасибо, наконец дошло зачем plugins.txt - раньше ставил всё руками и после каждого обновления что-то отваливалось. Теперь буду пинить версии и собирать образ.
Перейти к ответу →
Аватара пользователя
avon99_3ed
Сообщения: 1
Зарегистрирован: 19 май 2026, 04:17
Репутация: 502

Re: Плагины Jenkins: установка, обновление и ключевой набор

Сообщение avon99_3ed »

✔ Лучший ответ — сформирован автоматически
Спасибо, наконец дошло зачем plugins.txt - раньше ставил всё руками и после каждого обновления что-то отваливалось. Теперь буду пинить версии и собирать образ.
👍1 ❤️1 🔥 😄 🤔
Работает — не трогай. Не работает — всё равно не трогай.
Аватара пользователя
pg7
Сообщения: 1
Зарегистрирован: 14 май 2026, 02:38

Re: Плагины Jenkins: установка, обновление и ключевой набор

Сообщение pg7 »

А подскажите, role-strategy конфликтует с matrix-auth если оба стоят? У меня после обновления половина прав слетела, грешу как раз на это.
👍1 ❤️ 🔥 😄 🤔
Ответить
← Предыдущая глава
Первичная настройка Jenkins: мастер, плагины, пользователи
Следующая глава →
Configuration as Code (JCasC): настройка Jenkins декларативно

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

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

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

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

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