Покажите текущее состояние 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
То, что я сделал, довольно просто:
- Установите плагин Task 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!\"
}"
-
Добавьте плагин 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!\"
}"
-
Вы также можете добавить вызов в ожидании в начале тестов
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]()
Ответ 3
Этот плагин должен работать: https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
Вы должны вставлять такие значки в свой файл README.md
:
![build passing]()
Ответ 4
В то же время пользовательский интерфейс Jenkins и GitHub немного изменился, и мне потребовалось некоторое время, чтобы выяснить, как правильно настроить Jenkins. Объяснение здесь основано на версии Дженкинса 2.121.1.
Я также предполагаю, что вы уже настроили ваш Jenkins Job, вызванный веб-чек или опросом. Это те шаги, которые я предпринял, чтобы заставить его работать:
- Настроить Github: создать токен личного доступа с помощью OAuth Scope
repo:status
- Настройте Jenkins:
Configure System
и добавьте секрет OAuth как сервер GitHub - используйте Secret Text
в качестве метода проверки подлинности, чтобы установить там OAuth Secret. - Настройте задание Jenkins: добавьте
Set GitHub commit status
как действие Post-build. Задайте результат статуса One of the default messages and statuses
. - Проверьте свой результат на 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.
Ответ 6
Там также этот плагин, который даст вам URL-адрес значка, который вы можете разместить в своем README.md, и выглядит так:
![build passing]()
https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
Ответ 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.
[](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, результаты тестов и покрытие тестирования.
Ответ 11
Jently обновляет статус фиксации Github ( как описано в разделе @vonc выше), к сожалению, они еще не реализовали API статуса репо
Ответ 12
Я следовал указаниям Алекса, и это сработало.
Но для GitHub Enterprise вам нужно изменить URL API при добавлении сервера в Jenkins.
Например, если ваша компания - creditcard.com, ваш URL будет
https://github.creditcard.com/api/v3/