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

StackOverflow https://stackoverflow.com/questions/2087142

Вопрос

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

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

Это было полезно?

Решение

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

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


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

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

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

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

Другие советы

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

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

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

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

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

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

Alberto на самом деле рекомендую также добавить (в $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

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

Есть новый Подключаемый модуль настройки синхронизации SCM который делает именно то, что вы ищете.

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

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

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

Вы можете найти файлы конфигурации в Домашняя папка Дженкинса (например, /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.

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

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

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

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

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

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

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

Он игнорирует все, за исключением .xml конфигурационные файлы и .gitignore сама по себе.(разница в непа's .gitignore заключается в том, что он не "отменяет" все каталоги верхнего уровня (!*/) нравится logs/, cache/, и т.д.)

Ответ от Марка (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 в системе управления версиями.Просто добавьте .jenkins.yml файл с содержимым:

script:
    - make
    - make test

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

enter image description here

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

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

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

С уважением Morten

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top