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


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

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

10 125

10 ответов:

самый полезный ответ

есть плагин под названием SCM Sync configuration plugin.


Оригинальный Ответ

посмотреть мой ответ: на подобный вопрос. Основная идея заключается в использовании файловая система-scm-плагин для обнаружения изменений в xml-файлах. Ваша вторая часть будет фиксировать изменения в SVN.

EDIT: если вы найдете способ определить пользователя изменения, дайте нам знать.

изменить 2011-01-10 между тем есть новый плагин: SCM Sync configuration plugin. В настоящее время он работает только с subversion и git, но планируется поддержка большего количества репозиториев. Я использую его с версии 0.0.3, и он работал хорошо до сих пор.

обратите внимание, что у Vogella есть недавний (январь 2014 года, по сравнению с вопросом OP в январе 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 что делает именно то, что вы ищете.

конфигурация синхронизации SCM плагин Hudson направлено на 2 основные особенности :

  • продолжайте синхронизировать свою конфигурацию.xml (и другие ресурсы) файлы hudson с a SCM репозиторий
  • отслеживать изменения (и автор), сделанные на каждом файле с фиксацией сообщений

Я на самом деле еще не пробовал, но это выглядит многообещающе.

Я предпочитаю исключить все, что находится в домашней папке Дженкинса за исключением файлы конфигурации, которые вы действительно хотите иметь в своем VCS. Вот это .gitignore файл, который я использую:

*
!.gitignore
!/jobs/*/*.xml
!/*.xml
!/users/*/config.xml
!*/

это игнорирует все (*) за исключением (!).gitignore сам, задания / проекты, плагин и другие важные и пользовательские файлы конфигурации.

также стоит рассмотреть возможность включения plugins папка. Досадно обновленные Плагины должны быть включенный...

в основном это решение упрощает будущие обновления Jenkins/Hudson, потому что новые файлы автоматически не попадают в область действия. Вы просто получите на экране то, что вы действительно хотите.

вы можете найти файлы конфигурации в Дженкинс домашняя папка (например,/var/lib/jenkins).

чтобы сохранить их в VCS, сначала войдите в систему как Дженкинс (sudo su - jenkins) и создать свои учетные данные git:

git config --global user.name "Jenkins"
git config --global user.email "jenkins@example.com"

затем инициализируйте, добавьте и зафиксируйте основные файлы, такие как:

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 от Дженкинса кли.

ответ от Марка (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 fill_in_the@blank.com
    hg push
fi

Я написал плагин это позволяет проверить ваши инструкции Дженкинса в системе управления версиями. Просто добавьте .jenkins.yml файл с содержимым:

script:
    - make
    - make test

и Дженкинс сделает это:

enter image description here

а точнее .gitignore, вдохновленный ответом от Непа:

*
!.gitignore
!/jobs/
!/jobs/*/
/jobs/*/*
!/jobs/*/config.xml
!/users/
!/users/*/
/users/*/*
!/users/*/config.xml
!/*.xml

он игнорирует все, кроме .xml config и . (разница в Непа ' s .gitignore это не "unignore" все каталоги верхнего уровня (!*/) как logs/,cache/ и т. д.)

Я полностью проверил Хадсон, вы можете использовать это в качестве отправной точки https://github.com/morkeleb/continuous-delivery-with-hudson

есть преимущества, чтобы держать весь Хадсон в git. Все изменения конфигурации регистрируются, и вы можете проверить testup довольно легко на одной машине, а затем обновить другую машину(ы) с помощью git pull.

мы использовали это в качестве шаблона для нашей установки непрерывной доставки hudson на работа.

с уважением Мортен