Как я могу сделать Jenkins CI с Git триггером на толчках, чтобы освоить? - PullRequest
198 голосов
/ 26 апреля 2011

Я пытаюсь настроить Jenkins-ci для проекта, использующего GitHub.Я уже настроил Jenkins с соответствующими плагинами.Я хочу, чтобы Дженкинс запускал сценарии сборки только тогда, когда кто-то в проекте пытается освоить.До сих пор я был в состоянии настроить его так, чтобы сборка была запущена в любое время, когда кто-либо толкает куда-либо, но это слишком широко.Я сделал это с помощью хитов для пост-получения на Git.

Я прочитал вики Jenkins и пару уроков, но эта конкретная деталь отсутствует ... это как-то связано с опросомможет быть?Или нужно работать на стороне Git, чтобы Git запускал Jenkins только при изменении master?

Ответы [ 12 ]

184 голосов
/ 29 марта 2012

Как уже отмечал gezzed в своем комментарии, между тем есть хорошее решение (описанное в Опрос должен прекратиться: запуск сборок Jenkins из хука Git ):

  • Установите триггер построения задания Дженкинса на SCM опроса , но не укажите расписание.

  • Создание триггера пост-получения GitHub для уведомления URL

    http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>?token=<get token from git to build remotely>
    
  • Это запустит все сборки, которые опрашивают указанный репозиторий Git.

  • Однако опрос фактически проверяет, было ли что-либо передано в используемую ветвь.

Работает отлично.

32 голосов
/ 08 июля 2011

Начиная с версии 0.5, плагин GitHub для Jenkins может запускать сборку, когда изменение передается в GitHub .

9 голосов
/ 29 сентября 2011

Вместо удаленного запуска сборок измените конфигурацию проекта Jenkins для запуска сборок путем опроса.

Jenkins может выполнять опрос на основе фиксированного внутреннего или URL-адреса.Последнее - это то, что вы хотите пропустить, если нет изменений для этой ветви.Точные детали в документации .По сути, вам просто нужно проверить опцию «Опрос SCM», оставить раздел расписания пустым и установить удаленный URL-адрес для нажатия JENKINS_URL / job / name / polling.

Один вопрос, если у вас защищенная среда Jenkins, этов отличие от /build, URL /polling требует аутентификации.Инструкции здесь содержат подробности.Например, у меня есть перехват GitHub Post-Receive, идущий на username:apiToken@JENKIS_URL/job/name/polling.

8 голосов
/ 29 апреля 2015

Для GitLab , выполните следующие действия:

  1. Перейдите в настройки вашего проекта → Веб-хуки
  2. Введите URL-адрес "Build Now" изваш проект Jenkins как URL-адрес Push-события:

    http://server.com/jenkins/job/project_name/build?delay=0sec, например

  3. Нажмите Add Web Hook, а затем test hook

Затем в любое времяВы фиксируете в хранилище, веб-ловушка запускается и создается сборка.Обязательно установите для рабочей области Jenkins значение delete workspace before each build, чтобы получить свежую копию нового кода.

4 голосов
/ 29 ноября 2011

Не относится к Git, но ниже я подробно расскажу о конфигурации работы Jenkins с Mercurial. Это может помочь другим с подобной проблемой.

  1. Установить плагин триггера URL
  2. Перейдите на страницу конфигурации задания и выберите вариант Poll SCM. Установите значение * * * * *
  3. Отметьте опцию: [URLTrigger] - Poll with a URL. Теперь вы можете выбрать некоторые параметры, такие как изменение даты изменения, содержание URL и т. Д.
  4. В параметрах выберите Изменение содержимого URL, выберите первый вариант - Monitor change of content
  5. Сохранить изменения.

Теперь запустите некоторые изменения в репозитории Mercurial с помощью некоторых проверочных проверок.

Обратите внимание, что задание Jenkins теперь выполняется путем обнаружения изменений в SCM. Когда сборка будет запущена из-за изменений в Mercurial, вы увидите текст Started by an SCM change. Иначе, пользователь, который запустил его вручную.

3 голосов
/ 24 февраля 2018

Непрерывная интеграция с Jenkins после отправки кода в репозиторий из команды / GUI Git:

  1. Создайте работу в Jenkins только с именем работы и выберите тип проекта вольным стилем. Нажмите OK . Следующая страница ничего не добавляет - просто нажмите Сохранить .
  2. Перейдите в локальный репозиторий Git, где у вас есть исходный код, и перейдите в папку .git/hooks.
  3. Папка hooks содержит несколько файлов. Проверьте на «пост-фиксацию». Если нет, создайте файл «post-commit» без расширения файла:

    C:\work\test\\.git\hooks\post-commit
    
  4. Отредактируйте файл post-commit с помощью приведенной ниже команды. Убедитесь, что он присутствует в вашей локальной папке перехвата исходного кода.

    curl -u userName:apiToken -X POST http://localhost:8080/jenkins/job/jobName/build?token=apiToken
    
    * * 1 022 Пример: * 1 023 *
    curl -u admin:f1c55b3a07bb2b69b9dd549e96898384 -X POST http://localhost:8080/jenkins/job/Gitcommittest/build?token=f1c55b3a07bb2b69b9dd549e96898384
    

    5

    userName: имя пользователя Jenkins

    jobName: имя задания сборки

    apiToken: чтобы получить свой токен API, перейдите на страницу пользователя Jenkins (вверху справа в интерфейсе). Оно доступно в меню «Настройка» в левой части страницы: «Показать токен API»

  5. Внесите изменения в исходный код и передайте код в хранилище.

  6. Ваша работа, http://localhost:8080/jenkins/job/Gitcommittest/, должна быть построена.

