Jenkins - jak zbudować konkretną gałąź

97

Nie jest to tak proste, jak wykonanie sparametryzowanej kompilacji. Mam już określony proces kompilacji, który będzie budowany i wdrażany za każdym razem, gdy którakolwiek z tych gałęzi zostanie wypchnięta do GitHub:

wprowadź opis obrazu tutaj

Więc jeśli właśnie pchnąłem developi udało mi się zbudować, jak uruchomić kompilację ręczną i sprawić, by pociągnął feature/my-new-feature(bez robienia a git push)? Próbowałem umożliwiające sparametryzowanego build, dodając nowy ciąg nazwie branch, a następnie dodanie nowego oddziału specyfikator, */$branch. Następnie uruchomiłem kompilację i ustawiłem branchna, feature/my-new-featureale nadal z niej korzystałem develop.

Byłbym wdzięczny za każdą pomoc!

ffxsam
źródło
Mówisz o webhooku na githubie. to może rozwiązać twój problem. czy chcesz to wywołać z github?
Abhijeet Kamble
1
Nie, integracja z GitHub już działa. Muszę wiedzieć, jak ręcznie zbudować określoną gałąź.
ffxsam
3
Mam ten sam problem. Zadanie jest skonfigurowane do budowania różnych gałęzi i jest wyzwalane przez hak git. Ale kiedy chciałbym ręcznie zbudować konkretną gałąź (bez nowych zmian w GIT), klikam „Buduj teraz”, ale zawsze buduje najnowszą sprawdzoną gałąź. Wypróbowałem także różne właściwości kompilacji.
cornz
Jeśli parametr nosi nazwę branch, wystarczy określić go $branchw polu specyfikatora gałęzi.
Alexey
1
@Alexey, ale przypuszczam, że podczas automatycznie inicjowanej kompilacji $branchspowoduje to, że będzie pusty ciąg.
Nakilon

Odpowiedzi:

111

Najlepszym rozwiązaniem może być:

Dodaj parametr ciągu do istniejącego zadania wprowadź opis obrazu tutaj

Następnie w Source Code Managementsekcji zaktualizuj, Branches to buildaby użyć zdefiniowanego parametru ciąguwprowadź opis obrazu tutaj

Jeśli zobaczysz pole wyboru z etykietą Lightweight checkout, upewnij się, że nie jest zaznaczone.

Konfiguracja wskazana na obrazach powie zadanie jenkins, aby użyć go masterjako domyślnej gałęzi, aw przypadku kompilacji ręcznych poprosi Cię o podanie szczegółów gałęzi (FYI: domyślnie jest ustawione na master)wprowadź opis obrazu tutaj

Ranjith's
źródło
4
Mistrz budowania domyślnie nie dostosuje go do ogólnej kompilacji programistycznej, która ma budować wszystkie gałęzie rozwoju.
static_rtti
9
Mój Boże, to takie gówniane. Dlaczego Jenkins nie zachowuje Branches to buildsekcji z cholernym repozytorium Git, do którego się odnosi? To głupie PITA, że trzeba to zrobić, aby określić gałąź do zbudowania.
Alex Zavatone
9
Dong, to nie działa (dla mnie). W końcu Jenkins próbuje sprawdzić gałąź, git.exe fetch --tags --progress origin +refs/heads/${BRANCH}:refs/remotes/origin/${BRANCH} --prunektóra jest oczywiście nieważna.
Liam
1
jest to rejestrowane jako błąd w Jenkins, więc trudno zobaczyć, jak to kiedykolwiek działało?
Liam
19
@Liam Zgodnie z sugestią zawartą w zgłoszeniu błędu, musisz odznaczyć „Lightweight Checkout”, aby to zadziałało.
asmaier
10

Nie sądzę, abyście mogli oboje w ramach tego samego zadania Jenkinsa, co musisz zrobić, to skonfigurować nowe zadanie Jenkinsa, które będzie miało dostęp do twojego github w celu pobierania gałęzi, a następnie możesz wybrać, który z nich ręcznie zbudować.

