Пусть Дженкинс построит проект из Mercurial commit

Есть ли способ указать хук в одном репозитории?

Теперь мы указали хук в файле "/etc/mercurial/hgrc", но каждый раз он собирается дважды, и он собирается для каждого коммита в каждом репозитории.

Поэтому мы хотим указать сборку для репозитория.

Вот как мы реализовали хук:

[hooks]
changegroup = curl --silent http://jenkins:8080/job/ourProject/build

Это на сервере Ubuntu.

3 ответа

  1. Выберите опцию Опрос SCM в разделе Построить триггеры.
  2. Убедитесь, что форма расписания пуста.

Вы должны создавать в каталоге.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

Вы должны убедиться, что

  1. Ваш проект Дженкинс не опрашивает

  2. Вы используете правильные 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 (фиксация, входящий и групповой обмен). Ваши локальные ловушки предназначены для других вещей, таких как электронная почта, журналы, конфигурация и т. Д.

Другие вопросы по тегам