Próbuję skonfigurować Jenkins-ci dla projektu przy użyciu GitHub. Mam już skonfigurowane Jenkins z odpowiednimi wtyczkami. Chcę, aby Jenkins uruchamiał skrypty budowania tylko wtedy, gdy ktoś w projekcie próbuje opanować. Do tej pory mogłem go skonfigurować tak, aby kompilacja była uruchamiana za każdym razem, gdy ktoś popchnie go w dowolne miejsce, ale jest to zbyt szerokie. Zrobiłem to za pomocą haków serwisowych po odbiorze na Git.
Przeczytałem wiki Jenkins i kilka samouczków, ale brakuje tego szczególnego szczegółu ... czy to może mieć coś wspólnego z ankietami? Czy też należy pracować po stronie Gita, aby Git uruchamiał Jenkinsa tylko po master
zmianie?
Odpowiedzi:
Jak już zauważył Gezzed w swoim komentarzu, tymczasem istnieje dobre rozwiązanie (opisane w Polling musi umrzeć: wyzwalanie kompilacji Jenkinsa z haka Git ):
Ustaw wyzwalacz kompilacji zadania Jenkins na Poll SCM , ale nie określaj harmonogramu.
Utwórz wyzwalacz po otrzymaniu GitHub, aby powiadomić adres URL
Spowoduje to uruchomienie wszystkich kompilacji, które sondują określone repozytorium Git.
Jednak odpytywanie sprawdza, czy coś zostało przekazane do używanej gałęzi.
Działa idealnie.
źródło
Począwszy od wersji 0.5, wtyczka GitHub dla Jenkins może wyzwalać kompilację, gdy zmiana zostanie przekazana do GitHub .
źródło
Zamiast wyzwalać kompilacje zdalnie, zmień konfigurację projektu Jenkins, aby uruchamiać kompilacje przez odpytywanie.
Jenkins może sondować na podstawie ustalonego wewnętrznego lub adresu URL. To drugie chcesz pominąć kompilacje, jeśli nie ma zmian w tej gałęzi. Dokładne szczegóły znajdują się w dokumentacji . Zasadniczo musisz tylko zaznaczyć opcję „Ankieta SCM”, pozostaw pustą sekcję harmonogramu i ustawić zdalny adres URL, aby trafiał na JENKINS_URL / job / name / polling.
Jeden problem, jeśli masz zabezpieczone środowisko Jenkins, jest inny
/build
,/polling
adres URL wymaga uwierzytelnienia. Instrukcje tutaj mają szczegóły. Na przykład mam przechwytujący GitHub po otrzymaniuusername:apiToken@JENKIS_URL/job/name/polling
.źródło
W przypadku GitLab wykonaj następujące kroki:
Wprowadź adres URL „Build Now” z projektu Jenkins jako adres URL zdarzenia push:
http://server.com/jenkins/job/project_name/build?delay=0sec
na przykładAdd Web Hook
a następnietest hook
Następnie po każdym zatwierdzeniu do repozytorium uruchamiany jest zaczep sieciowy i tworzona jest kompilacja. Pamiętaj, aby ustawić obszar roboczy Jenkins, aby
delete workspace before each build
uzyskać świeżą kopię nowego kodu.źródło
Nie dotyczy Gita, ale poniżej pomogę szczegółowo skonfigurować zadanie Jenkins z Mercurialem. Może pomóc innym z podobnym problemem.
Poll SCM
opcję. Ustaw wartość na* * * * *
[URLTrigger] - Poll with a URL
. Teraz możesz wybrać niektóre opcje, takie jak zmiana daty modyfikacji, treść adresu URL itp.Monitor change of content
Teraz dokonaj pewnych zmian w repozytorium Mercurial przez niektóre testy testowe.
Sprawdź, czy zadanie Jenkins teraz działa, wykrywając zmiany SCM. Gdy kompilacja zostanie uruchomiona z powodu zmian Mercurial, zobaczysz tekst
Started by an SCM change
. W przeciwnym razie użytkownik, który ręcznie go uruchomił.źródło
Mam nadzieję, że to pomoże: jak uruchomić wersję Jenkins na Git commit
To tylko kwestia użycia curl do uruchomienia zadania Jenkinsa za pomocą haków Git dostarczonych przez Git.
Polecenie
curl http://localhost:8080/job/someJob/build?delay=0sec
może uruchomić zadanie Jenkins, gdziesomeJob
jest nazwa zadania Jenkins.Wyszukaj folder „hooks” w ukrytym folderze .git. Zmień nazwę pliku „post-commit.sample” na „post-commit”. Otwórz go za pomocą Notatnika, usuń wiersz „: Nic” i wklej do niego powyższe polecenie.
Otóż to. Za każdym razem, gdy wykonujesz zatwierdzenie, Git wyzwala polecenia po zatwierdzeniu zdefiniowane w pliku.
źródło
Ciągła integracja z Jenkins, po wypchnięciu kodu do repozytorium z polecenia Git / GUI:
.git/hooks
folderu.hooks
Folder zawiera kilka plików. Sprawdź „po zatwierdzeniu”. Jeśli nie jest obecny, utwórz plik „po zatwierdzeniu” bez rozszerzenia pliku:Edytuj plik „po zatwierdzeniu” za pomocą poniższego polecenia. Upewnij się, że jest on obecny w folderze hooks lokalnego kodu źródłowego.
Przykład:
5
userName
: Nazwa użytkownika JenkinsjobName
: Nazwa zadania kompilacjiapiToken
: Aby uzyskać token API, przejdź do strony użytkownika Jenkins (w prawym górnym rogu interfejsu). Jest dostępny w menu „Konfiguruj” po lewej stronie: „Pokaż token API”Wprowadź zmiany w kodzie źródłowym i przekaż kod do repozytorium.
Twoim zadaniem
http://localhost:8080/jenkins/job/Gitcommittest/
powinno być budowanie.źródło
Musisz podać gałąź. Domyślnie nasłuchuje wszystkiego. Zobacz wpis na blogu Hudson: Wtyczki Git i Maven .
źródło
W tym celu można skonfigurować ogólną wtyczkę wyzwalacza Webhook z filtrami.
Po skonfigurowaniu z
ref
i wyrażeniu$.ref
.$ref
i wyrażeniem filtru podobnym do^refs/heads/master$
.Wtedy to zadanie zostanie uruchomione przy każdym naciśnięciu przycisku
master
. Brak odpytywania.Prawdopodobnie chcesz więcej wartości z haka do faktycznego wykonania kompilacji. Wystarczy dodać więcej zmiennych za pomocą JSONPath, aby wybrać to, czego potrzebujesz.
Oto kilka przypadków użycia: https://github.com/jenkinsci/generic-webhook-trigger-plugin/tree/master/src/test/resources/org/jenkinsci/plugins/gwt/bdd
źródło
W mojej obecnej organizacji nie robimy tego w trybie głównym, ale robimy to zarówno w fazie rozwoju, jak i wydania / gałęzi (używamy Git Flow), aby wygenerować kompilacje migawek.
Ponieważ używamy potoku z wieloma gałęziami, robimy to w pliku Jenkins przy użyciu składni when {} ...
Jest to szczegółowo opisane w tym poście na blogu: https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/#longer-pipeline
źródło
Powyższe odpowiedzi są poprawne, ale zwracam się do tych, którzy są nowicjuszami ze względu na ich prostotę
szczególnie do ustawiania wyzwalacza kompilacji dla potoku:
Rozważ, że masz dwie gałęzie Github: 1.master, 2.dev i Jenkinsfile (gdzie jest zapisany skrypt potoku), a inne pliki są dostępne w każdej gałęzi
Skonfiguruj nowy projekt rurociągu (dla oddziału deweloperskiego)
## 1. Integracja kodu z wtyczką git i podejściem opartym na cron Wymagana wtyczka git powinna zostać zainstalowana i skonfigurować ją z Twoim imieniem i adresem e-mail
## 2. Integracja kodu: wtyczka github i podejście do webhooka Wymaganie wstępne Należy zainstalować wtyczkę Github i skonfigurować serwer Github, należy przetestować połączenie, jeśli nie rozważa się następującej konfiguracji
Skonfiguruj wtyczkę Github z kontem na Jenkins
Sekcja GitHub Dodaj serwer Github, jeśli nie jest obecny Adres URL API: https://api.github.com Poświadczenia: Dodaj tajny tekst (kliknij przycisk Dodaj: wybierz typ tajnego tekstu) o wartości Osobisty token dostępu (Wygeneruj go z kont Github—> ustawienia -> ustawienie programisty—> osobisty token dostępu—> dodaj token—> sprawdź zakresy -> skopiuj token) Testuj połączenie -> Sprawdź, czy jest on podłączony do konta Github, czy nie Zaznacz pole wyboru za pomocą Zarządzaj hakami Wcześniej podsekcja po prostu wybierz poprzednie poświadczenie dotyczące „wspólnego hasła”
Dodaj element webhook, jeśli nie został dodany do repozytorium przez
http: // Public_IP: Jenkins_PORT / github-webhook /
Jeśli masz wtyczkę Github Pull, skonfiguruj ją również za pomocą opublikowanego adresu URL Jenkins.
źródło
Użyj wtyczki konstruktora poleceń pobierania: https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin
To naprawdę proste. Następnie możesz skonfigurować haki internetowe GitHub, aby uruchamiały kompilacje.
źródło
Moje rozwiązanie dla lokalnego serwera git: przejdź do katalogu lokalnego serwera git, zignoruj istniejącą aktualizację.sample i utwórz nowy plik o nazwie dosłownie „aktualizacja”, taki jak:
Instrukcja echo zostanie wyświetlona pod wynikiem git push, token można pobrać z konfiguracji zadania jenkins, przeglądaj, aby go znaleźć. Jeśli plik „aktualizacja” nie jest wywoływany, wypróbuj inne pliki o tej samej nazwie bez rozszerzenia „sample”.
To wszystko czego potrzebujesz
źródło