2017-02-22 13 views
8

Na przykład:Szablon Jenkinsfile dla wszystkich projektów

Mam 30 projektów multikanału Git. Wszystkie projekty mają własny plik Jenkinsfile. I nagle znalazłem fajną wtyczkę Jenkinsa, którą chcę dodać do wszystkich projektów. Jest to trudny do wykonania we wszystkich projektach i jest to duża strata czasu.

Czy można stworzyć podobny do Jenkinsfile szablon, który będzie czymś w rodzaju opakowania dla projektu Jenkinsfile lub czegoś podobnego, co daje mi możliwość zmiany w 1 miejscu zamiast w 30 miejscach?

Co chcę jest coś takiego:

stage { 
...} 
timestamps { 
    <include rest of stages definied in projects> 
} 
stage { 
... } 

plik szablonu, który jest w pewnym repo jest poszukiwany w ten sposób. Wszystkie projekty mają zdefiniowane własne etapy, które są zawarte w środku szablonu Jenkinsfile i zdefiniowane w projekcie.

Więc Jenkinsfile w projekcie należy: szablon

  • obciążenie z repozytorium
  • stopnie umieszczone w środku szablonu Jenkinsfile
+0

Powiązany przykład [Szablon rurociągu Jenkinsa] (https://stackoverflow.com/a/44070069/542251) – Liam

Odpowiedz

4

Można użyć:

+0

Myślę, że mogę go trochę wykorzystać. Mój pomysł: W projekcie będzie Jenkinsfile i na przykład Jenkinsfile_project. Normalny Jenkinsfile załaduje Jenkinsfile_template przy użyciu współdzielonych bibliotek lub pliku konfiguracyjnego. Ten szablon będzie miał charakter podobny do% i przy użyciu skryptu bash zastąpię go Jenkinsfile_project. To połączyło Jenkinsfile. Włożę folder do budowy. Po tym zbudowany Jenkinsfile zostanie załadowany za pomocą polecenia load i runned. – Kapitalny

5

Jak zawsze mówię,

Przyjaciele nie pozwalają przyjaciołom kod szablonu.

Generalnie moja ostatnia metoda pisania kodu, który z kolei generuje więcej kodu. Co więcej, nie jest to przydatne w twoim przypadku użycia.

To, o co pytasz, to "Mam kod, który chcę udostępnić między 30 Jenkinsfiles". Najlepszym sposobem na udostępnianie kodu jest oczywiście utworzenie wspólnej biblioteki i użycie jej z kodu.

Na szczęście this concept is fully supported in Jenkinsfiles. Gorąco polecam jego użycie w twoim przypadku użycia.Od akapitu wprowadzającego w linku podanym powyżej:

W przypadku przyjęcia większej liczby projektów w organizacji, najprawdopodobniej pojawią się wspólne wzorce. Często przydatne jest dzielenie się częściami rurociągów między różnymi projektami w celu zmniejszenia liczby zwolnień, a zachować kod "SUCHA".

Pipeline obsługuje tworzenie "bibliotek współdzielonych", które mogą być zdefiniowane w zewnętrznych repozytoriach kontroli źródeł i ładowane do istniejących potoków w postaci .

Następnie, po prostu zaktualizuj bibliotekę i wszystkie pliki Jenkins, które jej używają będą również aktualizowane. Możesz wersjonować swoją bibliotekę współdzieloną, a konfiguracja będzie o wiele łatwiejsza do debugowania.