Jenkins Slack Notification

Jenkins

 228 

Jenkins Slack Notification to wpis poszerzający artykuł o pluginach w jaki sposób dokładnie podpiąć Slacka by móc otrzymywać powiadomienia. Dodatkowo propozycje korzystania z powiadomień z poziomu Jenkinsach w Waszej pracy. Po tym krótkim tekście, będziecie mogli w łatwy sposób zaimplementować tą funkcjonalność u siebie. 

 

Jak zacząć?

Jeżeli używacie w pracy komunikatora Slack i Jenkinsa, to połączenie jest idealne. Dzięki takiemu połączeniu będziecie mogli otrzymywać powiadomienia na Slacka ze swoich jobów. Przy takim połączeniu już nie będziesz musiał śledzić na jenkinsie czy Twój job się uruchomił, przeszedł pozytywnie, czy był błędy. Będziesz mógł też dodać w przypadku faila – jakie konkretnie testy miały faila.

 

Slack 

Na Slacku konieczne jest zainstalowane pluginu by móc umożliwić komunikację pomiędzy Jenkinsem a Slackiem. Drugim krokiem jest stworzenie kanału na Slacku na który będziecie wysyłać powiadomienia – chyba, że zależy Wam na wrzucaniu informacji na Wasze kanały komunikacyjnej. Ze względów jednak na testy i wypróbowywanie ustawień, zalecam założenie kanału w celu dopracowania działania. U nas będzie to kanał #testy_automatyczne. Po stworzeniu kanału konieczne jest dodanie bota jenkinsowego do kanału na który chcemy by przychodziły powiadomienia. 

Jenkins

Zakładam, że masz już jakieś joby na Jenkinsie i będziesz chciał/a usprawnić ich działanie poprzez dodanie powiadomień na Slacka. W pierwszej kolejności konieczne jest dodanie wtyczki z oficjalnej strony z pluginami:

link do pobrania wtyczki.

W konfiguracji pluginów konieczne jest ustawienie połączeń ze Slackiem, by Jenkins wiedział jak komunikować się z tym narzędziem. 

Job Jenkinsowy

Po wykonaniu powyższych czynności w ustawieniach joba, udaj się do sekcji Post-build Actions i wybierz Slack Notification. Waszym oczom ukażę się takie okno: 

W pierwszej kolejności warto sprawdzić połączenie Jenkinsa ze Slackiem, by mieć pewność, że połączenie jest nawiązane i można kontynuować pracę konfiguracyjne. 

Slack Nofication

Następnie w nagłówku Slack Nofication – wybieramy o jakich przypadkach Slack ma nas informować. Tutaj jest pełne pole do popisu Wasze i Waszego zespołu na czym Wam zależy. Uprzedzając pytania – jakie Ty powiadomienia dodajesz – odpowiadam – to zależy. Standardowe powiadomienia w jobach w ramach testów uruchamianych cyklicznie w ramach regresji – chcę otrzymywać tylko informacje o failach. Dlaczego?

a) Mając do obsługi wiele jobów, na jeden z kanałów otrzymuję informację o failu, gdyż wówczas – widzę, że świeci się kanał na slacku gdzie otrzymuje tylko i wyłącznie takie powiadomienia. Wówczas zapala się lampka by zweryfikować działanie danej funkcjonalności, serwisu objętego testami.

b) jest pewna grupa testów – np. testy wydajnościowe – gdzie chcę otrzymywać informację o jego rozpoczęciu i zakończeniu. Podobnie np. koledzy deweloperzy, czy ktoś związany z infrastrukturą. Wówczas wybieram opcje o uruchomieniu joba, jego zakończeniu pomyślnym czy też błędzie. 

c) jeżeli macie ograniczenia np. związane z wątkami na danym slave i zdarza Wam się, że ktoś (anuluje Wam joba), bo potrzebuje miejsca do uruchomienia swojego – dodaje informację na temat abort job. Kwestia wątków na Jenkinsie i ułatwienia priorytetyzowania jobów była już przedmiotem krótkich rozważań w dziale Jenkins

d) mamy też opcję, którą stosowałem przy małej ilości testów – back to normal – czyli po failu dla danego joba, gdy kolejny wykona się prawidłowo, otrzymamy stosowne powiadomienie. 

e) własna inwencja, uzależniona od Waszych projektów, specyfiki środowiska w którym pracujecie, współpracy z innymi testerami, deweloperami. 

 

Standardowe powiadomienie pokazuje nam nazwę joba, nr builda, oraz czas wykonania. Dodatkowo otrzymujemy link (Open), gdzie zostaniemy przekierowani do podsumowania wskazanego joba z testami które miały faila. 

Include Test Summary

Mamy też możliwość otrzymania w ramach joba podsumowania (Include Test Summary) – czyli krótkiej informacji. Prawidłowo wykonało się 9 testów, faila miało 3, a pomiętych było 0. 

Jenkins Slack Notification - slack

Tutaj dzięki takiemu powiadomieniu widzimy, że – na 12 testów, błędny rezultat jest w przypadku 3 – warto na to zwrócić uwagę. 

Include Failed Tests

Drugą kwestią, którą wartą zaznaczyć w ramach powiadomień to Include Failed Tests. Dzięki zaznaczeniu tego checkboxa, otrzymamy powiadomienia na temat które konkretnie przypadki testowe się nie wykonały poprawnie. Często w ramach ciągłej pracy i rozwoju wiemy, że np. trwały pracę nad jakimś elementem a my mieliśmy go otestowany wcześniej w poprzedniej implementacji. Wówczas dostaniemy powiadomienie na Slacka – masz faila na testach, to jest taki przypadek testowy. Wówczas bez zbędnego przerywania pracy możesz wiedzieć – tak, to ten element do którego test będę pisał po wykonaniu tego zadania, nie odrywam się od pracy. 

Jenkins Slack Notification - Include test

Include Custom Message

Kolejnym elementem jest Include Custom Message. Zaznaczając tego checkboxa pojawi Ci się cała lista możliwości dodawania informacji. Dzięki dodaniu takiej informacji, osoby nie wtajemniczone mocno w tematykę testów będą mogły dostać informację na temat joba. My też zamiast po statusie będziemy otrzymywać informację. Tutaj pełna dowolność czy będzie to opis, opis i adres url. Wszystko tak by powiadomienie było dla Was jak najbardziej czytelne i przekazujące jak najlepsza informacje.  Na powyższym screenie zanonimizowałem nazwę, ale widać, że każda osoba, nawet nietechniczna wie, że w danym teście coś nie działa poprawnie. 

Pippeline

Jest również możliwość konfiguracji powiadomień na Slacka dla pippeline. Wówczas wystarczy w jenkinsfile ustawić kanał na który mamy przesyłać informację, treść wiadomości i przypadki dla których ma być wysłana wiadomość. 

Podsumowanie

Jenkins Slack Notification to rozszerzenie przedmiotowego tematu z wpisu o pluginach dla Jenkinsa. Dzięki temu Wy jako testerzy, będziecie mogli ułatwić sobie życie. Wpis ten wychodzi na przeciw pytaniom jakie dokładnie czynności należy wykonać, by to współpraca na linii Jenkins-Slack była poprawna. O innych kwestiach związanych z Jenkinsem piszemy niniejszym dziale.