Я пытаюсь настроить Jenkins-ci для проекта, использующего GitHub. Я уже настроил Jenkins с соответствующими плагинами. Я хочу, чтобы Дженкинс запускал сценарии сборки только тогда, когда кто-то в проекте пытается освоить. До сих пор я был в состоянии настроить его так, чтобы сборка была запущена в любое время, когда кто-либо толкает куда-либо, но это слишком широко. Я сделал это с помощью служебных хуков на Git.
Я читал вики Дженкинса и пару уроков, но эта конкретная деталь отсутствует ... может быть, это как-то связано с опросом? Или работа должна быть выполнена на стороне Git, чтобы Git запускал Jenkins только при master
изменении?
Ответы:
Как уже отмечал gezzed в своем комментарии, между тем есть хорошее решение (описанное в опросе должно умереть: запуск сборок Jenkins из хука Git ):
Установите для триггера сборки задания Jenkins значение Опрос SCM , но не указывайте расписание.
Создайте триггер GitHub после получения, чтобы уведомить URL
Это запустит все сборки, которые опрашивают указанный Git-репозиторий.
Однако опрос фактически проверяет, было ли что-либо передано в использованную ветку.
Работает отлично.
источник
Начиная с версии 0.5, плагин GitHub для Jenkins может запускать сборку, когда изменения передаются в GitHub .
источник
Вместо того чтобы запускать сборки удаленно, измените конфигурацию проекта Jenkins, чтобы запускать сборки путем опроса.
Jenkins может опрашивать на основе фиксированного внутреннего или по URL. Последнее - это то, что вы хотите пропустить, если нет изменений для этой ветви. Точные детали в документации . По сути, вам просто нужно проверить опцию «Опрос SCM», оставить раздел расписания пустым и установить удаленный URL-адрес для нажатия JENKINS_URL / job / name / polling.
Одно замечание: если у вас защищенная среда Jenkins, это не так
/build
,/polling
URL требует аутентификации. Инструкции здесь содержат детали. Например, у меня есть перехват GitHub Post-Receiveusername:apiToken@JENKIS_URL/job/name/polling
.источник
Для GitLab используйте эти шаги:
Введите URL-адрес «Build Now» из проекта Jenkins в качестве URL-адреса Push-события:
http://server.com/jenkins/job/project_name/build?delay=0sec
напримерAdd Web Hook
и затемtest hook
Затем каждый раз, когда вы фиксируете репозиторий, запускается веб-ловушка и создается сборка. Обязательно установите рабочее пространство Jenkins,
delete workspace before each build
чтобы получить свежую копию нового кода.источник
Не относится к Git, но ниже я подробно расскажу о конфигурации работы Jenkins с Mercurial. Это может помочь другим с подобной проблемой.
Poll SCM
опцию. Установите значение в* * * * *
[URLTrigger] - Poll with a URL
. Теперь вы можете выбрать некоторые параметры, такие как изменение даты изменения, содержание URL и т. Д.Monitor change of content
Теперь запустите некоторые изменения в репозитории Mercurial с помощью некоторых проверочных проверок.
Убедитесь, что задание Jenkins теперь выполняется путем обнаружения изменений в SCM. Когда сборка будет запущена из-за изменений в Mercurial, вы увидите текст
Started by an SCM change
. Еще пользователь, который запустил его вручную.источник
Надеюсь, это поможет: как запустить сборку Jenkins на коммите Git
Это просто вопрос использования curl для запуска задания Jenkins с использованием хитов Git, предоставляемых Git.
Команда
curl http://localhost:8080/job/someJob/build?delay=0sec
может запустить задание Jenkins, гдеsomeJob
указано имя задания Jenkins.Найдите папку «hooks» в скрытой папке .git. Переименуйте файл "post-commit.sample" в "post-commit". Откройте его с помощью Блокнота, удалите строку «: Ничего» и вставьте в него указанную выше команду.
Вот и все. Всякий раз, когда вы делаете коммит, Git запускает команды post-commit, определенные в файле.
источник
Непрерывная интеграция с Jenkins после отправки кода в репозиторий из команды / GUI Git:
.git/hooks
папку.hooks
Папка содержит несколько файлов. Проверьте на «пост-фиксацию». Если нет, создайте файл «post-commit» без расширения файла:Отредактируйте файл post-commit с помощью приведенной ниже команды. Убедитесь, что он присутствует в вашей локальной папке перехвата исходного кода.
Пример:
5.
userName
: Имя пользователя JenkinsjobName
: Название работы сборкиapiToken
: Чтобы получить свой токен API, перейдите на страницу пользователя Jenkins (вверху справа в интерфейсе). Он доступен в меню «Настройка» в левой части страницы: «Показать токен API»Внесите изменения в ваш исходный код и передайте код в хранилище.
Ваша работа,
http://localhost:8080/jenkins/job/Gitcommittest/
должна быть строительная.источник
Вам необходимо указать ветку. По умолчанию он слушает что угодно. Смотрите сообщение в блоге Hudson: плагины Git и Maven .
источник
Общий плагин Webhook Trigger может быть настроен с фильтрами для достижения этой цели.
Когда настроено с
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
источник
В моей текущей организации мы не делаем это в master, но делаем это как при разработке, так и при выпуске / ветвлении (мы используем Git Flow), чтобы генерировать сборки моментальных снимков.
Поскольку мы используем конвейер с несколькими ветвями, мы делаем это в Jenkinsfile с синтаксисом when {} ...
Это подробно описано в этом посте: https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/#longer-pipeline.
источник
Приведенные выше ответы верны, но я обращаюсь к тем, кто новичок здесь для их простоты
специально для настройки триггера сборки для конвейера:
Предположим, у вас есть две ветки Github: 1.master, 2.dev и Jenkinsfile (где написан конвейерный скрипт), и другие файлы доступны в каждой ветке
Сконфигурировать новый проект Pipeline (для ветки dev)
## 1. Интеграция кода с помощью git-plugin и подхода на основе cron. Необходимо установить обязательный плагин git и настроить его на свое имя и адрес электронной почты.
## 2. Интеграция кода: подход github-plugin и webhook Предварительно необходимо установить плагин Github и настроить сервер Github, если необходимо проверить подключение, если не учитывать следующую конфигурацию
Настройте плагин Github с учетной записью на Jenkins
Раздел GitHub Добавьте сервер Github, если не указан URL-адрес API: https://api.github.com Учетные данные: Добавить секретный текст (нажмите кнопку Добавить: выберите тип секретного текста) со значением Личный токен доступа (сгенерируйте его из своих учетных записей Github -> настройки -> Настройки разработчика—> Персональный токен—> Добавить токен—> Проверить области—> Скопировать токен) Тестовое соединение—> Проверить, подключен ли он к вашей учетной записи Github или нет. Установите флажок «Управлять перехватчиками». предыдущие учетные данные для «общего секрета»
Добавьте webhook, если не добавлен в ваш репозиторий
http: // Public_IP: Jenkins_PORT / github-webhook /
Если у вас есть плагин Github Pull запросы, настройте его также с опубликованным URL-адресом Jenkins.
источник
Используйте плагин для создания запросов по запросу: https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin
Это действительно просто. Затем вы можете настроить веб-хиты GitHub для запуска сборок.
источник
Мое решение для локального git-сервера: перейдите в каталог ловушек вашего локального git-сервера, игнорируйте существующий update.sample и создайте новый файл, буквально названный «update», например:
Оператор echo будет отображаться под вашим результатом git push, токен может быть взят из вашей конфигурации работы jenkins, перейдите по ссылке, чтобы найти его. Если файл «update» не вызывается, попробуйте другие файлы с таким же именем без расширения «sample».
Это все что тебе нужно
источник