Jak dostosować IBM UrbanCode Deploy do potrzeb organizacji?

[…]

Narzędzie do automatyzacji deploymentu IBM UrbanCode Deploy, poza podstawowymi funkcjonalnościami, pozwala na tworzenie rozszerzeń, które umożliwiają użytkownikowi dopasowanie narzędzia do potrzeb własnych i organizacji. Daje możliwość pisania skryptów bezpośrednio w kostce procesu (groovy) lub tworzenie pluginów. Najlepszym rozwiązaniem jest właśnie pisanie pluginów, ze względu na ich reużywalność w innych procesach lub aplikacjach. Tak naprawdę wszystkie kostki i elementy które są dostępne w UCD są pluginami, za pomocą których tworzymy procesy automatyzujące. Wartością dodaną jest możliwość pisania indywidualnych skryptów.

 

Wysokie wymagania naszych klientów sprawiają, że praca nad pluginami jest nasza codziennością. Modyfikujemy już istniejące oraz tworzymy całkowicie nowe rozwiązania. Na podstawie pluginu SetVersionStatus, służącego do nadawania statusu wersjom w celu promowania na kolejne środowiska, omówimy sposób w jaki pisze się pluginy w UrbanCodeDeploy. Plugin, który stworzyliśmy, powstał na potrzeby integracji Jira i UrbanCode Deploy. Integracja umożliwia w skrócie wywoływanie odpowiednich skryptów w UCD i otrzymanie statusu zwrotnego. Zaimplementowaliśmy 4 pluginy po stronie UCD i ułożyliśmy je w proces aplikacyjny o nazwie Jira oraz plugin stworzony po stronie Jira. Integracja została stworzona w celu wywoływania automatycznego deploymentu aplikacji z poziomu Jira.

 

 

Rozszerzenia do narzędzia składają się z kilku elementów. Sam skrypt piszemy w języku Groovy, czyli obiektowym języku skryptowym opartym na JAVIE i urozmaicamy kilkoma funkcjonalnościami takimi jak: domknięcia, przeciążenia operatorów czy operacje na kolejkach. Poza samym skryptem wykonującym konkretne zadania w skład pluginu wchodzą trzy pliki xml:

Plugin.xml
Info.xml
Upgrade.xml

 

Pierwszy plik xml czyli plugin.xml jest głównym plikiem konfiguracyjnym. Ten element ustala interfejs, odwzorowuje specyfikację działania i parametry wejściowy do wtyczki. Określamy tutaj elementy, które są widoczne przez użytkownika.

 

 

Jak widać na przykładzie, na początku pliku opisujemy id i nazwę pluginu, a w dalszej części definiujemy propertiesy, które będą następne widoczne w kostce dostępnej przy tworzeniu procesu. Określamy m.in. nazwę pola i wymagalność. Description określa opis działania pluginu. Ilość i rodzaj pól jakie definiujemy jest zależna tylko od autora i przeznaczenia rozszerzenia. SetVersionStatus do swojego działania potrzebuje informacji takich jak listy komponentów, loginy i hasła do UCD, listy komponentów i wersji oraz klucz do statusu wersji. Na końcu plugin.xml przeznaczone jest miejsce na wskazanie ścieżek do skrytpu. Dane zawarte w pliku info.xml określają autora, wersje i inne podstawowe informacje.

 

Plik upgrade.xml jest używany do wgrywania nowej wersji pluginu. Po zakończeniu prac na skryptem i plikami xml należy wszystkie pliki spakować do formatu .zip i przejść do UrbanCode Deploy w celu jego załadowania. W zakładce settings -> automation plugins jest widoczna lista pluginów wraz z opisem i wersją. W tym oknie także mamy możliwość załadowania nowego pluginu. Załadowaną wtyczkę możemy następnie wykorzystać tworząc proces, będzie ona dostępny na liście kostek dostępnych przy projektowaniu procesu.

 

Poniżej przykłady kilku innych wtyczek, które wykonaliśmy:

 

JDBC SQL Scripts

 

