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

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

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

Ответы [ 10 ]

61 голосов
/ 18 января 2010

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

Существует плагин под названием Плагин конфигурации SCM Sync .


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

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

РЕДАКТИРОВАТЬ: Если вы найдете способ определить пользователя для изменения, сообщите нам.

РЕДАКТИРОВАТЬ 2011-01-10 Тем временем появился новый плагин: Плагин конфигурации SCM Sync . В настоящее время он работает только с Subversion и Git, но планируется поддержка большего количества репозиториев. Я использую его начиная с версии 0.0.3, и до сих пор он работал хорошо.

39 голосов
/ 09 января 2014

Обратите внимание, что у Фогеллы недавний (январь 2014 г., по сравнению с вопросом ОП, январь 2010 г.), и по-другому это делается.
Учтите, что подключаемый модуль конфигурации SCM Sync может генерировать много коммитов.
Таким образом, вместо того, чтобы полагаться на плагин и автоматизированный процесс, он управляет той же функцией вручную:

Хранение информации о задании Дженкинса в Git

Я обнаружил, что количество коммитов было немного подавляющим, поэтому я решил управлять коммитами вручную и сохранять только информацию о задании, а не конфигурацию Jenkins.
Для этого перейдите в каталог заданий Jenkins (Ubuntu: /var/lib/jenkins/jobs) и выполните команду «git init».

Я создал следующий .gitignore файл для хранения только информации о заданиях Git:

builds/
workspace/
lastStable
lastSuccessful
nextBuildNumber
modules/
*.log

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

Альберто на самом деле также рекомендуем добавить (в $JENKINS_HOME):

  • собственный конфиг jenkins (config.xml),
  • конфиги плагинов jenkins (hudson*.xml) и
  • пользовательские конфиги (users/*/config.xml)
19 голосов
/ 14 января 2011

Для ручного управления вашей конфигурацией с помощью 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

См. это GitHub Gist и это сообщение в блоге для получения более подробной информации.

14 голосов
/ 01 ноября 2010

Существует новый плагин конфигурации синхронизации SCM , который делает именно то, что вы ищете.

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

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

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

6 голосов
/ 11 июля 2016

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

Чтобы сохранить их в VCS, сначала войдите в систему как Jenkins (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.

# 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

Наконец, добавьте и зафиксируйте любые другие файлыесли необходимо, затем перенесите его в удаленный репозиторий, где вы хотите сохранить файлы конфигурации.


Когда файлы Jenkins обновлены, вам необходимо перезагрузить их ( Перезагрузить конфигурацию с диска ) или запустить reload-configuration от Jenkins CLI.

5 голосов
/ 04 ноября 2016

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

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

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

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

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

2 голосов
/ 07 марта 2018

Более точный .gitignore, вдохновленный ответом nepa :

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

Он игнорирует все, кроме .xml конфигурационных файлов и .gitignore.(отличие от nepa .gitignore состоит в том, что он не «игнорирует» все каталоги верхнего уровня (!*/), такие как logs/, cache/ и т. д.)

2 голосов
/ 25 июня 2015

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

script:
    - make
    - make test

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

enter image description here

2 голосов
/ 27 июня 2013

Ответ от Марка (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
0 голосов
/ 25 июля 2011

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

Есть преимущества в сохранении всего Гудзона в git. Все изменения конфигурации записываются в журнал, и вы можете довольно легко протестировать тестирование на одном компьютере, а затем обновить другие компьютеры с помощью git pull.

Мы использовали это как образец для нашей установки непрерывной доставки Hudson на работе.

С уважением Morten

...