Могу ли я сохранить конфигурацию Jenkins в репо проекта (например, Travis CI)?

Как вы поддерживаете конфигурацию задания Jenkins в SCM вместе с исходным кодом?

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

  • легко увидеть, кто из истории изменений, включая автора и описание
  • возможность перестроить старый ветвь/тег, проверив ревизию и построив только работу.
  • не нужно прокручивать пользовательский интерфейс, чтобы найти соответствующий раздел и внести изменения

Я вижу, что есть плагин Jenkins Job Builder. Я предпочитаю решение по строкам Travis CI, где конфигурация заданий поддерживается в файле YAML (.travis.yml). Любые хорошие предложения?

Примечание. Большинство наших проектов используют Java и Maven.

Ответ 1

Обновление 2016: Дженкинс теперь предоставляет Jenkinsfile, который обеспечивает именно это. Это поддерживается основными разработчиками Jenkins и активно развивается.

Преимущества:

Создание файла Jenkins, который проверяется в исходном элементе управления, дает ряд непосредственных преимуществ:

  • Обзор/итерация кода на трубопроводе
  • Аудит для трубопровода
  • Единственный источник правды для Pipeline, который можно просмотреть и отредактировать несколькими членами проекта.

Я написал плагин, который делает это!

Помимо моего плагина, у вас есть некоторые (ограниченные) варианты с существующими плагинами Jenkins:

Используйте один тест script

Если вы настроите Jenkins просто запустить:

$ bash run_tests.sh

Затем вы можете проверить файл run_tests.sh в своем реплике SCM, и теперь вы отслеживаете изменения для того, как вы запускаете тесты. Однако это не будет отслеживать конфигурацию любых плагинов.

Аналогично, если вы используете Maven, Maven Project Plugin просто запускает указанную цель для вашего репо.

Литературный плагин позволяет Jenkins запускать команды в вашем README.md, но он еще не выпущен.

Отслеживание изменений конфигурации Jenkins

Вы можете использовать плагин конфигурации SCM Sync для записи изменений конфигурации в SCM, поэтому у вас есть, по крайней мере, постоянная запись. Это глобально, во всех проектах вашего экземпляра Jenkins.

Также существует плагин конфигурации конфигурации заданий, в котором хранится история конфигурации в файловой системе.

Напишите конфигурацию Дженкинса из SCM

Проект создатель проекта Jenkins, который вы упомянули, позволяет проверять изменения конфигурации в SCM и применять их к вашему экземпляру Jenkins. Опять же, это во всех проектах вашего экземпляра Jenkins.

Напишите конфигурацию Дженкинса из другого задания

Вы можете использовать Job DSL Plugin с репо сценариев groovy. Затем Дженкинс опросит это репо, выполняет сценарии groovy, которые создают конфигурации заданий.

Обсуждение

Проблема 996 (теперь закрыта) обсуждает это, и это также обсуждалось в списке рассылки: "Отслеживание изменений конфигурации Хадсона" и "сохранить конфигурацию hudson в svn" .

Ответ 2

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

Он основан на DSL groovy и позволяет сохранить всю конфигурацию в SCM по вашему выбору (например, GIT, SVN...).