Głównym elementem jest tutaj plik kontrolny wraz z jego strukturą, zawierającą skrypty uruchamiane w odpowiedniej kolejności. Na początku następuje weryfikacja wszystkich połączeń bazodanowych używanych w pliku kontrolnym. W plikach properties określamy nazwę, plik wykonywalny sqlplus, lista plików kontrolnych wg. których będą uruchamiane skrypty, mapowanie identyfikatorów połączeń, mapowanie użytkowników baza hasło.

 

Przykładowy plik kontrolny:
sqlfile1.sql #RIT_DATABASE# rit continue
sqlfile2.sql #RIT_DATABASE# rit abort

 

Differential patch

 

Plugin służy do porównywania wersji. Jeżeli nastąpi próba zapatchowania niższej wersji niż jest obecna, proces zostaje przerwany wraz z wyświetleniem odpowiedniego komunikatu. Następnie wykonywana jest komenda svn diff na obu wersjach, a wynik działania jest zapisywany do pliku konfiguracyjnego.

 

Merge properties files

 

Plugin został stworzony w celu scalania plików properties. Wartości plików źródłowych są nadpisywane przez podane pliki z wartościami technicznymi i zapisywane w lokalizacji docelowej.

 

Zanim zabierzemy się za pisanie pluginu, warto odwiedzić stronę IBM i upewnić się, czy podobny plugin nie został już wcześniej stworzony. https://developer.ibm.com/urbancode/plugins/ibm-urbancode-deploy/

 

Obecnie na stronie dostępnych jest ponad 130 pluginów stworzonych przez użytkowników, jak i przez dostawcę oprogramowania. Możemy tam znaleźć naprawdę przydatne, gotowe rozszerzenia, służące np. do integracji narzędzia z innymi takimi jak Jira, HP Quality Center czy MS Sharepoint. Są to głównie serwery aplikacyjne, bazy danych, oprogramowanie do automatyzacji testów, systemy typu issue tracking czy platformy cloudowe. Część rozszerzeń, z których korzystamy, została już oficjalnie zaakceptowana przez IBM, pozostałe planujemy udostępnić do końca tego roku. Pluginy które są dostępnie na stronie są otwarte i możemy dostosować je do własnych potrzeb, modyfikując skrypt czy pliki xml.

 

 

2024-07-16

Czy IT lubi się ze sportem?

Przez lata utarło się przekonanie, że specjalista IT swój wolny czas najchętniej spędza, grając w szachy albo e-sporty, czyli np. gry sportowe czy zręcznościowe strzelanki na konsoli. Ten stereotyp jest bardzo odległy od współczesnych realiów, w jakich żyją przedstawiciele branży IT. Świadomi negatywnego wpływu pracy przed komputerem dbają o zdrowie i prowadzą aktywny tryb życia. Potwierdzają to badania, a także nasze obserwacje osób z zespołu Uniteam.
2024-06-12

Optymalizacja onboardingu i offboardingu pracownika: najlepsze praktyki zarządzania dostępami w firmie

W każdej firmie funkcjonuje tzw. cykl życia pracownika. Składa się on z kilku kluczowych etapów, ale w kontekście zwinności działania firmy oraz bezpieczeństwa danych szczególnie istotne są dwa: onboarding, czyli rozpoczęcie pracy w organizacji, oraz offboarding, związany z zakończeniem współpracy.
2024-05-10

Wytworzenie w Jira procesu akceptacji raportów czasu pracy

Projekt został zrealizowany w odpowiedzi na potrzeby klienta z branży telekomunikacyjnej. Firma T-Mobile posiadała rozbudowaną i zróżnicowaną strukturę IT. Klient korzystał z różnych form zatrudnienia pracowników od umów o pracę, przez umowy B2B, po współpracę z firmami outsourcingowymi. Struktura organizacyjna klienta opierała się na zespołach dziedzinowych, tzw. tribe'ach, takich jak analitycy czy developerzy. Członkowie zespołów dziedzinowych angażowani byli nie tylko w wewnętrzne, ale i w zewnętrzne projekty, często kilka w jednym czasie. W ten sposób tworzono oddzielne zespoły projektowe z dodatkową hierarchią zlecania i odbierania prac.