Используйте Hudson для создания определенного коммита git - PullRequest
36 голосов
/ 17 ноября 2010

У меня есть сервер сборки Hudson.Исходный код управляется репозиторием git.Для каждой сборки проверяется и компилируется последняя версия.Теперь я бы хотел сказать Хадсону использовать не последнюю версию, а более старую версию кода (указанную мной).

В Хадсоне у меня есть два параметра, которые можно установить.Первое «имя репозитория» со значением по умолчанию «origin» и второе refspec со значением +refs/heads/*:refs/remotes/origin/*.Я немного попробовал что-то вроде origin/[commitid] или +refs/heads/*:refs/remotes/origin/[commitid].Но ничего не сработало, как ожидалось.

Я думаю, что мне пришлось использовать параметризованное задание, чтобы я мог передать коммит в качестве параметра для задания.

Как я могу сказать Хадсону использовать определенныйзафиксировать вместо последнего?

Ответы [ 7 ]

57 голосов
/ 11 апреля 2014

Я просто хочу этот ответить более четко.Как заставить свою работу извлекать конкретную фиксацию, шаг за шагом:

  1. Добавьте строковый параметр к своей работе с именем, пусть в моем примере это будет COMMIT.
  2. ВыбратьGit as SCM (предоставляется плагином Jenkins Git ).
  3. В свойствах Git SCM задайте свойства репо.
  4. В Git SCM, в абзаце Ветка дляbuild type ${COMMIT}, который является ссылкой на параметр задания и будет разрешен во время сборки.

Все, запустите сборку и в журнале вы увидите что-то вроде этого:

Cloning the remote Git repository
Cloning repository ssh://your-repo.git
Fetching upstream changes from ssh://your-repo.git
using GIT_SSH to set credentials 
Fetching upstream changes from ssh://your-repo.git
using GIT_SSH to set credentials 
Checking out Revision af63e2102b65953316e512c0bb659578bb143a33 (detached)

Обратите внимание, что существуют другие способы установить переменную среды перед извлечением SCM, например, используя Prepare environment for the run шаг из EnvInject Plugin (вы даже можете использовать Groovy для этого).

Кроме того, если вы не видите опции, о которых я говорю, или они не работают, убедитесь, что у вас установлена ​​новая версия плагина Git. В моем случае это 2.2.0.

9 голосов
/ 28 февраля 2014

Вы можете использовать параметр ветви jenkins-git-plugin , чтобы определить конкретный идентификатор фиксации.

В этом случае Jenkins будет извлекать только тот коммит, а не заголовок ветви.

7 голосов
/ 06 мая 2016

Как сказано в документации:

git plugin branch configure

Введите идентификатор вашей фиксации в настройке "Ветви для сборки".

4 голосов
/ 07 августа 2013

Один из способов решения этой проблемы:

  • установить плагин Git для создания специальной ветки "build_br".
  • сбросить ветку build_br наожидаемый коммит
  • передать эту ветку build_br на монитор удаленного репо Дженкинса или Хадсона (это будет push --force, как показано в "git reset --hard и удаленном репозитории * 1016"* ")

Таким образом, создание этой ветви build_br будет означать построение определенного коммита, и GIT_COMMIT будет установлен правильно.
Никакой разработки не должно происходить в этой специальной ветви, так какон регулярно сбрасывается на любой коммит, который вам нужно собрать.

4 голосов
/ 05 октября 2012

В «Pre Steps» попробуйте добавить «Execute shell» и добавьте:

   git pull
   git checkout <commit version>
2 голосов
/ 18 ноября 2010

Вы можете настроить свою работу в Hudson для создания определенной ветви.Затем вы можете внести любые изменения, которые вы хотите, чтобы Хадсон встроил в эту ветку.

1 голос
/ 09 августа 2013

Я не уверен насчет Хадсона, но Git Plugin Дженкинса имеет кнопку «Дополнительно ...» справа над полем «Браузер репозитория». Нажатие там открывает много дополнительных опций, одна из которых - «Оформление заказа / слияние с локальной веткой (необязательно)». Его справочный текст гласит: «Если дано, извлеките ревизию для сборки как HEAD в этой ветке. Обратите внимание, что это не было проверено с подмодулями», так что, похоже, это то, что вы имеете в виду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...