Показать текущее состояние сборки Jenkins на репозитории GitHub



есть ли способ показать статус сборки Дженкинса на GitHub моего проекта Readme.md?



Я использую Jenkins для запуска сборок непрерывной интеграции. После каждой фиксации он гарантирует, что все компилируется, а также выполняет модульные и интеграционные тесты, прежде чем, наконец, создавать документацию и выпускать пакеты.



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

819   11  

11 ответов:

хорошо, вот как вы можете настроить Дженкинса для установки статусов сборки GitHub. Это предполагает, что у вас уже есть Дженкинс с плагином GitHub, настроенным на выполнение сборок при каждом нажатии.

  1. перейдите в GitHub, войдите в систему, перейдите в настройки,личные жетоны доступа, нажмите кнопку создать новый маркер.

    screenshot of GitHub settings

  2. Регистрация РЕПО:статус (Я не уверен, что это необходимо, но я сделал это, и это сработало для меня).

    screenshot of GitHub token generation

  3. сгенерируйте маркер, скопируйте его.

  4. убедитесь, что пользователь GitHub, которого вы собираетесь использовать, является сотрудником репозитория (для частных репозиториев) или членом команды с принудительным доступом (для репозиториев организации) к репозиториям, которые вы хотите построить.

  5. зайдите на свой сервер Дженкинса, войдите в систему.

  6. Управление ДженкинсНастройка Системы
  7. под GitHub Web Hook выберите давайте Дженкинс автоматического управления URL-адресами крючком, затем укажите свой GitHub имя пользователя и маркер вы попали в Шаг 3.

    screenshot of Jenkins global settings

  8. убедитесь, что он работает с Тестовые Учетные Данные. сохранить параметры.

  9. найти работу Дженкинса и добавить установить статус сборки на GitHub commit к шагам после сборки

    screenshot of Jenkins job configuration

что я сделал довольно просто:

  1. установите плагин задачи Hudson Post
  2. Создайте личный маркер доступа здесь:https://github.com/settings/tokens
  3. добавьте плагин Post Task, который всегда ставит успех

    curl -XPOST -H "Authorization: token OAUTH TOKEN" https://api.github.com/repos/:organization/:repos/statuses/$(git rev-parse HEAD) -d "{
      \"state\": \"success\",
      \"target_url\": \"${BUILD_URL}\",
      \"description\": \"The build has succeeded!\"
    }"
    
  4. добавить плагин, сообщение задач, которые поставят отказ, если "отмечен построить как провал"

    curl -XPOST -H "Authorization: token OAUTH TOKEN" https://api.github.com/repos/:organization/:repos/statuses/$(git rev-parse HEAD) -d "{
      \"state\": \"failure\",
      \"target_url\": \"${BUILD_URL}\",
      \"description\": \"The build has failed!\"
    }"
    
  5. вы также можете добавить вызов в ожидание в начале тесты

    curl -XPOST -H "Authorization: token OAUTH TOKEN" https://api.github.com/repos/:organization/:repos/statuses/$(git rev-parse HEAD) -d "{
      \"state\": \"pending\",
      \"target_url\": \"${BUILD_URL}\",
      \"description\": \"The build is pending!\"
    }"
    

Screenshot of the Post build task configuration

этот плагин должен работать:https://wiki.jenkins-ci.org/display/JENKINS/Embeddable + сборка + статус + плагин

вы должны быть в состоянии вставлять значки, как это в ваш README.md file:

build passing

The Commit Status API позволяет увидеть " Repo Statuses API".

и с 26 апреля 2013 года, теперь вы можете увидеть построить статус на страница ветки РЕПО GitHub:

build status on GitHub repo branches

Это означает, что это еще один способ, посетив страницу проекта GitHub, чтобы увидеть эти статусы вместо того, чтобы только Дженкинс.

с 30 апреля 2013 года конечная точка API для фиксации статусы был расширен, чтобы разрешить ветвь и имена тегов, а также фиксация SHAs.

также есть этот плагин, который даст вам url-адрес значка, который вы можете разместить в своем README.md и выглядит так

build passing

https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin

в то же время пользовательский интерфейс Дженкинса и GitHub немного изменился, и мне потребовалось некоторое время, чтобы понять, как правильно настроить Дженкинса. Объяснение здесь основано на версии Дженкинса 2.121.1.

