11

Konfiguruję Hudson, aby używał wtyczki wsadowej do wydawania maven w naszym wewnętrznym repozytorium. Robię to przez:Wydanie Mavena za pośrednictwem Hudson

mvn --batch-mode release:prepare 
mvn --batch-mode release:perform 

Interesują mnie inne metody, z których korzystali ludzie oraz zalety i wady tych metod. Poza tym, spotkały się z nami inne osoby.

Odpowiedz

8

I mają tendencję do zrobić uwolnień zawsze ręcznie z kilku powodów. Po pierwsze, jeśli musisz wycofać, łatwiej jest wrócić do pierwotnej lokalizacji wydania i zrobić to. Po drugie dlatego, że musisz rozwiązać wszystkie zależności migawki w ramach procesu.

Nasz proces rozwoju powoduje, że pozostawiamy zależności zewnętrzne względem bieżącej wersji w poprzedniej wersji, dopóki poprawka nie wymaga aktualizacji. Oznacza to, że jeśli zwalniam Nexusa, Mavena, itp., Widzę migawki i oznacza to, że muszę je najpierw zwolnić i zwolnić. Ten proces nie jest naprawdę możliwy do zautomatyzowania, ponieważ różni się w zależności od tego, co zmieniło się od ostatniej wersji.

To powiedziawszy, mamy specjalną maszynę (na Sonatype to tylko vm) konfigurację tylko dla buildów. Ma to na celu zagwarantowanie, że nie wystąpią żadne zmiany w środowisku, które mogłyby przypadkowo wpłynąć na konstrukcję (np. Zmiana jdk). Ułatwia także każdemu dostęp do procesu wydawania, ponieważ jest zawsze gotowy do pracy.

+3

Niestety wydaje mi się, że ręczne wydania są rozwiązaniem technicznie możliwym do zaakceptowania, ale politycznie niedopuszczalnym. Wspomnę, że starszy człowiek w Sonatype _osobisty_ zasugerował, że robimy nasze wydania ręcznie. – sal

+5

Alternatywą jest to, że robisz wydanie: przygotuj cel ręcznie lub przynajmniej wydanie: przygotuj -Ddryrun = true, dopóki nie jesteś wystarczająco pewny, że wszystkie kryteria są kompletne, to możesz rozpocząć proces budowania i być dość pewnym to zadziała. –

+2

Bardzo podoba mi się ten pomysł. Uwolnienie: przygotowanie -Ddryrun = true wykonywane w pierwszej kolejności powinno zapobiec większości problemów, które możemy mieć. – sal

0

Zawsze wywołał uwalnianie ręcznie oczywistych zalet i wad :-)

0

Eksperymentowaliśmy z wtyczką do wydania Hudson Maven, choć jestem trochę trudny, aby uzyskać odpowiednie premiery, bez złych rzeczy, takich jak hasła hardcoding do naszych plików kompilacji.

2

Ostatnio zwróciłem uwagę na wtyczkę m2lease. Wydawało się być miłe. Mimo wszystko, wolałbym, aby mój proces uwalniania był całkowicie "wolny od pom-trekingu". Co mam na myśli to, że musimy zapewnić 4 parametr wejściowy na przetwarzanie kompletne wydanie: (. Ex 1.0.0)

  1. wersja release
  2. nowa wersja rozwojowa (ex 1.0.1-. Zdjęcie) znacznik
  3. zwolnieniu SCM (np. uwalnianie 1.0.0 lub 1.0.0)
  4. ścieżka bazie znaczników na SCM

pierwszy 2 mają akceptowalne wartości domyślne. Wersja podskakująca na punkcie wersji naprawiającej błędy jest dla mnie zupełnie niezła.

Numer 4 można określić w pom. To się nie zmieni.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-release-plugin</artifactId> 
    <configuration> 
     <tagBase>https://example.com/svn/myProject/releases</tagBase> 
    </configuration> 
</plugin> 

To trzeci, który uniemożliwia mi pełną automatyzację wydania za naciśnięciem jednego przycisku. Tag etykieta domyślna uwolnienie nie zrobi to za nas więc trzeba określić go:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-release-plugin</artifactId> 
    <configuration> 
     <tag>release-${pom.version}</tag> 
     <tagBase>https://example.com/svn/myProject/releases</tagBase> 
    </configuration> 
</plugin> 

Teraz, gdy to może być tylko to, co potrzebne, ja skończyć posiadające tag svn z -SNAPSHOT Pod koniec. :(Tak więc muszę przekazać parametr tagu w konfiguracji zadania Hudson, ponadto muszę go zmienić dla każdego wydanego wydania ... co nie jest dokładnie tym, czego potrzebuję.


Więc w końcu, mając Typ projektu Maven2 w Hudson + wtyczki m2release hudson + uwalnianie maven plugin poprawnie skonfigurowany jest Matką wszystkich procesie uwalniania widziałem do tej pory. Chociaż nie była idealna, uratowało mi to wiele pracy.

JS.

+0

Obecna wersja wtyczki maven-release (2.2.1) ma nową funkcję, która rozwiązuje problem nr 3. Sprawdź sekcję "Zastąpienie domyślnego formatu nazwy znacznika" tutaj: http://maven.apache.org/plugins/maven-release-plugin/examples/prepare-release.html –

+0

W twoim pom.xml jest bardziej poprawny określ ' [email protected]{project.version}', w przeciwnym razie zostanie zastąpione przez wersję SNAPSHOT my Maven. –