WIADOMOŚCI

Automatyzacja zarządzania wersjami Jira

Published on:22 / March / 2016

Jednym ze wspólnych celów oprogramowania jest automatyzacja powtarzających się zadań. Automatyzacja może zwiększać złożoność, ale może też znacząco obniżać koszty utrzymania i rozwoju. To prawdopodobnie główny powód, dla którego automatyzacja jest podstawą współczesnych praktyk w zakresie inżynierii oprogramowania, takich jak ciągłe testowanie, integracjai dostarczanie. Ciągłe testowanie opiera się na automatyzacji testów, ciągła integracja – na automatyzacji procesu budowy, zaś ciągłe dostarczanie – na automatyzacji całego kanału dostarczania oprogramowania.

W firmie Infobip śledzimy zmiany usług za pomocą zarządzania wersjami projektów w JIRA oraz używamy Stash do kontroli wersji. Na początku każda wersja tworzona była ręcznie, zwykle tuż przed wdrożeniem. Było to powtarzające się zadanie, które obejmowało sprawdzenie zatwierdzeń w kontroli wersji, utworzenie wersji w JIRA i powiązanie wydań z wersją. Dawało to znakomitą okazję do automatyzacji!

Analiza przepływu pracy

Aby dokonać automatyzacji procesu, należy przeanalizować ręczne kroki i określić wspólne wzorce. Do celów demonstracyjnych załóżmy, że mamy projekt oparty na Java, który wykorzystuje Maven. Rejestr zatwierdzeń po publikacji mógłby wyglądać mniej więcej tak:

Pierwsze i ostatnie zatwierdzenie to zatwierdzenie publikacyjne zawierające numer wersji. Zatwierdzenia pomiędzy zatwierdzeniami publikacyjnymi zawierają klucze wydań w komunikatach (które Stash oznacza w karcie Issues). Użytkownik, który chce utworzyć wersję w JIRA, utworzy nową wersję z wartością 1.1.0 i powiąże z wersją wydania MTP-1, MTP-2 i MTP-3, co da następujący skutek:

Wszystkie informacje wymagane do wykrycia zdarzenia publikacyjnego, numeru wersji i wydań w wersji można znaleźć w komunikatach zatwierdzeń. Logikę tego wzorca można ekstraktować do algorytmu, który po zatwierdzeniu wykonuje następujące działania:

1.Jeśli komunikat zatwierdzenia nie jest zgodny ze wzorcem zatwierdzenia publikacyjnego, publikacja nie następuje.
2.Ekstrakcja wersji z początkowego komunikatu zatwierdzającego.
3.Dla każdego zatwierdzenia po początkowym, wykonywane są następujące czynności: a. Jeśli komunikat zatwierdzenia nie jest zgodny ze wzorcem zatwierdzenia publikacyjnego, zatrzymać b. Ekstraktować klucze wydań
4.Utworzenie wersji w JIRA z wartością ekstraktowanej wersji.
5.Powiązanie ekstraktowanych wydań z utworzoną wersją.

Generator wersji JIRA

Generator wersji JIRA to bezpłatna, otwartoźródłowa wtyczka do Stash, która wykorzystuje API REST JIRA do automatyzacji wcześniej opisanego algorytmu z dodatkowymi funkcjami usprawniającymi proces automatyzacji.

Aktualnie, aby zainstalować wtyczkę trzeba pobrać plik .jar wtyczki z Maven Centrali zainstalować ją w swojej instancji Stash. Mamy nadzieję, że pewnego dnia wtyczka będzie dostępna w oficjalnym sklepie z wtyczkami Atlassian, dzięki czemu proces instalacji będzie bardziej przejrzysty dla użytkownika.

Po zainstalowaniu wtyczkę należy aktywować zgodnie z repozytorium. Po aktywacji wyświetli się następujące wyskakujące okno ustawień:

Jedynym wymaganym parametrem ustawień jest parametr klucza projektu JIRA, co powinno być jasne.

Parametr prefiksu wersji Jira definiuje prefiks, który będzie stosowany do każdej wersji wygenerowanej w JIRA. Może to być przydatne, gdy ma się jeden projekt JIRA i wiele artefaktów/repozytoriów do niego.

Wzorzec wersji zatwierdzenia publikacyjnego to ostatni parametr, który można wykorzystać do zdefiniowania wyrażenia używanego do uchwycenia wzorca zatwierdzenia wersji. Domyślna wartość wykorzystuje standardowy wzorzec wtyczki publikacyjnej Maven z założeniem, że projekt ma taką samą nazwę jak artefakt.

Podsumowanie

Za każdym razem, gdy wykonywane zadanie okazuje się powtarzalne i proste, warto rozważyć, jak można je zautomatyzować, aby ułatwić i usprawnić pracę.

Generator wersji JIRA jest przykładem, który ilustruje, jak można to zrobić w jednej małej części procesu programowania. Od momentu instalacji generator wersji JIRA pomógł wielu zespołom zmniejszyć liczbę żmudnych zadań podczas procesu publikacji i wdrażania. Dotyczy to również zespołów, które nie używają Maven ani Java.

Autor: Lovro Pandzic – inżynier oprogramowania / lider zespołu