Показати поточний стан побудови Дженкінса на репортажі GitHub


182

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

Я використовую Дженкінса для запуску безперервних інтеграційних побудов. Після кожного виконання зобов’язання гарантує, що все компілюється, а також виконує тести для одиниць та інтеграції, перш ніж остаточно виготовити документацію та випустити пакети.

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


9
Чому це було знято? Чи є щось очевидне в посібнику користувача Jenkins, що я пропустив? Я робив Google раніше, і нічого не міг знайти.
Джаспер Блюз

1
Сервер побудови Travis може зробити щось подібне, але я використовую Jenkins на Osx. Ось яку справу я хочу: github.com/CocoaPods/CocoaPods
Jasper Blues


2
Посилання на подібне запитання рекомендує Travis, який наразі не підтримує iOS та OSX, тому він не відповідає на питання.
Джаспер Блюз

4
Це не дублікат .. travis! = Jenkins
Banjocat

Відповіді:


167

Ок, ось як можна налаштувати Дженкінс для встановлення статусів GitHub. Це передбачає, що у вас вже є Дженкінс із плагіном GitHub, налаштованим робити побудови на кожному натисканні.

  1. Перейдіть на GitHub, увійдіть, перейдіть у Налаштування , Особисті маркери доступу , натисніть Створити новий маркер .

    скріншот налаштувань GitHub

  2. Перевірте репо: статус (я не впевнений, що це потрібно, але я це зробив, і він працював на мене).

    скріншот покоління маркерів GitHub

  3. Створіть маркер, скопіюйте його.

  4. Переконайтеся, що користувач GitHub, який ви збираєтеся використовувати, є співпрацею сховища (для приватних репост) або є членом команди, яка має доступ "push and pull" (для репортажів організації) до сховищ, які ви хочете створити.

  5. Перейдіть до свого сервера Jenkins, увійдіть.

  6. Керуйте ДженкінсомНалаштування системи
  7. У розділі Веб-гачок GitHub виберіть Дозвольте Дженкінсу автоматично керувати URL-адресами гака , а потім вкажіть своє ім'я користувача GitHub та маркер OAuth, який ви отримали на кроці 3.

    скріншот глобальних налаштувань Дженкінса

  8. Переконайтеся, що він працює за допомогою кнопки Test Credential . Збережіть налаштування.

  9. Знайдіть роботу Дженкінса і додайте статусу встановлення збірки на GitHub до виконання кроків після збирання

    скріншот конфігурації роботи Дженкінса

Це воно. Тепер зробіть тестову збірку та перейдіть до сховища GitHub, щоб перевірити, чи працює він. Клацніть на Відділення на головній сторінці сховища, щоб побачити статуси складання.

ескіз головної сторінки, де ви натискаєте на "гілки"

Ви повинні побачити зелені галочки:

скріншот гілок GitHub зі статусом збірки


GitHub оновив робочий процес авторизації зараз, користувачі більше не вказують, що дозволяти, а додатки повинні запитувати те, що їм потрібно під час авторизації, і користувач затверджує запитувані дозволи.
Ian Vaughan

6
Здається, це не працює з Jenkins> 1.609 та плагіном Github v 1.13.3 - я не можу знайти опцію "Нехай Дженкінс автоматично керує URL-адресами гака"
закінчитись

2
Я погоджуюся з @pyeleven. Я використовую Jenkins LTS 1.625.3 з Github Plugin 1.16.0 та Github API Plugin 1.71. Цей параметр не відображається. Швидше я бачу спадання для облікових даних, але дані не вказані (навіть якщо у мене створені облікові дані). Ці облікові дані з'являються під час переходу вперед-> Керування додатковими діями Github -> Перетворення входу та пароля в маркер Github.
shehzan

4
Це здається застарілим; дія після збирання, яку ця відповідь згадує, тепер позначена як застаріла, і є друга
Daenyth

1
Тепер параметри кроку після збирання змінено. @Alex має правильну відповідь.
Бібек Мантрі

