Czy istnieje sposób, aby pokazać status kompilacji Jenkins na GitHub Readme.md mojego projektu?
Używam Jenkinsa do uruchamiania ciągłych kompilacji integracyjnych. Po każdym zatwierdzeniu upewnia się, że wszystko się kompiluje, a także wykonuje testy jednostkowe i integracyjne, zanim w końcu opracuje dokumentację i wyda pakiety.
Nadal istnieje ryzyko nieumyślnego popełnienia czegoś, co psuje kompilację. Dobrze byłoby, gdyby użytkownicy odwiedzający stronę projektu GitHub wiedzieli, że bieżący wzorzec jest w tym stanie.
Odpowiedzi:
Ok, oto jak możesz skonfigurować Jenkinsa, aby ustawić statusy kompilacji GitHub. Zakłada się, że masz już Jenkinsa z wtyczką GitHub skonfigurowaną do wykonywania kompilacji przy każdym wypychaniu.
Przejdź do GitHub, zaloguj się, przejdź do Ustawienia , Osobiste tokeny dostępu , kliknij Wygeneruj nowy token .
Sprawdź status repo: (nie jestem pewien, czy to konieczne, ale zrobiłem to i zadziałało dla mnie).
Wygeneruj token, skopiuj go.
Upewnij się, że użytkownik GitHub, którego będziesz używać, jest współpracownikiem repozytorium (w przypadku prywatnych repozytoriów) lub członkiem zespołu z dostępem typu push i pull (w przypadku repozytoriów organizacji) do repozytoriów, które chcesz zbudować.
Przejdź do serwera Jenkins, zaloguj się.
W obszarze GitHub Web Hook wybierz opcję Pozwól Jenkinsowi automatycznie zarządzać adresami URL haków , a następnie określ swoją nazwę użytkownika GitHub i token OAuth otrzymany w kroku 3.
Sprawdź, czy działa z przyciskiem Poświadczenie testu . Zapisz ustawienia.
Znajdź zadanie Jenkinsa i dodaj Ustaw status kompilacji w GitHub zatwierdzenia do kroków po kompilacji
Otóż to. Teraz wykonaj wersję testową i przejdź do repozytorium GitHub, aby sprawdzić, czy zadziałało. Kliknij Oddziały na stronie głównego repozytorium, aby zobaczyć statusy kompilacji.
Powinieneś zobaczyć zielone znaczniki wyboru:
źródło
W międzyczasie interfejs Jenkins i GitHub nieco się zmienił i zajęło mi trochę czasu, aby dowiedzieć się, jak poprawnie skonfigurować Jenkins. Wyjaśnienie tutaj oparte jest na wersji 2.121.1 Jenkinsa.
Zakładam również, że skonfigurowałeś już swoją pracę Jenkins Job przez hak internetowy lub ankietę. Oto kroki, które podjąłem, aby to działało:
repo:status
Configure System
i dodaj Sekret OAuth jako Serwer GitHub - użyj goSecret Text
jako metody uwierzytelnienia, aby umieścić tam Sekret OAuth.Set GitHub commit status
jako akcję po kompilacji . Ustaw Wynik stanu naOne of the default messages and statuses
.Skonfiguruj Github
Skonfiguruj Jenkins
Skonfiguruj Jenkins Job
Wynik
Zobaczysz teraz status swoich zobowiązań i oddziałów:
źródło
Manage Hooks
Pole jest podświetlone, ale nie zaznaczone w powyższych zdjęć, to znaczy, powinno być odznaczone kiedy zapisać?To, co zrobiłem, jest dość proste:
Dodaj wtyczkę Post Task, która zawsze przynosi sukces
Dodaj wtyczkę Post Task, która spowoduje niepowodzenie, jeśli „oznaczono kompilację jako niepowodzenie”
Możesz również dodać połączenie do oczekujących na początku testów
źródło
sh
a nawet skorzystać z magazynu poświadczeń JenkinsawithCredentials
Ta wtyczka powinna działać: https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
Powinieneś być w stanie osadzić takie odznaki w swoim
README.md
pliku:źródło
Commit Stan API pozwala zobaczyć „ Repo statusy API ”.
Od 26 kwietnia 2013 r. Możesz teraz zobaczyć status kompilacji na stronie oddziału GitHub :
Oznacza to, że jest to inny sposób, odwiedzając stronę projektu GitHub, aby zobaczyć te statusy zamiast tylko Jenkinsa.
Od 30 kwietnia 2013 r. Punkt końcowy interfejsu API dla statusów zatwierdzania został rozszerzony, aby umożliwić oddział . Punkt nazwy i tagów, a także zatwierdzać SHA .
źródło
curl
( developer.github.com/v3/repos/statuses/… )Jest też ta wtyczka, która da ci adres URL identyfikatora, który możesz opublikować w README.md i wygląda następująco
https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
źródło
Jeśli masz
Github
zainstalowaną wtyczkęJenkins
, możesz to zrobić wPost build actions
następujący sposób:źródło
Dodaj poniższy wiersz w pliku README.md i zmień oba adresy URL zgodnie z projektem Jenkins.
źródło
W odniesieniu do utworzenia chronionego oddziału Jenkins i GitHub. Używam Jenkins 2.6, a oto kroki, które zrobiłem, aby to działało:
Na stronie GitHub repozytorium:
Na serwerze Jenkins: (Upewnij się, że masz zainstalowaną wtyczkę Git i GitHub)
Upewnij się również, że konto GitHub, z którego korzysta Twój Jenkins, jest współpracownikiem repozytorium. Ustawiłem go z poziomem uprawnień do zapisu.
Mam nadzieję że to pomoże.
źródło
Postępowałem zgodnie ze wskazówkami Alexa i zadziałało.
Ale w przypadku GitHub Enterprise musisz zmodyfikować adres URL interfejsu API podczas dodawania serwera do Jenkins.
Na przykład, jeśli Twoja firma to creditcard.com, adres URL to
https://github.creditcard.com/api/v3/
źródło
Jently aktualizuje twój status zatwierdzenia Github (jak opisano powyżej przez @vonc), niestety jeszcze nie wdrożyli interfejsu API stanu repo
źródło
Edytować:
Nie używam już tego podejścia, skorzystaj z jednej z pozostałych odpowiedzi.
Aktualizacja: co ostatecznie skończyłem, w naszym konkretnym przypadku: (powyższe odpowiedzi były świetne - dzięki!)
Ponieważ nasz serwer kompilacji nie znajduje się w Internecie, mamy skrypt do opublikowania statusu kompilacji w gałęzi gh-pages w github.
GitHub buforuje obrazy, dlatego stworzyliśmy plik .htaccess, który instruuje krótki limit czasu buforowania dla obrazu stanu kompilacji.
Umieść to w katalogu z obrazem statusu kompilacji:
Oto skrypt kompilacji. Celem publikowanym na stronach gh jest „--publish.site.dry.run”
Przy mniej niż 400 liniach konfiguracji mamy:
. . a ten skrypt można uruchomić w Jenkins lub poza nim, aby:
Wyniki:
Strona główna projektu ma status kompilacji, aktualizowany po każdej kompilacji, wraz z najnowszymi dokumentami API, wynikami testów i zasięgiem testów.
źródło