Не отнять у @vaporwave_sailor или @Alex ответы, а добавить..
Основной ответ вы ДОЛЖНЫ обновить все совместимые плагины, которые только можете, затем войну, затем более новые плагины. Все плагины зависят от минимальной версии Jenkins и Центр обновлений вернет вам другую информацию.
Дальнейшее уточнение, особенно при переходе с <2.263.4 на> 2.277.1 и многие другие. критические изменения пользовательского интерфейса и таблицы-дивы-регарессия (Панель управления): Перед запуском вы должны убедиться, что ваши плагины имеют последнюю версию, совместимую с существующей базовой версией Jenkins. Итак, это плагины, война, плагины.
Если вы не обновляетесь часто, используйте LTS-версия. ПРОЧИТАЙТЕ Руководство по обновлению. ПРОЧИТАЙТЕ Журнал изменений. ПЕРЕЧИТАЙТЕ Руководство по обновлению. Сделайте то же самое для всех своих основные плагины. Есть существенные изменения, особенно в отношении безопасности, которая может потребовать внесения изменений с вашей стороны. Многие ранее включенные в комплект поставки больше не входят в комплект. Плагины, которые давно не поддерживаются, могут иметь лучшие альтернативы или содержать проблемы безопасности, о которых вам следует знать. Поведение и настройки могут измениться.
Ниже приведены НЕ точные шаги, а скорее действия, которые необходимо выполнить в процессе. Описательный, а не предписывающий.
Рассмотрите возможность установки Jenkins Плагин «Конфигурация как код» (JCasC)n сначала к существующей установке. Обычно это позволяет вам экспортировать почти всю конфигурацию и просто перезагрузить ее в новый экземпляр. Гораздо проще, но не справляется с плагинами. А пока скопируйте решение из докер/install_plugins.sh для местного применения; видеть Предварительная установка плагинов.
Сделайте резервную копию существующего Jenkins и установите папку «Dev». Подтвердите свое обновление там, прежде чем подавать заявку на Prod. ВСЕГДА. (Кроме того, в любом случае регулярно делайте резервную копию вашего Prod).
Разделите резервную копию на две части: конфигурацию системы и задания. Вакансии находятся в ${JENKINS_HOME}/jobs. Конфигурация системы включает в себя (в
jenkins.install.runSetupWizard
),
jenkins.model.Jenkins.workspacesDir
, возможно, и другие.
Вернёмся на минутку к плагинам. Я согласен с добавлением их в сегментах:
- Плагины аутентификации
- Плагины представления (например: Active-directory, учетные данные)
- Плагины SCM (например: Git)
- Административные плагины (например: greenballs, windows-slave)
- Плагины инструментов (например: ant, maven-plugin)
- Плагины конвейера (например: агрегатор рабочих процессов, Blue-Ocean, K8s)
Все вышеперечисленное является «Глобальными плагинами с конфигурациями».
- Наконец, плагины этапов задания; это зависит от конкретной работы.
При использовании подхода install_plugins.sh вам нужно беспокоиться только о плагине самого высокого уровня, поскольку он будет извлекать зависимости. Если вы установите blueocean, он установит около 25 плагинов. Просто укажите первое и получите остальное. Имейте в виду, что файл install_plugins.sh является динамическим, поскольку он получает доступные в данный момент зависимости. Итак, мы выбираем верхний список, управляем им, запускаем один раз, чтобы получить полный список, затем читаем проверенный явный список в экземпляр Prod (управляем коротким, используем полный, сохраняем оба). Мы управляем 55 плагинами верхнего уровня, но установлено 160, включая все зависимости в полном списке.
Этот отличный скрипт предоставит вам существующие плагины:
jenkins.model.Jenkins.buildsDir
В экземпляре Dev установите войну, установите плагины, создайте файл
QuietDown()
, add the line:
QuietDown()
. Это позволяет вашей системе запускаться, не допуская каких-либо
работа начинается. Таким образом, вы сможете просматривать системные журналы без паники и замешательства. Посмотрите на все раньше
./nodes
.
Теперь вы можете установить конфигурации системы, но не
./jobs
and not the
INFO: Jenkins is fully up and running
. Запустите его и
проверьте журналы для получения информации, предупреждений и ошибок.
Возможно, вы даже захотите начать с существующей военной версии, существующих плагинов и базовой конфигурации, запустить ее и сохранить журналы в качестве ссылок. Затем с помощью пользовательского интерфейса обновите войну, затем перезапустите, затем плагины с помощью пользовательского интерфейса, затем перезапустите, затем проверьте и сохраните логи как ссылки.
Если вы используете JCasC, вы можете выполнить тонкую установку конфигураций, а затем импортировать конфигурации JCasC. Использование JCasC здесь.
*Примечание: вы заметите одно важное изменение: больше плагинов переходят на собственную конфигурацию XML вместо добавления в основной файл config.xml. Есть много плагинов, в которых говорится, что эта конфигурация НЕ имеет обратной совместимости. Вам придется восстановить старую конфигурацию при «понижении версии» (правильный язык — начните снова с шага 1)
Только когда ваша основная система запустится нормально, я бы добавил задания (с
Hudson.instance.doQuietDown();
in place ), no nodes and in QuiteDown. Start up again, examine logs for errors, upgrade warnings, etc. Deal w/those. Many plugins will change their data format, hence the many warnings you see, and the
«Управление старыми данными». ЕСЛИ вы действительно параноик, вы можете даже написать небольшой классный скрипт, который найдет все ваши задания и пересохранит их. Хотя Jenkins знает об изменениях конфигурации, он фактически не меняет и не обновляет ссылки на плагины в заданиях до тех пор, пока задание не будет запущено или сохранено (если вам нужен сценарий, задайте отдельный вопрос).
Завершите работу, удалите каталог заданий (это ваш экземпляр DEV, так что все в порядке).
Запустите снова и создайте небольшой набор заданий проверки. Они подтверждают все этапы вашей реальной работы, но не влияют на них. Это «тестовые примеры», на которые ссылается @Alex. Мы используем «образцы приложений» различных имеющихся у нас вариантов и заданий, охватывающих все этапы. У нас есть тестовые задания, которые просто попадают на узел, выгружают среду, задания, которые клонируют репозиторий и выполняют сборку (в вариантах), задания, которые выполняют весь цикл: клонирование, сборку, анализ, тестирование, развертывание, а также задания конвейера ( поэтапно). Теперь вы можете добавить конфигурацию и запуск узлов и выполнить их. Они ваше подтверждение. Если они сработают, значит, вы готовы настолько, насколько это возможно. Теперь вы также можете экспортировать конфигурацию JCasC.
Теперь удалите весь экземпляр Dev и ПОВТОРИТЬ используя только окончательную конфигурацию и описанные вами действия. Все ли сработало так, как ожидалось? Запустите JCasC еще раз, они совпали?
Теперь вы можете применить ту же окончательную конфигурацию к своему продукту. Остановите производство и сделайте еще одну резервную копию. Я бы добавил
${JENKINS_HOME}/init.groovy
first to Prod.
Наконец, рассмотрите возможность использования некоторых новых «Свойства системы». Теперь вы можете устанавливать местоположения за пределами ${JENKINS_HOME} для
Jenkins.instance.pluginManager.plugins.sort(false) { a, b -> a.getShortName().toLowerCase() <=> b.getShortName().toLowerCase()}.each { plugin ->
println "${plugin.getShortName()}:${plugin.getVersion()} | ${plugin.getDisplayName()} "
}
// the following may also be useful
// println "+++ ${plugin.getDependants()}"
// println "... ${plugin.getDependencies()"
(ps: sym-links in builds are now optional) and
./*.xml ./secret.key* ./secrets ./security-tokens ./nodes
, удаляя ненужные данные из ${JENKINS_HOME}. Ваши резервные копии станут меньше и проще, а производительность вашей системы может улучшиться! Вы также захотите установить
${JENKINS_HOME}
to false.
Помните, это носит описательный, а не консервирующий характер. Адаптируйтесь к своим потребностям и терпимости к риску.