51

Тим часом користувальницький інтерфейс Дженкінса і GitHub трохи змінився, і мені знадобилося певний час, щоб зрозуміти, як правильно налаштувати Дженкінса. Пояснення тут ґрунтується на версії 2.121.1 Дженкінса.

Я також припускаю, що ви вже налаштували роботу вашого Дженкінса за допомогою веб-камери або опитування. Це кроки, які я вжив, щоб він працював:

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

Налаштуйте Github

Створіть персональний маркер доступу


введіть тут опис зображення


введіть тут опис зображення


введіть тут опис зображення


Налаштуйте Дженкінса

введіть тут опис зображення


введіть тут опис зображення


введіть тут опис зображення


введіть тут опис зображення


введіть тут опис зображення


Налаштуйте роботу Дженкінса

введіть тут опис зображення


введіть тут опис зображення


введіть тут опис зображення


Результат

Тепер ви побачите статус своїх комісій та відділень:

введіть тут опис зображення


2
Вау нарешті знайшов рішення, спасибі! Цей "секретний текст" мене збентежив.
head01

Дженкінс, здається, штовхає статуси, але моє приватне репо не сприймає їх. Будь-які пропозиції?
Патрік Майклсен

Оновлення: моя проблема стосувалася конфіденційності мого репо. У мене повинна виникнути проблема з налаштуванням облікових даних.
Патрік Майклсен

Оновлення: врешті-решт я виявив, що це працює лише в тому випадку, якщо воно було викликане фактичним натисканням git Запуск складання самостійно не запускає оновлення статусу правильно.
Патрік Майклсен

1
Manage HooksКоробка підсвічується , але не позначена в зображеннях вище, це означає , що має бути невідміченим , коли ми економимо?
Perplexabot

37

Що я зробив досить просто:

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

    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!\"
    }"
    

Знімок екрана конфігурації завдань для створення повідомлення


Ви також можете це зробити з трубопроводу - наприклад, ви можете просто зателефонувати через нього shі навіть використовувати сховище даних для ДженкінсаwithCredentials
Іван Колмичек

Для Teamcity ви можете використовувати: confluence.jetbrains.com/display/TCD10/Commit+Status+Publisher
Natim

24

Цей плагін повинен працювати: https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin

Ви повинні мати можливість вставляти такі значки у свій README.mdфайл:

будувати прохідні


6
На жаль, здається, що GitHub почав кешувати ці зображення на деякій службі розміщення зображень, і вони зараз відображаються неправильно.
axel22

Тепер це добре працює, якщо ви правильно налаштували доступ (анонімний користувач повинен мати можливість бачити статус збірки)
Дмитро Мешков

11

Commit Status API дозволяє побачити « Repo Статуси API ».

А з 26 квітня 2013 року тепер ви можете бачити статус збірки на своїй філії на сторінці GitHub :

створити статус у філіях репортажу GitHub

Це означає, що це ще один спосіб, відвідавши сторінку проекту GitHub, щоб побачити ці статуси, а не лише Дженкінса.

Починаючи з 30 квітня 2013 року, кінцеву точку API статусів комісій було розширено, щоб дозволити імена гілок та тегів, а також виконувати SHA .


Де я можу розмістити URL-адреси для звернення? Чи є плагін або мені потрібно користуватися кучерями на етапі збирання?
Ян Вон

@IanVaughan що ти маєш на увазі "вдарити"? Щоб побачити що? Щоб побачити статус, було б curl( developer.github.com/v3/repos/statuses/… )
VonC

Вибачте, так, я знав, що curl можна використовувати, і я знав інтерфейс API, це було більше куди поставити curl, і якщо не було доступно вищого рівня абстрагування від curl? тобто я міг би додати POST-завиток до того, як збірка починає заявляти, що фіксація / PR будується, а потім один після, але це все здається дуже низьким рівнем, і я сподівався, що цей модуль для цього матеріалу є більш високим рівнем.
Ian Vaughan

