Ни один из этих ответов не был для меня достаточным при использовании Jenkins CI v.1.555, плагина Git Client v.1.6.4 и плагина Git 2.0.4.
Я хотел создать задание для одного репозитория Git для одного конкретного фиксированного (т. Е. Не параметризованного) тега. Мне пришлось сколотить решение из различных ответов плюс сообщение в блоге «создать тег Git», цитируемое Тило .
- Убедитесь, что вы отправили свой тег в удаленный репозиторий с помощью
git push --tags
- В разделе «Репозиторий Git» вашего задания под заголовком «Управление исходным кодом» нажмите «Дополнительно».
- В поле для Refspec добавьте следующий текст:
+refs/tags/*:refs/remotes/origin/tags/*
- В разделе «Отрасли для создания», «Спецификатор ветки» введите
*/tags/<TAG_TO_BUILD>
(заменив <TAG_TO_BUILD>
на свое фактическое имя тега).
Добавление Refspec для меня оказалось критичным. Хотя казалось, что репозитории git по умолчанию получают всю удаленную информацию, когда я оставил его пустым, плагин Git, тем не менее, полностью не смог найти мой тег. Только когда я явно указал «получить удаленные теги» в поле Refspec, плагин Git смог идентифицировать и строить из моего тега.
Обновление 2014-5-7 : К сожалению, это решение имеет нежелательный побочный эффект для Jenkins CI (v.1.555) и механизма push-уведомлений репозитория Git в стиле Stash Webhook для Jenkins : каждый раз, когда обновляется любая ветка в репозитории при нажатии снова запускаются задания построения тегов. Это приводит к множеству ненужных повторных построений одних и тех же заданий тегов снова и снова. Я пробовал настраивать задания как с опцией «Принудительный опрос с использованием рабочей области», так и без нее, но, похоже, это не помогло. Единственный способ предотвратить создание Дженкинсом ненужных сборок для заданий тегов - очистить поле Refspec (т.е. удалить +refs/tags/*:refs/remotes/origin/tags/*
).
Если кто-то найдет более элегантное решение, отредактируйте этот ответ с помощью обновления. Я подозреваю, например, что, возможно, этого не произошло бы, если бы refspec был конкретно, +refs/tags/<TAG TO BUILD>:refs/remotes/origin/tags/<TAG TO BUILD>
а не универсальной звездочкой. Однако на данный момент это решение работает для нас, мы просто удаляем лишние Refspec после успешного выполнения задания.