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:
- 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
. - Następnie tworzy znacznik w SVN (na przykład http://my-svn-repo/project/tags/V_2_0).
- Po utworzeniu tego tagu loguje się na nasz serwer Jenkins i rozpoczyna kompilację Release.
- Ta kompilacja zapyta go, który znacznik chce użyć do kompilacji. Zadanie jest skonfigurowane jako Parametryzowana kompilacja, z parametrem Lista znaczników Subversion.
- Jenkins następnie utworzy artefakty z tego znacznika i wdroży je na naszej instancji Nexus.
- 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 ...
Można również korzystać z niektórych modyfikacji mojego odpowiedź tutaj: http://stackoverflow.com/a/41632406/2886891 –