Korzystanie z Jenkins 1.501 i wtyczki Jenkins Git 1.1.26
Mam 3 różne repozytoria git, każdy z wieloma projektami.
Teraz muszę wyewidencjonować wszystkie projekty z 3 repozytoriów git do tego samego obszaru roboczego na serwerze podrzędnym Jenkins. Każde repozytorium git zdefiniowałem w: Zarządzanie kodem źródłowym: Wiele SCM . Ale za każdym razem, gdy repozytorium jest sprawdzane, poprzednie repozytorium (i powiązane z nim projekty) jest usuwane.
Przeczytałem to:
http://jenkins.361315.n4.nabble.com/multiple-git-repos-in-one-job-td4633300.html
ale to naprawdę nie pomaga. Próbowałem określić ten sam folder w podkatalogu lokalnym dla repozytorium (opcjonalnie) dla wszystkich repozytoriów, ale daje ten sam wynik.
Jeśli jest to po prostu niemożliwe przy użyciu Jenkinsa, przypuszczam, że można użyć jakiegoś kroku / skryptów przed kompilacją, aby przenieść projekty we właściwe miejsce. Nie można modyfikować konfiguracji kompilacji projektów.
Dzięki wtyczce Multiple SCMs:
utwórz inny wpis repozytorium dla każdego repozytorium, które chcesz pobrać (projekt główny lub projekt zależny.
dla każdego projektu, w menu „zaawansowane” (drugie menu „zaawansowane”, dla każdego repozytorium są dwa przyciski oznaczone jako „zaawansowane”), znajdź pole tekstowe „Lokalny podkatalog dla repozytorium (opcjonalne)”. Możesz w nim określić podkatalog w katalogu „workspace”, do którego chcesz skopiować projekt. Możesz zmapować system plików mojego komputera deweloperskiego.
„Drugie menu zaawansowane” już nie istnieje, zamiast tego należy użyć przycisku „Dodaj” (w sekcji „Dodatkowe zachowania”) i wybrać opcję „Sprawdź do podkatalogu”
Mam nadzieję, że to pomoże.
źródło
Ponieważ wtyczka Multiple SCMs jest przestarzała.
Dzięki Jenkins Pipeline można sprawdzić wiele repozytoriów git i po zbudowaniu go przy użyciu gradle
Możesz rozważyć użycie podmodułów git zamiast niestandardowego potoku, takiego jak ten.
źródło
dir
Blok jest kluczem, nie mogłem zrozumieć, dlaczego ja tylko widząc najbardziej niedawno sklonowane repo w obszarze roboczym moja praca jest.23 changes from repo XXX, 3 changes from repo YYY
lub coś bardziej zwięzłego w tym zakresie.Z powodzeniem korzystałem z wtyczki Multiple SCMs w połączeniu z wtyczką Git z Jenkins.
źródło
W zależności od relacji między repozytoriami, innym podejściem jest dodanie drugiego repozytorium (repozytoriów) jako podmodułów git do jednego z repozytoriów. Podmoduł git tworzy odniesienie do innych repozytoriów. Te repozytoria podmodułów nie są klonowane, chyba że użytkownik określi
--recursive
flagę podczas klonowania „superprojektu” (termin oficjalny).Oto polecenie dodania modułu podrzędnego do bieżącego projektu:
git submodule add <repository URI path to clone>
Używamy Jenkins w wersji 1.645, a git SCM zaraz po wyjęciu z pudełka wykona rekurencyjny klon dla superprojektów. Voila, otrzymujesz pliki superprojektu i wszystkie zależne (podmoduły) pliki repozytorium w ich własnych odpowiednich katalogach w tym samym obszarze roboczym Jenkins.
Nie poręczam, że jest to właściwe podejście, a raczej podejście.
źródło
Jenkins: wiele SCM - przestarzałe. Wtyczka GIT - nie działa dla wielu repozytoriów.
Skrypty / potok jako kod - to droga.
źródło
Ja też miałem ten problem. Rozwiązałem to używając Trigger / call builds w innych projektach. Dla każdego repozytorium nazywam projekt podrzędny za pomocą parametrów.
Główny projekt:
Następnie dla każdego repozytorium nazywam projekt podrzędny w następujący sposób:
Projekt podrzędny: Linux-Tag-Checkout:
źródło
Wyrejestrowanie więcej niż jednego repozytorium na raz w jednym obszarze roboczym jest możliwe dzięki wtyczce Jenkins + Git (może tylko w nowszych wersjach?).
W sekcji „Source-Code-Management” nie wybieraj „Git”, ale „Multiple SCM” i dodaj kilka repozytoriów git.
Upewnij się, że we wszystkich oprócz jednego dodasz jako „Dodatkowe zachowanie” akcję „Sprawdź do podkatalogu” i określ indywidualny podkatalog.
źródło
Używamy git-repo do zarządzania naszymi wieloma repozytoriami GIT. Istnieje również wtyczka Jenkins Repo, która umożliwia wyewidencjonowanie całości lub części repozytoriów zarządzanych przez git-repo do tego samego obszaru roboczego Jenkins.
źródło