З тих пір я знайшов Джанкі, який досить важкий для мого використання, здається, робить те, що я хочу.
Ian Vaughan


7

Якщо у вас встановлений Githubплагін Jenkins, ви можете це зробити Post build actionsтак:

встановити статус збірки на github



4
У цій відповіді бракує деталей: як я можу створити маркер доступу OAuth на GitHub, щоб дозволити плагіну GitHub використовувати API, необхідні для встановлення стану збірки? Які дозволи потрібні для цього маркера? Де в конфігурації Дженкінса я можу вказати ім’я користувача / маркер?
Маріус Гедмінас

2
Це насправді не корисно, як потрапити до цього діалогового вікна?
Oz123

5

Додайте нижній рядок у своєму README.md та змініть обидві URL-адреси відповідно до вашого проекту jenkins.

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

Графіка завантажується автоматично? Здається, це не для мене ...
HX_заборонив

Так, це не вийде. Ви повинні оновити сторінку.
Каушал

3

Що стосується створення Дженкінса та захищеного відділення GitHub. Я використовую Jenkins 2.6, і це кроки, які я зробив для того, щоб він працював:

На веб-сторінці GitHub вашого сховища:

  1. Перейдіть до Налаштування> Відділення.
  2. У розділі Захист гілок натисніть на меню Вибрати гілку, що випадає, і виберіть гілку, яку потрібно встановити як Захищену гілку.
  3. Увімкніть параметри за потребою.

На сервері Jenkins: (Переконайтеся, що у вас встановлені додатки Git та GitHub)

  1. Перейдіть до пункту Керування Дженкінсом> Налаштування системи.
  2. Під GitHub встановіть URL-адресу API на https://api.github.com . Хоча це значення за замовчуванням.
  3. Виберіть свій згенерований маркер для облікових даних. Якщо ви ще не створили маркер, натисніть кнопку Додатково ... потім на Додаткові дії, ви можете перетворити свій логін і пароль в маркер і використовувати його як свою облікову інформацію.

Також переконайтеся, що обліковий запис GitHub, який використовує ваш Дженкінс, є співавтором для сховища. Я встановив його з рівнем дозволу на запис.

Сподіваюся, це допомагає.




1

Редагувати:

Я більше не використовую цей підхід, будь ласка, використовуйте одну з інших відповідей.

Оновлення: що я в кінцевому підсумку робив для нашого конкретного випадку: (вище відповіді були чудовими - дякую!)

Оскільки наш сервер збирання відсутній в Інтернеті, у нас є сценарій для публікації статусу збірки у відділенні gh-pages у github.

  • Невдача початку створення штампів
  • Кінець успіху нарощування марок
  • Проект запускається після того, як основний проект опублікує результати -> статус збірки, документи API, звіти про тести та покриття тесту.

GitHub кешує зображення, таким чином ми створили файл .htaccess, який вказує на короткий час очікування кешу для зображення статусу збірки.

Помістіть це в каталог із зображенням статусу збірки:

ExpiresByType image/png "access plus 2 minutes"

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

Маючи менше 400 рядків конфігурації, ми маємо:

  • Складіть чеки
  • модульні та інтеграційні тести
  • Звіти про випробування
  • Звіти про покриття коду
  • Документи API
  • Публікація в Github

. . і цей сценарій можна запускати в Дженкінсі або за його межами, щоб:

  • Розробники можуть запускати цей скрипт перед фіксацією, знижуючи ймовірність зламаної збірки, що впливає на інших.
  • Відмову легко відтворити локально.

Результати:

Основна сторінка проекту має статус збірки, оновлюється після кожної збірки, а також останні документи Документи API, результати тестів та покриття тесту.


Чудовий відгук, точніший за мою відповідь. +1
VonC

1
Посилання сценарію
побудови

У вас є пряме посилання на ваш сценарій?
Ян

Перестали використовувати цей підхід - я думаю, що інші відповіді будуть кращими.
Джаспер Блюз
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.