2016-02-24 8 views
9

Co ja próbuje wykonać jest następujący Jenkins konfiguracja (http://jenkins-ci.org) praca:Czy istnieje sposób na oddzielenie webhooków GitHub w trzech kategoriach: master, pull-request i cokolwiek innego?

  1. mieć zestaw <project>-master pracy nie są wywoływane przez

    • pchania do oddziału mistrzowskiej że zwłaszcza projekt.
    • Ręcznie, klikając przycisk "Utwórz teraz"
    • W skrypcie za pomocą interfejsu API REST.

    Osiągnąłem to, określając odpowiedni refspec, dodano webhook GitHub itp. Było to bardzo proste.

  2. mieć zestaw <project>-pr pracy nie są wywoływane przez

    • tworem GitHub PR.
    • Komentarz do PR, który uruchamia narzędzie GitHub Pull Request Builder.
    • Pchnięcie do oddziału, który był używany dla konkretnego PR.

    Zrobiłem Jenkinsowi pierwsze dwa. Ale nie znalazłem sposobu, aby zrobić element # 3 z tej listy, ponieważ wtyczki GitHub nie mogą łatwo stwierdzić, czy push jest do gałęzi PR, czy nie. Jakieś pomysły, jak to zrobić?

  3. Masz zestaw zadań <project>-branch, które są uruchamiane przez DOWOLNE naciśnięcie do dowolnej gałęzi. Problem polega na tym, że chcę wykluczyć paczki do masteringu i do oddziałów używanych w PR. Przez wiele dni szukałem w internecie możliwego rozwiązania i nie znalazłem nic, więc wszelkie wskazówki będą bardzo mile widziane.

+0

Naprawdę dobre pytanie, zastanawiałem się nad tym, że posiadanie wszystkiego (mistrz, inne branże i wszystkie PRy) zbudowanego przez tę samą pracę z jenkinami sprawia, że ​​prawie niemożliwe jest śledzenie. – sorin

Odpowiedz

2
  1. Do pracy być wyzwalany tylko przez zmiany w gałęzi głównej, nie trzeba zadzierać z webook github. Możesz po prostu użyć gałęzi wtyczki git, aby określić, że to zadanie powinno działać tylko dla gałęzi głównej.
  2. Konfigurowanie zadania do korzystania z wtyczki Github PULL Request Builder zgodnie z zaleceniami spowoduje wyzwolenie tylko dla PR, dla 3 wymienionych warunków.

  3. trudniejsze jeden .. O ile mi wiadomo, nie ma łatwego sposobu na Jenkins wiedzieć, czy oddział ma żądania ściągania lub nie, jak wnioski wysuwane są specyficzne dla github i wykrywanie Jenkins oddział jest po prostu używając git.

Jednak z mojego doświadczenia, na tej trzeciej opcji, mam ustawić <project>-feature pracę i skonfigurowany, aby dopasować go do dowolnego oddziału poprzedzona f/. W ten sposób, jeśli programista chce, aby testy były automatycznie uruchamiane w ich oddziale, ale nie chce otworzyć żądania wyciągnięcia przeciwko niemu, mogliby utworzyć tam gałąź taką jak f/add_a_thing, która automatycznie uruchomi testy na popychacze. Aby to działało, ustawiłbym specyfikator gałęzi na f/* w konfiguracji zadania.

Alternatywnie, wtyczka git pozwala na użycie parametru wyrażenia regularnego do specyfikatora gałęzi. Możesz użyć wyrażenia regularnego, aby specjalnie zignorować gałąź główną. Jednak jedynym sposobem, aby zignorować przyciąganie żądanych gałęzi, jest poproszenie programistów o użycie wzorca nazewnictwa, takiego jak pr/add_a_thing, w celu zidentyfikowania, że ​​gałąź ta będzie mieć przy sobie żądanie pobrania.

Powiązane problemy