2013-09-30 1 views
6

Próbuję skonfigurować Jenkins z projektem Git, tak aby:Jenkins/Git: Budowanie ostatnią z gałęzi + ręcznej kompilacji z dowolnego popełnić

  1. To będzie budować od oddziałów pasujących do wzorca (pochodzenie/opanowania, pochodzenie/funkcja/*, pochodzenie/poprawka/ *, itd.), gdy zmiany są przekazywane do centralnego repozytorium

  2. programistów i testerów może wywołać zbudować dla każdej rewizji chcą, określony jako a build para licznik, który jest nazwą znacznika, nazwą gałęzi lub hash commit. Zadanie ma inne parametry, a my czasami chcemy tworzyć kompilacje z czymś innym niż wartości domyślne.

Mam 1. działa poprawnie poprzez ustawienie skryptu po otrzymaniu na serwerze Git i dodawanie wielu specyfikatorów oddziałów w Jenkins.

Aby również wykonać 2., dodałem dodatkowy parametr kompilacji GitRef, a następnie dodałem dodatkowy specyfikator gałęzi z $GitRef. Ręczne uruchamianie kompilacji będzie budować z tego samego zatwierdzenia/gałęzi za każdym razem, niezależnie od ustawionego parametru. Jeśli usunę wszystkie pozostałe specyfikatory gałęzi, ręczne kompilacje będą działać zgodnie z oczekiwaniami. Ale wtedy kompilacje uruchamiane hakiem budowałyby tylko od origin/master (domyślna wartość to $GitRef).

Czy to, co próbuję osiągnąć, nawet możliwe, bez tworzenia dwóch miejsc pracy dla każdego projektu? Jeśli tak, co muszę zrobić, aby działało?

+0

jesteś już zainteresowany tym tematem? – kikicarbonell

+0

Nigdy nie udało mi się sprawić, żeby to działało. Po prostu robimy teraz bez ręcznie uruchamianych kompilacji. Spojrzałem na kod wtyczki, ale nie mogłem się z tym pogodzić. O ile mogłem powiedzieć, nie rozwiązał on makr we właściwym miejscu i dlatego nie zrobił tego, co chciałem. – derkyjadex

+0

potrzebujesz czegoś takiego jak "Gitlab Merge Request Builder Plugin" (Ref: https://wiki.jenkins-ci.org/display/JENKINS/Gitlab+Merge+Request+Builder+Plugin) – kikicarbonell

Odpowiedz

1

Zamiast używać $GitRef jako innego specyfikatora gałęzi, po prostu użyj go jako zmiennej String bez wartości domyślnej. Następnie, jako pierwszy krok w swojej fazie budowy w Jenkins, mieć skrypt, który sprawdza, czy wartość ta jest ustawiona:

#!/bin/bash 
if [ -n $GitRef ] 
then 
    echo "Manually specified reference found. Building $GitRef" 
    git checkout $GitRef 
else 
    echo "No explicit branch specified, building $GIT_BRANCH" 
fi 

W tym momencie uruchomić build jak za normalny (np Maven). Kompilacja będzie działała niezależnie od gałęzi/tagu/commit, który chcesz skompilować, a jeśli nie istnieje, Jenkins powinien zająć się wersją git checkout <bad_ref>, powodując niepowodzenie kompilacji.

2

Po zainstalowaniu Git Parameters Plugin można zezwolić użytkownikom na uruchomienie sparametryzowanej kompilacji przy użyciu określonego identyfikatora, gałęzi lub znacznika.

Następnie można ustawić domyślną wartość dla swoich parametrów jako ** i domyślnie Jenkins zbuduje najnowszy commit na oddziałach.