Есть ли способ сохранить конфигурационные файлы Hudson / Jenkins в системе управления версиями?



Я новичок в Hudson / Jenkins и хотел бы знать, есть ли способ проверить файлы конфигурации Hudson в системе управления версиями.



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

686   10  

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

    Ничего не найдено.