Есть ли способ показать состояние сборки Jenkins на GitHub Readme.md моего проекта?
Я использую Jenkins для запуска непрерывных интеграционных сборок. После каждого коммита он гарантирует, что все компилируется, а также выполняет модульные и интеграционные тесты, прежде чем, наконец, создать документацию и выпустить пакеты.
По-прежнему существует риск непреднамеренного совершения чего-либо, что нарушает сборку. Пользователи, посещающие страницу проекта GitHub, должны знать, что текущий мастер находится в этом состоянии.
Ответы:
Хорошо, вот как вы можете настроить Jenkins для установки статусов сборки GitHub. Это предполагает, что у вас уже есть Jenkins с плагином GitHub, настроенным на сборку при каждом нажатии.
Зайдите на GitHub, войдите в систему, зайдите в Настройки , Персональные токены , нажмите Создать новый токен .
Проверьте репо: статус (я не уверен, что это необходимо, но я сделал это, и у меня это сработало).
Сгенерируйте токен, скопируйте его.
Убедитесь, что пользователь GitHub, который вы собираетесь использовать, является сотрудником репозитория (для частных репозиториев) или членом команды с доступом по принципу push и pull (для репозиториев организации) к репозиториям, которые вы хотите создать.
Зайдите на свой сервер Jenkins, войдите в систему.
В разделе GitHub Web Hook выберите Разрешить Jenkins автоматически управлять URL-адресами подключения , затем укажите свое имя пользователя GitHub и токен OAuth , полученный на шаге 3.
Убедитесь, что он работает с кнопкой Test Credential . Сохраните настройки.
Найдите задание Jenkins и добавьте Установить статус сборки на коммит GitHub к шагам после сборки
Вот и все. Теперь выполните тестовую сборку и перейдите в репозиторий GitHub, чтобы проверить, работает ли он. Нажмите « Ветви» на главной странице репозитория, чтобы увидеть статусы сборки.
Вы должны увидеть зеленые галочки:
источник
Тем временем пользовательский интерфейс Jenkins и GitHub немного изменился, и мне потребовалось некоторое время, чтобы понять, как правильно настроить Jenkins. Объяснение здесь основано на версии 2.121.1 Jenkins.
Я также предполагаю, что вы уже настроили свое задание Jenkins на запуск через веб-крючок или опрос. Вот шаги, которые я предпринял, чтобы заставить это работать:
repo:status
Configure System
и добавьте OAuth Secret в качестве сервера GitHub - используйтеSecret Text
в качестве метода аутентификации для помещения OAuth Secret.Set GitHub commit status
как действие после сборки . Установите статус результата вOne of the default messages and statuses
.Настроить Github
Настроить Дженкинс
Настроить работу Дженкинс
результат
Теперь вы увидите статус ваших коммитов и веток:
источник
Manage Hooks
выделено, но не отмечено на изображениях выше, означает ли это, что мы должны снять флажок при сохранении?То, что я сделал, довольно просто:
Добавьте плагин Post Task, который всегда приносит успех
Добавьте плагин Post Task, который будет сообщать об ошибке, если «пометить сборку как сбой»
Вы также можете добавить вызов в ожидании в начале тестов
источник
sh
и даже использовать хранилище учетных данных JenkinswithCredentials
Этот плагин должен работать: https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
Вы должны иметь возможность вставлять такие значки в ваш
README.md
файл:источник
Commit Status API позволяет увидеть « Repo Статусы API ».
А с 26 апреля 2013 года вы теперь можете видеть статус сборки на странице ветки репозитория GitHub :
Это означает, что это другой способ, посетив страницу проекта GitHub, чтобы увидеть эти статусы вместо того, чтобы иметь только Jenkins.
Начиная с 30 апреля 2013 года, конечная точка API для состояний фиксации была расширена, чтобы разрешить имена ветвей и тегов, а также коммиты SHA .
источник
curl
( developer.github.com/v3/repos/statuses/… )Есть также этот плагин, который даст вам URL-адрес значка, который вы можете опубликовать в вашем README.md, и выглядит так
https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
источник
Если у вас установлен
Github
плагинJenkins
, вы можете сделать этоPost build actions
следующим образом:источник
Добавьте строку ниже в ваш README.md и измените оба URL в соответствии с вашим проектом jenkins.
источник
Что касается настройки защищенной ветки Jenkins и GitHub. Я использую Jenkins 2.6, и вот шаги, которые я сделал, чтобы заставить его работать:
На веб-странице вашего репозитория GitHub:
На сервере Jenkins: (Убедитесь, что у вас установлены подключаемые модули Git и GitHub)
Также убедитесь, что учетная запись GitHub, которую использует ваш Jenkins, является соавтором репозитория. Я установил это с уровнем разрешения записи.
Надеюсь это поможет.
источник
Я следовал указаниям Алекса, и это сработало.
Но для GitHub Enterprise вам нужно изменить URL API при добавлении сервера в Jenkins.
Например, если вашей компанией является creditcard.com, ваш URL будет
https://github.creditcard.com/api/v3/
источник
Совсем недавно обновляет ваш статус фиксации Github (как описано выше @vonc), к сожалению, им еще предстоит реализовать API статуса Repo
источник
Редактировать:
Я больше не использую этот подход, пожалуйста, используйте один из других ответов.
Обновление: что я в итоге сделал для нашего конкретного случая: (выше ответы были отличными - спасибо!)
Поскольку наш сервер сборки отсутствует в Интернете, у нас есть скрипт для публикации статуса сборки в ветке gh-pages в github.
GitHub кэширует изображения, поэтому мы создали файл .htaccess, который указывает короткий тайм-аут для образа состояния сборки.
Поместите это в каталог с изображением статуса сборки:
Вот сценарий сборки. Цель, которая публикует на gh-страницах, - '--publish.site.dry.run'
Имея менее 400 строк конфигурации, мы имеем:
, , и этот скрипт может быть запущен внутри или вне Jenkins, так что:
Результаты:
Главная страница проекта имеет статус сборки, обновляется после каждой сборки, а также последние документы API, результаты тестов и покрытие тестами.
источник