Дженкинс - как построить конкретную ветку


97

Это не так просто, как параметризованная сборка. У меня уже есть конкретный процесс сборки, который будет собираться и развертываться всякий раз, когда какая-либо из этих веток отправляется на GitHub:

введите описание изображения здесь

Итак, если я только что нажал, developи он успешно построен, как мне запустить сборку вручную и заставить ее feature/my-new-featureвыполнить (без выполнения git push)? Я попытался включить параметризованную сборку, добавить новую строку с именем branch, а затем добавить новый спецификатор ветки */$branch. Затем я побежал сборки и набор branchдля feature/my-new-featureи он все еще вытащил из develop.

Буду признателен за любую помощь!


Вы говорите о github webhook. это может решить вашу проблему. вы хотите запустить это из github?
Abhijeet Kamble

1
Нет, интеграция с GitHub уже работает. Мне нужно знать, как вручную создать конкретную ветку.
ffxsam

3
У меня такая же проблема. Задание настроено на создание разных веток и запускается хуком git. Но когда я хочу создать конкретную ветку вручную (без новых изменений в GIT), я нажимаю «Создать сейчас», но всегда создается последняя проверенная ветка. Также пробовал различные свойства сборки.
Cornz

Если ваш параметр назван веткой, вам просто нужно указать $branchв поле спецификатора ветки.
Alexey

1
@Alexey, но тогда во время автоматически инициированной сборки это $branchприведет к пустой строке, я полагаю.
Накилон,

Ответы:


111

Лучшим решением может быть:

Добавить строковый параметр в существующее задание введите описание изображения здесь

Затем в Source Code Managementобновлении раздела Branches to buildиспользуйте указанный вами строковый параметрвведите описание изображения здесь

Если вы видите флажок с надписью Lightweight checkout , убедитесь, что он не установлен.

Конфигурация, указанная на изображениях, укажет, что задание jenkins будет использоваться masterв качестве ветки по умолчанию, а для ручных сборок вам будет предложено ввести сведения о ветке (к сведению: по умолчанию он установлен на master)введите описание изображения здесь


4
Мастер сборки по умолчанию не подойдет для общей сборки разработки, которая должна собирать все ветки разработки.
static_rtti

9
Боже мой, это так хреново. Почему Дженкинс не сохраняет Branches to buildраздел с чертовым репозиторием Git, к которому он относится? Глупый PITA делать это, чтобы указать ветку для сборки.
Alex Zavatone 06

9
Дон, это не работает (для меня). Я заканчиваю тем, что Дженкинс пытается проверить ветку, git.exe fetch --tags --progress origin +refs/heads/${BRANCH}:refs/remotes/origin/${BRANCH} --pruneкоторая явно недействительна.
Лиам

1
это регистрируется как ошибка в Jenkins, поэтому трудно понять, как это когда-либо работало?
Лиам

19
@Liam Как указано в сообщении об ошибке, вам нужно снять флажок «Легкая проверка», чтобы это сработало.
asmaier 07

10

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

Просто отметьте его как параметризованную сборку, укажите имя и параметр, настроенный как git parameter

введите описание изображения здесь

и теперь вы можете настроить параметры git:

введите описание изображения здесь


7
Этот параметр git является плагином jenkins ?? Я не вижу возможности добавить этот тип праметра. Если это плагин, можете ли вы указать на него в ответе?
Леандро Давид,

@LeandroDavid да Git Parameter - это плагин, который необходимо установить после того, как вы увидите эту опцию в разделе «Добавить параметр».
gotosachin

9

Чтобы проверить ветку через скрипты Jenkins, используйте:

stage('Checkout SCM') {
    git branch: 'branchName', credentialsId: 'your_credentials', url: "giturlrepo"
}

1
Я знаю, что вопрос не в этом, но я искал эту информацию, и Google продолжал предлагать этот сайт в качестве ответа.
Игорь Л.

то же самое здесь братан. Вы были в состоянии найти ответ на точный ответ
thinkingmonster

0

Это расширение ответа, предоставленного Ранджитом.

Я бы посоветовал вам выбрать сборку с параметром выбора и указать ветви, которые вы хотите построить. Параметр активного выбора

И после этого вы можете указать ветки для сборки. Ветвь для сборки

Теперь, когда вы будете строить свой проект, вам будет предоставлена ​​«Сборка с параметрами, где вы можете выбрать ветку для сборки».

Вы также можете написать отличный скрипт для получения всех ваших веток в активном параметре выбора.


Пожалуйста, дополните. TeamCity делает это по умолчанию, а Дженкинс даже не может завязать себе ботинки !!!
C Johnson

0

введите описание изображения здесь

Будет опция configure в разделе Build Triggers.

Проверьте ветви GitHub

Будет создан хук, и затем вы сможете создать любую понравившуюся ветку из Jenkins, когда выберете ветки github. введите описание изображения здесь

Надеюсь, это поможет :)


Я пытаюсь использовать этот плагин с этой настройкой, но не могу найти способ начать работу. Есть ли другой способ проверить, правильно ли поступают события от gh?
Вито Де Туллио

У вас есть Run Branch Triggerвозможность, он сканирует репозиторий git для всех доступных веток ... Также просто посмотрите журналы jenkins -> в разделе Управление Дженкинсом ..., чтобы узнать, произошли ли ошибки
rohit thomas

1
Уточните, пожалуйста, ваше описание слишком маленькое и короткое.
C Johnson

0

Я вижу много хороших ответов на этот вопрос, но все же хотел бы поделиться этим методом, используя параметр Git следующим образом:

Добавить параметр Git

При построении конвейера вам будет предложено выбрать ветку: Выберите ветку для строительства

После этого через отличный код вы можете указать ветку, которую хотите клонировать:

git branch:BRANCH[7..-1], url: 'https://github.com/YourName/YourRepo.git' , credentialsId: 'github' 

Обратите внимание, что я использую фрагмент от 7 до последнего символа, чтобы уменьшить «origin /» и получить имя ветки.

Также, если вы настроили триггер веб-перехватчиков, он все еще работает, и он будет использовать указанную вами ветку по умолчанию ( masterв нашем случае).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.