Есть ли способ сохранить файлы конфигурации Hudson / Jenkins в системе управления версиями?
-
21-09-2019 - |
Вопрос
Я новичок в 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
и Дженкинс сделает это:
Я полностью проверил Хадсон, вы могли бы использовать это в качестве отправной точки https://github.com/morkeleb/continuous-delivery-with-hudson
Есть преимущества в хранении всего хадсона в git.Все изменения конфигурации регистрируются, и вы можете довольно легко протестировать testup на одной машине, а затем обновить другую машину (ы) с помощью git pull.
Мы использовали это в качестве шаблона для нашей установки непрерывной доставки hudson на работе.
С уважением Morten