Jak warunkowo budować inne projekty?

Mam dość skomplikowaną pracę Jenkinsa, która buduje, testuje jednostki i pakuje aplikację internetową. W zależności od sytuacji chciałbym robić różne rzeczy po zakończeniu tej pracy. Nie znalazłem sposobu, aby to zrobić ponownie. Czy tak naprawdę jest, czy coś mi brakuje?

Opcje, które chciałbym mieć po zakończeniu skomplikowanego zadania:

Nic nie robić

Uruchom mój rurociąg budowy o niskim ryzyku zmiany:

kopiuje mój plik WAR do mojego repozytorium artefaktówwdraża do produkcji

Rozpocznij budowę rurociągu o wysokim ryzyku zmiany:

kopiuje mój plik WAR do mojego repozytorium artefaktówwdraża się do testowaniaprzeprowadzić testy akceptacyjnewdrożyć do produkcji

Nie znalazłem łatwego sposobu, aby to zrobić. Najprostszym, ale niezbyt łatwym do utrzymania podejściem byłoby wykonanie trzech oddzielnych zadań, z których każde uruchamia kompilację niższego rzędu. Takie podejście przeraża mnie z kilku powodów, w tym z faktu, że zmiany należy wprowadzić w trzech miejscach zamiast jednego. Ponadto wiele zadań niższego rzędu jest prawie identycznych. Jedyna różnica polega na tym, które wywołujące zadania wykonują. Wydaje się, że rozprzestrzenianie się miejsc pracy doprowadziłoby do niezrównoważonego bałaganu.

Przyjrzałem się kilku podejściom, aby utrzymać to jako jedno zadanie, ale żadne z nich nie działało do tej pory:

Spraw, aby praca była projektem wielo-konfiguracyjnym (https://wiki.jenkins-ci.org/display/JENKINS/Building+a+matrix+project). Zapewnia to sposób wstrzyknięcia zadania za pomocą parametru. Nie znalazłem sposobu, aby krok „buduj inne projekty” odpowiadał parametrowi.

Użyj wtyczki Parameterized-Trigger (https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin). Ta wtyczka umożliwia uruchamianie zadań downstream w oparciu o określone wyzwalacze. Wyzwalacze wydają się jednak zbyt restrykcyjne. Wszystkie są oparte na stanie kompilacji, a nie na dowolnych zmiennych. Nie widzę tu żadnej opcji, która mogłaby działać w moim przypadku użycia.

Użyj elastycznej wtyczki publikowania (https://wiki.jenkins-ci.org/display/JENKINS/Flastic+Publish+Plugin). Ta wtyczka ma przeciwny problem jak wtyczka sparametryzowanego wyzwalacza. Ma wiele przydatnych warunków, które może sprawdzić, ale nie wygląda na to, by mógł rozpocząć budowę innego projektu. Jego działania ograniczają się do działań typu wydawniczego.

Użyj elastycznej publikacji + wtyczki dowolnego kroku budowania (https://wiki.jenkins-ci.org/display/JENKINS/Any+Build+Step+Plugin). Wtyczka Dowolny krok budowania umożliwia wykonanie dowolnej akcji kompilacji dostępnej dla wtyczki Elastyczna publikacja. Chociaż po aktywacji tej wtyczki udostępniono więcej akcji, działania te nie obejmowały „budowania innych projektów”.

Czy naprawdę nie jest to łatwy sposób? Jestem zaskoczony, że go nie znalazłem, a nawet bardziej zaskoczony, że tak naprawdę nie widziałem nikogo innego, kto próbowałby to zrobić? Czy robię coś niezwykłego? Czy jest coś oczywistego, czego mi brakuje?

questionAnswers(3)

yourAnswerToTheQuestion