2015-10-19 3 views
0

Я недавно установил сервер Jenkins, и после того, как я получил много проектов, я понял, что иметь возможность управлять версиями всех настроек конфигурации будет ценным.Редактирование версий Jenkins с помощью Git

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

Итак, подумав об этом, я пошел дальше и настроил репозиторий Git, который находится в папке установки Jenkins.

Вот файл .gitignore настоящее время я использую:

# ignore everything to start 
* 

# except these 
!**/ 
!*.xml 
!.gitignore 

# then ignore these 
builds/ 
plugins/ 
war/ 
lastStable/ 
lastSuccessful/ 

Это, кажется, работает очень хорошо захватить все изменения в любой файл XML в папке установки Дженкинс. Моя единственная жалоба заключается в том, что это немного ручной процесс, требующий фиксации/нажатия репо после любого измененного набора изменений.

Мне интересно, есть ли лучший способ достичь этого, или есть ли какие-либо потенциальные проблемы для этого?

ответ

1

Вы должны проверить Job DSL Plugin. Он позволяет поддерживать задание и просматривать конфигурацию в файлах сценариев, таких как исходный код. И сценарий может храниться в управлении исходным кодом очень хорошо. Рабочий процесс меняет сценарий задания DSL, проверку SCM, затем запускает задание в Jenkins для проверки скриптов и адаптации конфигурации.

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

+0

Интересный плагин. Посмотрев на это, ваш пост заставляет меня задуматься о еще более основных строках. На самом деле единственным недостатком моей текущей настройки с Git repo в корне папки Jenkins является необходимость удаленного доступа к серверу и нажатия любых изменений конфигурации. Я думаю, что создание проекта в Дженкинсе, который делает это для меня, который можно запустить из пользовательского интерфейса Jenkins в качестве операции с одним кликом, станет хорошим началом. Поскольку работа будет выполняться на самом узле сервера Jenkins, должно быть довольно легко написать сценарий, чтобы делать все материалы Git, или, возможно, делать это с помощью плагина Git. – salimoneus

0

Я закончил создание проекта Jenkins, который в основном запускает git add/commit/push на любые изменения в конфигурациях Jenkins. Он использует параметр по умолчанию для сообщения фиксации, если он пуст, тогда сценарий запускает статус git и завершается. Я также планировал, что он будет запускаться каждую ночь, чтобы получить любые изменения, которые, возможно, не были перенесены с использованием этого задания с помощью специального сообщения о фиксации.

Jenkins в настоящее время находится в Windows, так что вот пакетные команды, которые я использую. Поскольку Jenkins изначально был настроен на запуск под учетной записью SYSTEM, мне пришлось установить пару окружений, чтобы заставить его работать как есть.

@ECHO OFF 

set HOMEDRIVE=C: 
set HOMEPATH=Users/Jenkins 
cd "C:\Program Files (x86)\Jenkins" 

@ECHO ON 

git status 

@ECHO OFF 

if "%commit_message%" == "" (
    EXIT 0 
) 

@ECHO ON 

git add -A 
git commit -m "%commit_message%" 

@ECHO OFF 

IF %ERRORLEVEL% NEQ 0 (
    EXIT 0 
) 

@ECHO ON 

git push 
git status 
git log -n 3 

Хранение учетных данных Git - это действительно единственное, что плохо обрабатывается. На данный момент я просто добавил пользователя: перейдите в URL-адрес репозитория Git, но, очевидно, это не идеально. Я пытался использовать некоторые из методов сохранения учетных данных для Windows в прошлом, и они не работали. Это все еще нужно сортировать.

+0

Я пробовал настраивать вещи, используя стандартный плагин Git SCM, с сохраненными учетными данными в Jenkins, но он всегда сдул любые изменения, которые у меня были в реальном репозитории Jenkins.Плагин Git SCM, по-видимому, предназначен для снятия собственной копии другого репо, в отличие от работы в единственной копии живого репо. Если бы это сработало, я, вероятно, мог бы использовать плагин Git Publisher, чтобы сделать все остальное. Использование пакета/скрипта, как описано выше, кажется лучшим способом выполнить мою задачу в настоящее время. – salimoneus

Смежные вопросы