3 голосов
/ 07 февраля 2014

Надеюсь, это поможет: Как запустить сборку Jenkins на коммите Git

Это просто вопрос использования curl для запуска задания Jenkins с помощью Githooks, предоставляемые Git.

Команда curl http://localhost:8080/job/someJob/build?delay=0sec может запускать задание Jenkins, где someJob - имя задания Jenkins.

Поиск папки «hooks» в скрытой папке..git папка.Переименуйте файл "post-commit.sample" в "post-commit".Откройте его с помощью Блокнота, удалите строку «: Ничего» и вставьте в него указанную выше команду.

Вот и все.Всякий раз, когда вы делаете коммит, Git запускает команды post-commit, определенные в файле.

3 голосов
/ 26 апреля 2011

Вам необходимо указать ветку. По умолчанию он слушает что угодно. Смотрите сообщение в блоге Hudson: плагины Git и Maven .

2 голосов
/ 01 апреля 2018

Общий плагин триггера Webhook может быть настроен с фильтрами для достижения этой цели.

При настройке с

  • Переменная с именем ref и выражением $.ref.
  • Фильтр с текстом $ref и выражением фильтра, например ^refs/heads/master$.

Затем это задание будет запускаться при каждом нажатии на master. Нет опроса.

Вы, вероятно, хотите, чтобы дополнительные значения из webhook действительно выполняли сборку. Просто добавьте больше переменных с помощью JSONPath, чтобы выбрать то, что вам нужно.

Здесь есть несколько вариантов использования: https://github.com/jenkinsci/generic-webhook-trigger-plugin/tree/master/src/test/resources/org/jenkinsci/plugins/gwt/bdd

1 голос
/ 27 декабря 2018

Приведенные выше ответы верны, но я обращаюсь к тем, кто новичок здесь, для их простоты

специально для установки триггера сборки для конвейера:

Предположим, у вас есть две ветви Github: 1.master, 2.dev и Jenkinsfile (где написан конвейерный скрипт) и другие файлы доступны в каждой ветке

Настройка нового проекта конвейера (для ветки dev)

## 1.Интеграция кода с помощью git-plugin и подхода на основе cron Необходимо установить обязательный плагин git и настроить его под своим именем и адресом электронной почты

  1. General section. Установите флажок «Проверить параметры» и добавьтеName-SBRANCH Значение по умолчанию -'refs / remotes / origin / dev '
  2. Раздел "Построение триггеров" "Флажок" - "Опрос SCM" и расписание в соответствии с необходимостью проверки коммитов, например' * / 1 * * * * "проверять каждую минуту
  3. раздел определения конвейера. Выбрать - конвейерный скрипт из SCM—> выбрать git—> URL-адрес addRepository—> добавить учетные данные git—> выбратьдополнительно—> добавить имя-источника, RefSpec- '+ refs / head / dev: refs / remotes / origin / dev' (dev - ветвь github) -> ветви для построения - $ {SBRANCH} (имя параметра из ref 1-й точки)-> Путь к сценарию—> Jenkinsfile -> Снять флажок Lightweightcheckout
  4. Применить—> сохранить

## 2.Код интеграции: подход github-plugin и webhook Предварительное условиеПлагин Github должен быть установлен, а сервер Github должен быть настроен, соединение должно быть проверено, если не учитывать следующую конфигурацию

Настроить плагин Github с учетной записью на Jenkins

Раздел GitHub Добавить сервер Github, если URL API отсутствует: https://api.github.com Учетные данные: Добавить секретный текст (нажмите кнопку Добавить: выберите тип секретного текста) со значением Персональный токен доступа (Сгенерируйте его из своих учетных записей Github -> Настройки—> Настройки разработчика—> Персональный токен—> Добавить токен-> проверить области действия -> скопировать токен) Test Connection—> проверить, подключено ли оно к вашей учетной записи Github или нет.ckbox с Manage Hooks Заранее под подразделом просто выберите предыдущие учетные данные для «общего секрета»

Добавить webhook, если не добавлен в ваш репозиторий с помощью

  1. Перейти к настройке Github Repository -> addwebhook—> добавить URL
    http://Public_IP:Jenkins_PORT/github-webhook/
  2. Или, если у вас нет Public_IP, используйте ngrok .Установите, подтвердите подлинность, получите публичный IP-адрес из команды ./ngrok http 80 (используйте свой jenkins_port), затем добавьте webhook -> add URL http://Ngrok_IP/github-webhook/
  3. Проверьте его, доставив полезную нагрузку со страницы webhook и проверьте, получаете ли вы статус 200или нет.

Если у вас есть подключаемый модуль запросов Github Pull, настройте его также с опубликованным URL-адресом Jenkins.

  1. Общий раздел. Установите флажок «Проект Github», добавьте URL-адрес проекта -(ссылка на github заканчивается на «.git /»)
  2. Общий раздел. Установите флажок «Этот проект параметризован» и добавьте значение имени-SBRANCH по умолчанию -refs / remotes / origin / dev '
  3. Построить флажок triggers.section.Check - 'Триггер GitHub для опроса GITScm'
  4. Секция конвейера def'n: Выбрать - Скрипт конвейера из SCM—> Выбрать git—> URL-адрес addRepository—> Добавить учетные данные git—> выберите расширенный -> добавить имя-происхождение, RefSpec- '+ refs /heads / dev: refs / remotes / origin / dev' (dev - ветка github) -> ветви для сборки - $ {SBRANCH} (имя параметра из ссылки 1.stточка) -> Путь к сценарию—> Jenkinsfile—> Снять флажок Lightweightcheckout
  5. Применить—> сохранить
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...