Покажите текущее состояние Jenkins на основе репо GitHub

Есть ли способ показать статус сборки Jenkins в моем проекте GitHub Readme.md?

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

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

Ответ 1

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

  • Перейдите в GitHub, войдите в систему, перейдите в Настройки, Листы персонального доступа, нажмите Создать новый токен.. p >

    screenshot of GitHub settings

  • Проверьте репо: статус (я не уверен, что это необходимо, но я сделал это, и это сработало для меня).

    screenshot of GitHub token generation

  • Создайте токен, скопируйте его.

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

  • Перейдите на ваш сервер Jenkins, войдите.

  • Управление Jenkins Конфигурирование системы
  • В веб-крюке GitHub выберите . Пусть Jenkins автоматически управляет URL-адресами хука, затем укажите ваше имя пользователя GitHub и OAuth, который вы получили на шаге 3.

    screenshot of Jenkins global settings

  • Убедитесь, что он работает с кнопкой Проверить учетные данные. Сохранить настройки.

  • Найдите задание Дженкинса и добавьте Установить статус сборки на GitHub commit на шаги после сборки

    screenshot of Jenkins job configuration

Что это. Теперь выполните тестовую сборку и перейдите в репозиторий GitHub, чтобы убедиться, что это сработало. Нажмите на Филиалы на главной странице репозитория, чтобы увидеть статусы сборки.

sceenshot of the main page where you click on 'branches'

Вы должны видеть зеленые галочки:

screenshot of GitHub branches with build status

Ответ 2

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

  1. Установите плагин Task 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. Добавьте плагин Post Task, который повлечет отказ, если "отмеченная сборка как сбой"

    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

Ответ 4

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

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

  1. Настроить Github: создать токен личного доступа с помощью OAuth Scope repo:status
  2. Настройте Jenkins: Configure System и добавьте секрет OAuth как сервер GitHub - используйте Secret Text в качестве метода проверки подлинности, чтобы установить там OAuth Secret.
  3. Настройте задание Jenkins: добавьте Set GitHub commit status как действие Post-build. Задайте результат статуса 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

Ответ 5

API статуса Commit Status позволяет вам увидеть " API статусов репо ".

А с 26 апреля 2013 года вы можете увидеть статус сборки на своей странице ветки репо GitHub:

build status on GitHub repo branches

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

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

Ответ 7

Если на вашем Jenkins установлен плагин Github, вы можете сделать это в Post build actions следующим образом:

set build status on github

Ответ 8

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

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

  • Перейдите в "Настройки" > "Филиалы".
  • В разделе "Защита ветвей" нажмите Выберите ветку, в которой вы находитесь, и выберите нужную ветку для установки в качестве защищенной ветки.
  • Включите параметры по мере необходимости.

На сервере Jenkins: (Убедитесь, что установлены плагин Git и GitHub)

  • Перейдите в раздел Управление Jenkins > Configure System.
  • В GitHub установите URL-адрес API https://api.github.com. Хотя это значение по умолчанию.
  • Выберите свой сгенерированный токен для учетных данных. Если вы еще не создали токен, нажмите "Дополнительно"... затем "Дополнительные действия" вы можете конвертировать свой логин и пароль в токен и использовать его в качестве своих учетных данных.

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

Надеюсь, что это поможет.

Ответ 9

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

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

Ответ 10

Редактировать:

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

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

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

  • Начало создания штампов
  • Окончание успеха штампов
  • Проект запускается после основного проекта для публикации результатов → статус сборки, документы API, отчеты об испытаниях и покрытие тестирования.

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

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

ExpiresByType image/png "access plus 2 minutes"

Вот сценарий сборки. Цель, которая публикуется на gh-страницах, - "--publish.site.dry.run '

Имея менее 400 строк конфигурации, мы имеем:

  • Скомпилировать чеки
  • модульные и интеграционные тесты
  • Тестовые отчеты
  • Отчеты о покрытии кода
  • Документы API
  • Издание в Гитуб

, , и этот скрипт можно запустить в Jenkins или за его пределами, чтобы:

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

Результаты, достижения:

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

Ответ 12

Я следовал указаниям Алекса, и это сработало.

Но для GitHub Enterprise вам нужно изменить URL API при добавлении сервера в Jenkins.

Например, если ваша компания - creditcard.com, ваш URL будет

https://github.creditcard.com/api/v3/