Показать текущее состояние сборки Jenkins на репозитории GitHub
есть ли способ показать статус сборки Дженкинса на GitHub моего проекта Readme.md?
Я использую Jenkins для запуска сборок непрерывной интеграции. После каждой фиксации он гарантирует, что все компилируется, а также выполняет модульные и интеграционные тесты, прежде чем, наконец, создавать документацию и выпускать пакеты.
по-прежнему существует риск непреднамеренного совершения чего-то, что нарушает сборку. Это было бы хорошо для пользователей, посещающих страницу проекта GitHub, чтобы знать текущий мастер находится в этом состоянии.
11 ответов:
хорошо, вот как вы можете настроить Дженкинса для установки статусов сборки GitHub. Это предполагает, что у вас уже есть Дженкинс с плагином GitHub, настроенным на выполнение сборок при каждом нажатии.
перейдите в GitHub, войдите в систему, перейдите в настройки,личные жетоны доступа, нажмите кнопку создать новый маркер.
Регистрация РЕПО:статус (Я не уверен, что это необходимо, но я сделал это, и это сработало для меня).
сгенерируйте маркер, скопируйте его.
убедитесь, что пользователь GitHub, которого вы собираетесь использовать, является сотрудником репозитория (для частных репозиториев) или членом команды с принудительным доступом (для репозиториев организации) к репозиториям, которые вы хотите построить.
зайдите на свой сервер Дженкинса, войдите в систему.
- Управление Дженкинс → Настройка Системы
под GitHub Web Hook выберите давайте Дженкинс автоматического управления URL-адресами крючком, затем укажите свой GitHub имя пользователя и маркер вы попали в Шаг 3.
убедитесь, что он работает с Тестовые Учетные Данные. сохранить параметры.
найти работу Дженкинса и добавить установить статус сборки на GitHub commit к шагам после сборки
что я сделал довольно просто:
- установите плагин задачи Hudson Post
- Создайте личный маркер доступа здесь:https://github.com/settings/tokens
добавьте плагин 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!\" }"добавить плагин, сообщение задач, которые поставят отказ, если "отмечен построить как провал"
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!\" }"вы также можете добавить вызов в ожидание в начале тесты
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!\" }"
этот плагин должен работать:https://wiki.jenkins-ci.org/display/JENKINS/Embeddable + сборка + статус + плагин
вы должны быть в состоянии вставлять значки, как это в ваш
README.mdfile:
The Commit Status API позволяет увидеть " Repo Statuses API".
и с 26 апреля 2013 года, теперь вы можете увидеть построить статус на страница ветки РЕПО GitHub:
Это означает, что это еще один способ, посетив страницу проекта GitHub, чтобы увидеть эти статусы вместо того, чтобы только Дженкинс.
с 30 апреля 2013 года конечная точка API для фиксации статусы был расширен, чтобы разрешить ветвь и имена тегов, а также фиксация SHAs.
также есть этот плагин, который даст вам url-адрес значка, который вы можете разместить в своем README.md и выглядит так
https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
в то же время пользовательский интерфейс Дженкинса и GitHub немного изменился, и мне потребовалось некоторое время, чтобы понять, как правильно настроить Дженкинса. Объяснение здесь основано на версии Дженкинса 2.121.1.
Я также предполагаю, что вы уже настроили свою работу Дженкинса, которая будет вызвана веб-крючком или опросом. Вот шаги, которые я предпринял, чтобы заставить его работать:
- настройка Github: создание личного маркера доступа с областью OAuth
repo:status- Настроить Дженкинс:
Configure Systemи добавьте секрет OAuth как Сервер GitHub - используйтеSecret Textкак метод аутентификации, чтобы поместить секрет OAuth там.- настройка задания Дженкинса: добавить
Set GitHub commit statusкак действие после сборки. Установите Результате Статус доOne of the default messages and statuses.- проверьте свой результат на GitHub: Проверьте, получаете ли Вы статус сборки и продолжительность выполнения сборки на вашем GitHub совершать.
Настройка Github
настроить Дженкинс
Настроить Дженкинс Задание
результат
теперь вы увидите статус для ваших коммитов и ветвей:
Если у вас
Githubплагин установлен на вашемJenkins, вы можете сделать этоPost build actionsтакой :
в отношении настройки защищенной ветви Дженкинса и GitHub. Я использую Jenkins 2.6, и это шаги, которые я сделал, чтобы заставить его работать:
на веб-странице GitHub вашего репозитория:
- перейдите в раздел Настройки > филиалы.
- в разделе Защита ветвей нажмите в меню выбрать ветвь утопить и выберите нужную ветвь установить в качестве защищенной ветви.
- включите параметры по мере необходимости.
на Дженкинс Сервер: (Убедитесь, что у Вас установлен плагин Git и GitHub)
- перейдите к управлению Дженкинс > настройка системы.
- в разделе GitHub установите URL API в https://api.github.com. хотя это значение по умолчанию.
- выберите сгенерированный токен для учетных данных. Если вы еще не создали токен, нажмите кнопку Дополнительно... затем в дополнительных действиях вы можете преобразовать свой логин и пароль в токен и использовать его в качестве своего мандатный.
кроме того, убедитесь, что учетная запись GitHub, которую использует ваш Дженкинс, является соавтором для репозитория. Я установил его с уровнем разрешения.
надеюсь, что это помогает.
добавить ниже строки в вашем README.md и измените оба URL в соответствии с вашим проектом Дженкинса.
[](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