Есть ли способ сохранить конфигурационные файлы Hudson / Jenkins в системе управления версиями?
Я новичок в Hudson / Jenkins и хотел бы знать, есть ли способ проверить файлы конфигурации Hudson в системе управления версиями.
В идеале я хочу иметь возможность нажать какую-нибудь кнопку в пользовательском интерфейсе, которая говорит "сохранить конфигурацию" и иметь файлы конфигурации Hudson, зарегистрированные в системе управления версиями.
10 ответов:
Самый полезный ответ
Существует плагин под названием SCM Sync configuration plugin.
Оригинальный Ответ
Взгляните на мой ответ на аналогичный вопрос. Основная идея заключается в использованииfilesystem-scm-plugin для обнаружения изменений в xml-файлах. Ваша вторая часть будет фиксировать изменения в SVN.
EDIT: Если вы найдете способ определить пользователя для изменения, сообщите нам об этом.
EDIT 2011-01-10 Тем временем появился новый плагин: SCM Sync configuration plugin. В настоящее время он работает только с subversion и git, но планируется поддержка большего количества репозиториев. Я использую его с версии 0.0.3, и он работал хорошо до сих пор.
Обратите внимание, что у Vogella есть недавний (январь 2014 года, по сравнению с вопросом ОП января 2010 года) и другой взгляд на это.
Учтите, чтоSCM Sync configuration plugin может генерироватьмножество коммитов.
Таким образом, вместо того, чтобы полагаться на плагин и автоматизированный процесс, он управляет той же функцией вручную:Хранение информации о работе Дженкинса в Git
Я нашел количество коммитов немного подавляющим, поэтому я решил контролируйте фиксации вручную и сохраняйте только информацию о задании, а не конфигурацию Дженкинса.
Для этого перейдите в каталог заданий Jenkins (Ubuntu:/var/lib/jenkins/jobs) и выполните команду "git init".Я создал следующий файл
.gitignoreдля хранения только информации о заданиях Git:builds/ workspace/ lastStable lastSuccessful nextBuildNumber modules/ *.logТеперь вы можете добавлять и фиксировать изменения по своему усмотрению.
И если вы добавляете другой пульт в свой репозиторий Git, вы можете переместить свою конфигурацию в другой сервер.Альберто на самом деле рекомендую добавить также (в
$JENKINS_HOME):
- собственная конфигурация Дженкинса(
config.xml),- конфигурации плагинов Дженкинса (
hudson*.xml) и- конфигурации пользователей(
users/*/config.xml)
Чтобы вручную управлять конфигурацией с помощью Git, выполните следующие действия .файл gitignore может быть полезен.
# Miscellaneous Hudson litter *.log *.tmp *.old *.bak *.jar *.json # Generated Hudson state /.owner /secret.key /queue.xml /fingerprints/ /shelvedProjects/ /updates/ # Tools that Hudson manages /tools/ # Extracted plugins /plugins/*/ # Job state builds/ workspace/ lastStable lastSuccessful nextBuildNumberСм. https://gist.github.com/780105 и http://bit.ly/i58rg2 для более подробной информации.
Есть новый SCM Sync Configuration plug-in , который делает именно то, что вы ищете.
Настройка плагина СКМ синхронизации Гудзон нацелен на 2 основные характеристики:
- продолжайте синхронизировать конфигурацию.xml (и другие ресурсы) файлы hudson с Хранилище SCM
- отслеживать изменения (и автора), внесенные в каждый файл с сообщениями о фиксации
На самом деле я еще не пробовал, но это выглядит многообещающе.
Я предпочитаю исключить все, что находится в домашней папке Дженкинса , за исключением конфигурационных файлов, которые вы действительно хотите иметь в своем VCS. Вот файл
.gitignore, который я использую:* !.gitignore !/jobs/*/*.xml !/*.xml !/users/*/config.xml !*/Это игнорирует все (
*), кроме (!).gitignoreсам, задания / проекты, плагин и другие важные и пользовательские конфигурационные файлы.Также стоит рассмотреть возможность включения папки
plugins. Раздражающе обновленные Плагины должны быть включены...В основном это решение делает это проще для будущих обновлений Дженкинса / Хадсона, потому что новые файлы автоматически не попадают в область действия. Ты просто выкладываешь на экран то, что тебе действительно нужно.
Файлы конфигурации можно найти в домашней папкеДженкинса (например,
/var/lib/jenkins).Чтобы сохранить их в VCS, сначала войдите в систему как Дженкинс (
sudo su - jenkins) и создайте свои учетные данные git:git config --global user.name "Jenkins" git config --global user.email "[email protected]"Затем инициализируйте, добавьте и зафиксируйте основные файлы, такие как:
git init git add config.xml jobs/ .gitconfig git commit -m'Adds Jenkins config files' -aТакже рассмотрите возможность создания
.gitignoreсо следующими файлами для игнорирования (настройки по мере необходимости):# Git untracked files to ignore. # Site-wide configuration files. *.xml # Except root configuration. !config.xml # Cache. .cache/ # Fingerprint records. fingerprints/ # Working directories. workspace/ # Secret files. secrets/ secret.* *.enc *.key users/ id_rsa # Plugins. plugins/ # State files. *.state # Job state files. builds/ lastStable lastSuccessful nextBuildNumber # Updates. updates/ # Hidden files. .* # Except git config files. !.git* !.ssh/ # User content. userContent/ # Log files. logs/ *.log # Miscellaneous litter *.tmp *.old *.bak *.jar *.json *.lastExecVersionЗатем добавьте его:
git add .gitignore.По завершении можно добавить конфигурационные файлы заданий, например
shopt -s globstar git add **/config.xml git commit -m'Added job config files' -aНаконец добавить и при необходимости зафиксируйте любые другие файлы, а затем переместите их в удаленное хранилище, где вы хотите сохранить файлы конфигурации.
Когда файлы Дженкинса обновляются, вам нужно перезагрузить их ( перезагрузить конфигурацию с диска) или запустить
reload-configurationиз Jenkins CLI.
Ответ от Марка (https://stackoverflow.com/a/4066654/142207 ) должен работать для SVN и Git (хотя конфигурация Git не работала для меня).
Но если он нужен для работы с Mercurial repo, создайте задание со следующим скриптом:
hg remove -A || true hg add ../../config.xml hg add ../../*/config.xml if [ ! -z "`hg status -admrn`" ]; then hg commit -m "Scheduled commit" -u [email protected] hg push fi
Я написал плагин, который позволяет вам проверить ваши инструкции Дженкинса в системе управления версиями. Просто добавьте файл
.jenkins.ymlс содержимым:script: - make - make testИ Дженкинс сделает это:
Более точный
.gitignore, вдохновленный ответом от nepa :* !.gitignore !/jobs/ !/jobs/*/ /jobs/*/* !/jobs/*/config.xml !/users/ !/users/*/ /users/*/* !/users/*/config.xml !/*.xmlОн игнорирует все, кроме
.xmlконфигурационных файлов и.gitignoreсамого себя. (разница с nepa 'S.gitignoreзаключается в том, что он не "unignore" все каталоги верхнего уровня (!*/), какlogs/,cache/, и т.д.)
Я полностью проверил Гудзон, вы можете использовать это в качестве отправной точки https://github.com/morkeleb/continuous-delivery-with-hudson
Есть преимущества в том, чтобы держать весь Гудзон в git. Все изменения конфигурации регистрируются, и вы можете довольно легко протестировать testup на одной машине, а затем обновить другую машину(машины) с помощью git pull.
Мы использовали это в качестве шаблона для нашей установки непрерывной доставки hudson на работе.
С уважением Мортен

Comments