2011-10-13 8 views
16

Obecnie poprawiam proces wydawania naszych projektów na Jenkins (1.430).Jak skonfigurować pojedyncze zadanie Jenkinsa, aby proces zwolnienia z gałęzi lub gałęzi?

Aktualne oferty pracy uwolnienia

Obecnie dla jednego konkretnego projektu, mamy jedno zadanie dedykowane do procesu wydania. Cała procedura jest następująca:

  1. deweloper, który jest odpowiedzialny za uwolnienie zmienia ręcznie wersję wszystkich plików pom.xml (w rzeczywistości z wykorzystaniem mvn versions:set -DnewVersion=2.0), aby pozbyć się -SNAPSHOT.
  2. Następnie tworzy znacznik w SVN (na przykład http://my-svn-repo/project/tags/V_2_0).
  3. Po utworzeniu tego tagu loguje się na nasz serwer Jenkins i rozpoczyna kompilację Release.
  4. Ta kompilacja zapyta go, który znacznik chce użyć do kompilacji. Zadanie jest skonfigurowane jako Parametryzowana kompilacja, z parametrem Lista znaczników Subversion.
  5. Jenkins następnie utworzy artefakty z tego znacznika i wdroży je na naszej instancji Nexus.
  6. Po zakończeniu tego procesu programista ustawia wersje pom.xml na nową wersję rozwojową (tj. 2.1-SNAPSHOT).

Zaletą tej metody jest to, że mam tylko pracę z Jenkinsem, ponieważ kompilacja będzie polegać tylko na tagach.

Jednak ta procedura wymaga zbyt wielu interwencji personelu (zmiany w pom.xml, commitach, tagach itp.).

Nowe miejsca pracy uwolnienia

Teraz używam wtyczki zwalniającą Maven. Utworzyłem pracę z pytaniem trzy informacje do użytkownika, który uruchamia produkcji:

  • wersję wydania (parametr releaseVersion wtyczki release);
  • wersję rozwojową, po wydaniu (parametr developmentVersion wtyczki wydania);
  • nazwa znacznika (parametr tag wtyczki wydania).

To zadanie działa poprawnie, z wyjątkiem jednego punktu: zadanie jest oparte na magistrali lub na gałęzi w SVN. Oznacza to, że jeśli mam 2 gałęzie (oprócz pnia), będę musiał utworzyć 3 zadania zwolnienia: jeden na oddział.

Jeden pomysł, aby zachować to, co najlepsze z dwóch światów (tj. Za pomocą wydania mvn, ale zachowując 1 zadanie wydania), aby dodać parametr kompilacji, który poprosi użytkownika o podanie ścieżki do gałęzi/gałęzi. Zamiast więc ustawić http://my-svn-repo/project/trunk (lub http://my-svn-repo/project/branches/BRANCH_V1) w konfiguracji zadania, ustawię http://my-svn-repo/project/$FROM_BRANCH i poproszę użytkownika o wprowadzenie parametru FROM_BRANCH.

Problem z tym rozwiązaniem polega na tym, że użytkownik musi wprowadzić trunk lub branches/BRANCH_Vx, co może prowadzić do błędów.

Idealnie, chciałbym mieć parametr gromadzeniu że Let Me Wybór branży (w tym bagażniku), jako parametr Lista Subversion tagów istnieją do wyboru tagów ...

więc moja pytanie: czy istnieje lepszy sposób konfigurowania jedno zadanie Jenkins, które może pracować na wszystkich oddziałów?

Dzięki.


Edit: Znalazłem Validating String Jenkins wtyczki, które mogą być interesujące, aby upewnić się, że wartość określona przez użytkownika narusza pewne wyrażenia regularnego. Jest to pomocne w moim przypadku ...

+0

Można również korzystać z niektórych modyfikacji mojego odpowiedź tutaj: http://stackoverflow.com/a/41632406/2886891 –

Odpowiedz

9

Potrzebujesz wersji 1.32 wtyczki subversion. Wersja issue JENKINS-10678 została zaimplementowana w tej wersji.

Następnie podajesz tylko adres URL projektu (który musi zawierać trunk, gałęzie i znaczniki), a następnie zaoferuje ci bagażnik wraz z oddziałami.

+0

dzięki! To prawie idealnie. Teraz zapewnia bagażnik, gałęzie i znaczniki. Chciałbym usunąć tagi, ale w każdym razie teraz jest całkiem dobrze. – romaintaz

+0

Czy filtr "tagów" byłby pomocny? –

+0

Nie próbowałem jeszcze, ale myślę, że to może pomóc, tak. – romaintaz

14

Wystarczy, że dodasz uwagi do odpowiedzi Piotra, jeśli nie znasz się na jenkinsa.

Wtyczka subversion jest instalowana domyślnie w najnowszych wersjach (jak na wrzesień 2015).

Następnie należy skonfigurować swój projekt w następujący sposób:

  1. wyboru „Ta kompilacja jest parametryzowane” (ten projekt jest parametryzowane w najnowszych wersjach)
  2. wybierz „tagów Lista subverion (i więcej)”
  3. w polu nazwy ustaw zmienną nazwę, do której można się później odwołać w urnie svn. Wybieram tutaj svnbranch.
  4. w polu URL repozytorium, nadać mu adres URL projektu (który musi zawierać pień, gałęzie i tagi)
  5. wypełnienia innego boiska potrzeb
  6. zarządzania kodem źródłowym, odwoływać się do zmiennej zdefiniowanej wcześniej w swojej URL repozytorium.

wyboru następujące screeny:

enter image description here

enter image description here

+0

Czy hak po zatwierdzeniu wywoła tę kompilację, jeśli użyjemy $ svnbranch? Po prostu ciekawy – user1164061