Как запустить многоотраслевой конвейер Jenkins, когда изменение кода отправлено на GitHub

У меня есть задание Jenkins (multibranch pipeline) для репозитория GitHub. Я хочу запускать это задание автоматически всякий раз, когда в репозиторий Git вносятся изменения. Как я могу добиться этого с помощью Jenkinsfile?

Я хочу избежать каких-либо изменений конфигурации в задании Jenkins, например Poll SCM и т. Д. Для многоотраслевого конвейера нет такой опции, как Build whenever a change is pushed to GitHub


person Saikat    schedule 06.02.2017    source источник
comment
вот что должно произойти, если вы настроите свой mbp. Добавьте свой источник (git) и заполните конечную точку репо. Убедитесь, что на корневом уровне есть файл Jenkins, и установите для build configurationmode значение by Jenkinsfile. Затем убедитесь, что github trigegrs jenkins (через проект ›настройки› услуги ›Jenkins (плагин github))   -  person Rik    schedule 06.02.2017
comment
@Rik К сожалению, это не работает. Я осветил все упомянутые вами моменты. Это сработало, когда я добавил параметр poll scm, но этого я хочу избежать. Просто добавлю еще одну деталь - я использую Jenkins Enterprise, и у нас есть папка для создания рабочих мест, связанных с нашей командой.   -  person Saikat    schedule 07.02.2017
comment
в моей работе это настроено для gitlab, и это работает. Я предполагаю, что github такой же. Если сегодня у меня будет время, я проверю, смогу ли я заставить его работать для github, а затем опубликую снимок экрана   -  person Rik    schedule 07.02.2017
comment
Спасибо за помощь, @Rik, очень признателен!   -  person Saikat    schedule 07.02.2017
comment
Если я использую плагин Git (не Github), он работает config и индекс-ветки   -  person Rik    schedule 07.02.2017
comment
К сожалению, не повезло! Я также использую плагин Git с почти такой же конфигурацией, не уверен, что я сделал не так :(   -  person Saikat    schedule 08.02.2017
comment
Ваш экземпляр jenkins не случайно находится за брандмауэром, что не позволяет github нажимать на URL-адрес?   -  person Rik    schedule 08.02.2017
comment
Мы используем корпоративные версии Jenkins и GitHub.   -  person Saikat    schedule 08.02.2017
comment
Я не знаком с ними, но они очень разные?   -  person Rik    schedule 08.02.2017
comment
Может небольшая разница, добавлены платные функции :-)   -  person Saikat    schedule 10.02.2017
comment
@Rik моя конфигурация задания (Git, а не GitHub) не позволяет определять триггеры сборки. Раздела «Триггеры сборки» нет, только «Сканирование триггеров многоотраслевого конвейера». Вы уверены, что тестировали конвейерный проект? Мы на v2.100 от 03.01.2018.   -  person Marcel Stör    schedule 25.01.2018


Ответы (3)


Чтобы ваше задание «реагировало» на события из вашего GitHub, установите триггер сборки задания на «Poll SCM», но не указывайте расписание, как описано в этот ответ Stackoverflow.

Для декларативного Jenkinsfile это означает:

pipeline {
  triggers {
    pollSCM('') // Enabling being build on Push
  }
  ...
}

Дальнейшие чтения:

person Markus Schulte    schedule 08.01.2018
comment
lol По моему опыту, это одна из других возможных проблем / решений при получении задания Jenkins, инициированного GitHub. - person Markus Schulte; 25.10.2018
comment
есть шанс взглянуть на мой последний вопрос? - person 4c74356b41; 25.10.2018
comment
Я взглянул на stackoverflow.com/questions/52991939/, но я понятия не имею. - person Markus Schulte; 26.10.2018
comment
В документах jenkins, которые вы отправили:. Для конвейеров, которые интегрированы с таким источником, как GitHub или BitBucket, триггеры могут не потребоваться, поскольку интеграция на основе веб-перехватчиков, скорее всего, уже будет присутствовать. - person Onur Demir; 20.06.2019

Вы можете использовать этот описательный сценарий конвейера для автоматической сборки конвейера всякий раз, когда новые изменения помещаются в github.

pipeline{
   agent any     
     triggers {
        githubPush()
      }
   ...
 }

Также вы должны включить веб-перехватчик github с соответствующими секретными токенами.

person Hansika Wanniarachchi    schedule 13.12.2019

Самый простой вариант (о котором я знаю) - это удаленно сообщить плагину Jenkins Git о том, что есть новый коммит для определенного репозитория. Однако это не заставит Дженкинса немедленно начать работу. Что происходит, так это то, что плагин Git запускает (пере) индексирование определенного репозитория. При обнаружении изменений запускается задание Jenkins.

Из вашего репозитория (GitHub, GitLab и т. Д.) Вы должны активировать следующий URL:

http://my-jenkins-host/git/[email protected]:group/repository.git&delay=0sec

Значение url должно соответствовать URL-адресу SCM, который вы настроили в задании Jenkins (плагин Git)!

Попался: возможно, ваш Jenkins не развернут в корневом контексте (/), и в этом случае URL-адрес будет http://my-jenkins-host/context-path/git/...

person Marcel Stör    schedule 25.01.2018