Po prostu oznacz go jako sparametryzowaną kompilację, określ nazwę i parametr skonfigurowany jako git parameter

wprowadź opis obrazu tutaj

a teraz możesz skonfigurować opcje gita:

wprowadź opis obrazu tutaj

smohamed
źródło
7
Ten parametr git to wtyczka Jenkinsa? Nie widzę opcji dodania tego typu parametrów. Jeśli jest to wtyczka, czy możesz wskazać ją w odpowiedzi?
Leandro David
@LeandroDavid yes Parametr Git to wtyczka, którą należy zainstalować po jej zakończeniu, zobaczysz tę opcję w obszarze Dodaj parametr.
gotosachin
9

Aby zapłacić oddział za pomocą skryptów Jenkins, użyj:

stage('Checkout SCM') {
    git branch: 'branchName', credentialsId: 'your_credentials', url: "giturlrepo"
}
Igor L.
źródło
1
Wiem, że to nie jest dokładnie to, o co chodzi w pytaniu, ale szukałem tych informacji, a Google ciągle sugerowało tę witrynę jako odpowiedź.
Igor L.
to samo tutaj bracie. Czy udało ci się znaleźć odpowiedź na dokładną odpowiedź
myślenie
0

To jest rozszerzenie odpowiedzi udzielonej przez Ranjitha

Sugerowałbym, abyś wybrał kompilację z parametrem wyboru i określił gałęzie, które chcesz zbudować. Parametr aktywnego wyboru

Następnie możesz określić gałęzie do zbudowania. Oddział do zbudowania

Teraz, kiedy będziesz budować swój projekt, otrzymasz opcję „Buduj z parametrami, gdzie możesz wybrać gałąź do zbudowania”

Możesz także napisać świetny skrypt, aby pobrać wszystkie gałęzie do parametru aktywnego wyboru.

Ashish Chandra
źródło
Proszę rozwinąć. TeamCity robi to domyślnie, a mimo to Jenkins nie może nawet zawiązać własnych butów !!!
C Johnson
0

wprowadź opis obrazu tutaj

Będzie dostępna opcja konfiguracji w obszarze Wyzwalacze kompilacji

Sprawdź gałęzie GitHub

Zostanie utworzony hak, a następnie możesz zbudować dowolną gałąź z Jenkinsa, gdy wybierzesz Github Branches wprowadź opis obrazu tutaj

Mam nadzieję, że to pomoże :)

rohit thomas
źródło
Próbuję użyć tej wtyczki w tej konfiguracji, ale nie mogę znaleźć sposobu, aby rozpocząć pracę. Czy istnieje inny sposób sprawdzenia, czy zdarzenia przychodzą poprawnie z gh?
Vito De Tullio
Czy otrzymujesz Run Branch Triggeropcję, skanuje repozytorium git w poszukiwaniu wszystkich dostępnych gałęzi ... Po prostu zajrzyj do dzienników Jenkinsa -> w sekcji Zarządzaj Jenkinsem ... aby sprawdzić, czy wystąpiły błędy
rohit thomas
1
Opisz, Twój opis jest za krótki i za krótki.
C Johnson,
0

Widzę wiele dobrych odpowiedzi na to pytanie, ale nadal chciałbym udostępnić tę metodę, używając parametru Git w następujący sposób:

Dodaj parametr Git

Podczas budowy rurociągu zostaniesz poproszony o wybranie gałęzi: Wybierz gałąź do zbudowania

Następnie za pomocą świetnego kodu możesz określić gałąź, którą chcesz sklonować:

git branch:BRANCH[7..-1], url: 'https://github.com/YourName/YourRepo.git' , credentialsId: 'github' 

Zwróć uwagę, że używam wycinka od 7 do ostatniego znaku, aby zmniejszyć „origin /” i uzyskać nazwę gałęzi.

Również w przypadku, gdy skonfigurowałeś wyzwalacz webhooków, nadal będzie działał i przyjmie domyślną gałąź, którą podałeś ( masterw naszym przypadku).

Sadmi
źródło