Пусть Дженкинс построит проект из Mercurial commit
Есть ли способ указать хук в одном репозитории?
Теперь мы указали хук в файле "/etc/mercurial/hgrc", но каждый раз он собирается дважды, и он собирается для каждого коммита в каждом репозитории.
Поэтому мы хотим указать сборку для репозитория.
Вот как мы реализовали хук:
[hooks]
changegroup = curl --silent http://jenkins:8080/job/ourProject/build
Это на сервере Ubuntu.
3 ответа
- Выберите опцию Опрос SCM в разделе Построить триггеры.
- Убедитесь, что форма расписания пуста.
Вы должны создавать в каталоге.hg, /home/user/mercurial/.hg/hgrc
и добавить крючки как:
[hooks]
commit.jenkins = wget -q http://localhost:8080/mercurial/notifyCommit?url=file:///home/user/mercurial > /dev/null
incoming.jenkins = wget -q http://localhost:8080/mercurial/notifyCommit?url=file:///home/user/mercurial > /dev/null
Вы должны убедиться, что
Ваш проект Дженкинс не опрашивает
Вы используете правильные URL-адреса notifyCommit для ваших хуков Mercurial: https://wiki.jenkins-ci.org/display/JENKINS/Mercurial+Plugin
Хорошо, я нашел то, что искал (я щедрость; мой случай - Mercurial с определенной веткой).
В хранилище main/origin поместите хук с желаемым сценарием сборки. Pregroupchange предназначен для поддержки входящих изменений. У меня установлен основной код в главном репозитории, и у него есть свои хуки.
Таким образом, я все еще запускаю Jenkins и все еще имею изменения после триггера для push-уведомлений rhodecode и других.
[hooks]
pregroupchange = /path/to/script.extention
В сценарии разместите желаемые действия, а также триггер для Дженкинса. Не забудьте включить в Jenkins:Job:Configure:Build Triggers:checkbox
Триггер строит удаленно + поставь здесь свой desired_token
(для моего случая: Mercurial).
Поскольку вы не можете запустить только определенную ветку в Mercurial, я нашел название ветки таким образом. Кроме того, для запуска из удаленного сценария необходимо предоставить в Jenkins разрешение на чтение для анонимного пользователя в целом или создать конкретного пользователя с учетными данными и поместить его в URL-адрес триггера.
Пример Bash:
#!/bin/bash
BRANCH_NAME=`hg tip --template "{branch}"`
if [ $BRANCH_NAME = "branch_name" ]; then
curl --silent http://jenkins_domain:port/path/to/job?token=desired_token
fi
Для исходного вопроса:
Таким образом, вы выполняете только одну сборку для нужной ветви. Хуки предназначены только для основного репозитория, если вы работаете с несколькими клонами и несколькими разработчиками. У вас могут быть свои локальные хуки, но не запускайте Jenkins от вас локально, для каждого разработчика. Запускать Jenkins только из основного репозитория при получении push (фиксация, входящий и групповой обмен). Ваши локальные ловушки предназначены для других вещей, таких как электронная почта, журналы, конфигурация и т. Д.