Как запустить работу Jenkins 2.0 Pipeline из запроса на извлечение GitHub

Похоже, что GitHubPullRequestBuilder несовместим с заданиями конвейера Jenkins v2.0.

Как настроить задание конвейера, которое должно быть запущено из события запроса на подавление GitHub?
Документация по этой теме разрежена, и я не могу найти никаких примеров этого. Или лучше создать веб-крючок в GitHub для запуска работы с конвейером на PR-мероприятии?

Ответы

Ответ 1

Самый простой способ использования Pipeline с запросами на выгрузку GitHub состоит в том, чтобы поместить script в ваш репозиторий под именем Jenkinsfile, а затем установить плагин Source Branch GitHub. Документация

Ответ 2

У меня была аналогичная проблема. Heres, что сработало для меня

Pre-REQ

  • Дженкинс вер. 2+ (я использовал Jenkins 2.60)
  • Гитуб (или Гифхуб предприятие)
  • Ваш github и Дженкинс должны иметь возможность разговаривать с друг друга.

В Github

  • создать идентификатор персонального доступа github (PAT) с соответствующими правами.
  • Для вашего репо, создайте webhook с
    • URL как YourJenkinsURL/github-webhook/
    • Выберите "Позвольте мне выбрать отдельные события и проверить" Запрос Pull "
  • Добавьте файл Jenkins в корневую папку вашего репо. Для целей тестирования вы могли бы разместить контент в качестве базового мира приветствия, как показано ниже.
    pipeline {
        agent any
        stages {
            stage('Test') {
                steps {
                    echo 'Hello World ...'
                }
            }
        }
    }

В Дженкинсе

  • Установите плагин GitHub Pull Request Builder. (Вам также нужен плагин "Github", но он обычно должен быть установлен как часть Jenkins ver 2 +)
  • Дженкинс - Учетные данные
    • Добавить github Personal Access Token (PAT) в качестве "секретного пароля".
    • Добавьте имя пользователя-пароль github как "учетные данные пользователя-пароля".
  • Управление Jenkins - настройка системы
    • Github - серверы Github: это часть плагина Github. Добавьте сервер github. 'URL API По умолчанию будет https://api.github.com. Если вы используете корпоративный github, замените его на адрес github предприятия, за которым следует /api/v 3. Для учетных данных выберите параметр PAT. Проверьте соединение. Контролируется "Управление крючками".
    • GitHub Pull Request Builder: для URL-адреса API сервера GitHub используется тот же URL-адрес, что и в разделе Github Server. Оставьте "Shared Secret blank". Для учетных данных используйте учетные данные "имя пользователя-пароль". Проверьте учетные данные, чтобы обеспечить его работу. В моих настройках было проверено "Автоматическое управление веб-камерами".
  • Работа трубопровода
    • Создайте новый элемент, используя параметр "Трубопровод". Примечание. Это работа с ванильным трубопроводом, а не с многоканальным трубопроводом.
    • Общая секция: проверьте проект Github - URL-адрес проекта: введите свой адрес рефинансирования github
    • Построить триггеры: проверить 'GitHub Pull Request Builder
      • Для параметра выбора учетных данных API GitHub выберите параметр, который вы устанавливаете для построителя запросов на выборку GitHub в окне "Управление дженкинсами - настройка системы"
      • Для списка admin: добавьте свое имя пользователя
      • Проверить использование github hooks для запуска сборки
    • Трубопровод:
      • Выберите "Конвейер Script из SCM. Обратите внимание, что предполагается, что корневая папка вашего репо будет содержать файл Jenkinsfile
      • SCM: выберите 'Git
      • Хранилища - введите данные репо. Для учетных данных используются учетные данные, основанные на имени пользователя и пароле.
      • Нажмите "Дополнительно" и добавьте refspec как +refs/pull/*:refs/remotes/origin/pr/*
      • Ветвь - должна быть ${sha1}
      • Script Путь: по умолчанию используется файл Jenkinsfile, оставьте как есть.
      • Легкая проверка - снимите этот флажок (https://github.com/jenkinsci/ghprb-plugin/issues/507)

Вот оно. У вас все настроено. Создание PR на главной ветке вашего репо должно теперь инициировать работу вашего проекта Jenkins Pipeline

Некоторые наблюдения

  • Повторное добавление полезной нагрузки webhook PR из github не запускает конвейер, но открывает новый PR или даже повторно открывает закрытый PR на github, запускает работу с конвейером
  • В настройке конфигурации трубопровода, если вы выберете "Pipeline Script" и вставьте туда конвейер Script, задание не запускается!!!

Ответ 3

Поток в двух словах может выглядеть следующим образом:

  • Вы создаете свой конвейер как код и сохраняете его в файле с именем Jenkinsfile в корневом каталоге вашего проекта. Этот код должен описывать, как будет строиться ваш проект. См. Здесь примеры: https://jenkins.io/doc/pipeline/examples/

  • Затем вам нужно создать новый проект "Проект для многотрубных трубопроводов" в вашем Jenkins. Вы должны настроить это так, чтобы сканировать свое репо на шаге 1.

  • Теперь, когда вы получаете новый филиал PR, открытый на вашем этапе 1 репо, ветка будет выгружена и будет построена в соответствии с инструкциями Jenkinsfile, включенными в нее. Вы можете настроить дополнительные условия для того, что будет построено, и когда вы захотите.

Примечания:

  • "Документация по проектному проекту" Multibranch Pipeline Project ": https://jenkins.io/doc/book/pipeline-as-code/ (прокрутите вниз до проектов с многоканальными трубопроводами)

  • Имейте в виду, что получение плагина для создания PR после похвалы в PR не работает. Здесь обсуждается это обсуждение: https://github.com/jenkinsci/gitlab-plugin/issues/298 Есть обходные пути (также описанные в этом обсуждении), но они довольно беспорядочны для настройки.