2013-01-14 12 views
5

Mam multiproject Gradle hostowane w Mercurial repo. Chciałbym skonfigurować Jenkinsa w taki sposób, że jeśli zatwierdzę zmiany tylko w jednym podprojekcie, to tylko ten podprojekt zostanie zbudowany i opublikowany na moim repozytorium Nexus.Zbuduj multiprojekcja Gradle na Jenkinsie

Czy ktoś może dać mi wskazówkę? A może to w ogóle możliwe?

Odpowiedz

0

Opuszczamy nasze ostateczne rozwiązanie na przyszłość tutaj.

Dla każdego podprojektu stworzyliśmy oddzielne zadanie Jenkins. Mercurial plugin Jenkinsa pozwala określić «moduły»:

zmniejszenia niepotrzebnych buduje określając przecinkami lub spacjami listę «modułów» w obrębie repozytorium. Moduł to nazwa katalogu w repozytorium, w którym ten projekt żyje. Jeśli to pole zostanie ustawione, zmiany poza określone moduły nie spowodują uruchomienia kompilacji (mimo że całe repozytorium jest mimo to wyewidencjonowane ze względu na ograniczenie Mercurial.)

W ten sposób nasze zadania są uruchamiane tylko wtedy, gdy nastąpiła zmiana w podprojekcie monitorowania.

0

Zgaduję, że trzeba utworzyć projekt w jenkins dla każdego podprojektu.

Inną opcją jest znalezienie sposobu na przechwycenie synchronizacji repo i sprawdzenie, który podprojekt został zmieniony i dynamiczne tworzenie.

2

Mamy coś takiego działa.

Tworzymy projekt w Jenkins dla każdego podprojektu gradle. A w konfiguracji Jenkins budujemy tylko podprojektu robiąc coś takiego:

gradle clean :<subproject>:build 

Mamy jeszcze problem, że zadanie jest zwolniony za każdym checkins do całego projektu . Chciałbym skonfigurować Jenkinsa do kompilacji tylko wtedy, gdy do podprojektu przyjdzie checkin, ale nie wiem jak to określić.

Powiązane problemy