Я также предполагаю, что вы уже настроили свою работу Дженкинса, которая будет вызвана веб-крючком или опросом. Вот шаги, которые я предпринял, чтобы заставить его работать:

  1. настройка Github: создание личного маркера доступа с областью OAuth repo:status
  2. Настроить Дженкинс: Configure System и добавьте секрет OAuth как Сервер GitHub - используйте Secret Text как метод аутентификации, чтобы поместить секрет OAuth там.
  3. настройка задания Дженкинса: добавить Set GitHub commit status как действие после сборки. Установите Результате Статус до One of the default messages and statuses.
  4. проверьте свой результат на GitHub: Проверьте, получаете ли Вы статус сборки и продолжительность выполнения сборки на вашем GitHub совершать.

Настройка Github

Create Personal Access Token


enter image description here


enter image description here


enter image description here


настроить Дженкинс

enter image description here


enter image description here


enter image description here


enter image description here


enter image description here


Настроить Дженкинс Задание

enter image description here


enter image description here


enter image description here


результат

теперь вы увидите статус для ваших коммитов и ветвей:

enter image description here

Если у вас Github плагин установлен на вашем Jenkins, вы можете сделать это Post build actions такой :

set build status on github

в отношении настройки защищенной ветви Дженкинса и GitHub. Я использую Jenkins 2.6, и это шаги, которые я сделал, чтобы заставить его работать:

на веб-странице GitHub вашего репозитория:

  1. перейдите в раздел Настройки > филиалы.
  2. в разделе Защита ветвей нажмите в меню выбрать ветвь утопить и выберите нужную ветвь установить в качестве защищенной ветви.
  3. включите параметры по мере необходимости.

на Дженкинс Сервер: (Убедитесь, что у Вас установлен плагин Git и GitHub)

  1. перейдите к управлению Дженкинс > настройка системы.
  2. в разделе GitHub установите URL API в https://api.github.com. хотя это значение по умолчанию.
  3. выберите сгенерированный токен для учетных данных. Если вы еще не создали токен, нажмите кнопку Дополнительно... затем в дополнительных действиях вы можете преобразовать свой логин и пароль в токен и использовать его в качестве своего мандатный.

кроме того, убедитесь, что учетная запись GitHub, которую использует ваш Дженкинс, является соавтором для репозитория. Я установил его с уровнем разрешения.

надеюсь, что это помогает.

добавить ниже строки в вашем README.md и измените оба URL в соответствии с вашим проектом Дженкинса.

[![Build Status](https://jenkins../..project/lastBuild/buildStatus)](https://jenkins../..project/lastBuild/)

Jently обновление GitHub commit status (как описано @vonc выше), к сожалению, они еще не реализовали Repo Status API

Edit:

Я больше не использую этот подход, пожалуйста, используйте один из других ответов.

обновление: что я в конечном итоге сделал, для нашего конкретного случая:(выше ответы были великолепны - спасибо!)

поскольку наш сервер сборки не находится в интернете, у нас есть скрипт для публикации состояния сборки в ветке gh-pages в github.

  • Начало сборки штампов не удается
  • конец сборки успех марки
  • проект запускается после основного проекта для публикации результатов - > build-status, API docs, test reports и Test coverage.

GitHub кэширует изображения, поэтому мы создали .файл htaccess, который указывает короткий тайм-аут кэша для образа состояния сборки.

поместите это в каталог с изображением состояния сборки:

ExpiresByType image/png "access plus 2 minutes"

здесь сценарий сборки. Цель, которая публикуется на gh-страницах '--опубликовать.сайт.сухой.запустить'

С менее чем 400 строк конфигурации, у нас есть:

  • скомпилировать проверки
  • модульные и интеграционные тесты
  • Отчеты По Испытаниям
  • Отчеты О Покрытии Кода
  • API Docs
  • публикация в Github

. . и этот скрипт может быть запущен внутри или вне Дженкинса, так что:

  • разработчики могут запустите этот сценарий перед фиксацией, уменьшая вероятность сломанной сборки, которая влияет на других.
  • сбой легко воспроизвести локально.

Результаты:

главная страница имеет статус сборки, обновляемый после каждой сборки, а также последние документы API, результаты тестирования и тестовое покрытие.

Comments

    Ничего не найдено.