Nasza strona używa cookies. Korzystając ze strony, wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki. Rozumiem

4 pomysły na automatyzację

Dmytro Khmelenko Senior Software Engineer / Freeletics
Poznaj kilka pomysłów na rozwiązywanie rutynowych problemów za pomocą automatyzacji.
4 pomysły na automatyzację

Ile razy przyłapujesz się na tym, że wykonujesz jakąś czynność rutynowo? Każdy z nas ma swoją codzienną rutynę. Praca przy rozwoju oprogramowania daje nam możliwość automatyzacji wielu procesów związanych z pracą, dlatego musimy być w stanie rozpoznać powtarzające się czynności i zaproponować sposób na ich automatyzację.

Zawsze wybiorę leniwą osobę do wykonania trudnej pracy, ponieważ leniwa osoba znajdzie łatwy sposób na jej wykonanie. - Frank B. Gilbreth Sr.

Niestety, nie każdy odpowiednio wybiera rzeczy nadające się do automatyzacji. Poniższa lista pomysłów dostarczy Ci inspiracji, co zautomatyzować w Twoim następnym projekcie.


Testy stylu kodowania

Osobiście czuję się poirytowany za każdym razem, gdy mój pull request nie przejdzie przez CI z powodu naruszenia stylów kodu. Mówię tutaj o niewłaściwych wcięciach, długościach ciągu znaków czy podobnych problemach. Oznaczałoby to, że muszę wrócić do problematycznego pliku, poprawić styl kodu, po czym zatwierdzić i wysłać zmiany. 

Nie jest tragicznie. Ale jeśli można to zautomatyzować, to dlaczego by tego nie zrobić? Zaoszczędzilibyśmy przynajmniej czas i skupilibyśmy się na rozwiązaniu problemu.

Używając git hooks, to zadanie może zostać zautomatyzowane. Git oferuje różne ilości hooków, np. aby wykonać akcję przed poleceniem commit, przed poleceniem push lub po zmianie gałęzi. Wszystkie hooki znajdują się w ścieżce .git/hooks i stosują odpowiednią konwencję nazewnictwa, taką jak pre-commit, post-checkout itp.

W naszym przypadku musimy utworzyć plik pre-commit w katalogu z hookami. Ten plik to skrypt powłoki. W nim piszemy komendę sprawdzającą styl kodu i zapisujemy ją. Od tej pory każda operacja commit będzie uruchamiała sprawdzenie stylu kodu. Jeśli wystąpi jakiekolwiek naruszenie, operacja commit zostanie przerwana, a my będziemy musieli to naprawić, żeby kontynuować. W ten sposób nigdy nie zapomnimy o przestrzeganiu wszystkich konwencji, zanim jeszcze wypchniemy kod


Automatyzacja na GitHubie

Jeśli używasz GitHuba do zamieszczania swojego kodu, istnieje kilka możliwości automatyzacji przepływu pracy. Automatyzacja oparta jest na hookach GitHuba. GitHub wywołuje zdarzenia przy różnych akcjach użytkownika, np. kiedy użytkownik zgłasza problem lub tworzy pull request. Poprzez hooki można subskrybować te zdarzenia.

Najprostszym sposobem na obsługę tych zdarzeń jest zaimplementowanie aplikacji Probot.  Probot jest frameworkiem służącym automatyzacji przepływów na GitHubie w oparciu o Node.js. Pozwala nam to pozbyć się powtarzalnego kodu. Musimy zaimplementować tylko funkcję handler, która otrzymuje callback na określone zdarzenie.

Zanim zaimplementujesz własną aplikację, sprawdź te już istniejące. Może się zdarzyć, że ktoś już zautomatyzował to, o co Ci chodzi. Przykłady istniejących automatyzacji:, zastosuj etykietę dla każdego nowego problemu lub zatwierdź pull request automatycznie po spełnieniu określonych warunków.


Lokalizowanie aplikacji

Lokalizacja aplikacji nie jest zadaniem łatwym. Szczególnie, gdy jest to proces ciągły, a tłumacze wciąż aktualizują teksty. Wszystkie aktualizacje muszą być regularnie integrowane z aplikacją.

W tym procesie występuje jednak pewna przeszkoda. Zazwyczaj różne aplikacje używają różnych formatów dla zlokalizowanych zasobów. Na przykład w systemie Android jest to format XML, a w Ruby on Rails jest to format YAML. Oznacza to, że tłumacze powinni znać te formaty i powinni wiedzieć, jak z nimi pracować. Takie podejście jest z góry podatne na błędy.

Takie zadanie również można zautomatyzować. Nie ma znaczenia, czy korzystasz z zewnętrznego narzędzia do zarządzania lokalizacjami, czy też z własnego systemu. Chodzi o to, aby wprowadzać nowe teksty, konwertować je do odpowiedniego formatu i integrować z kodem. Zautomatyzowanie tej części pracy zaoszczędza sporo czasu i, co ważniejsze, zapobiega powstawaniu literówek lub innych błędów związanych z formatowaniem.


Deployment

To zadanie wygląda raczej jak konfiguracja ciągłej integracji i ciągłego dostarczania, ale w rzeczywistości jest to automatyzacja w swojej czystej naturze. Po prostu zadaj sobie pytanie, ile razy przed scaleniem do głównej gałęzi lub przed deploymentem uruchamiasz wszystkie testy?

Jeśli Twój projekt nie uruchamia wszystkich testów na każdym pull request, to jest to pierwszy kandydat do automatyzacji. Wiele serwisów oferuje łatwą konfigurację do budowania projektów i uruchamiania testów. Dzięki takiemu podejściu upewnisz się, że kod w głównej gałęzi nie jest popsuty

Oprócz złożenia projektu i uruchomienia wszystkich testów, chcesz również wgrać zmiany tak szybko, jak tylko zostaną one scalone. Powinny być one wdrażane nie tyle na produkcję, co na środowisko testowe. To zadanie automatyzacji jest bardziej złożone, ale pozwoli zaoszczędzić sporo czasu. Z każdym scalonym pull requestem, nie musisz martwić się o ręczne wgrywanie kodu. Funkcja ta jest dostępna w zasięgu ręki.


Wnioski

Automatyzacja powtarzalnych czynności pomaga zaoszczędzić zasoby i skupić się na bardziej istotnych potrzebach produktu końcowego. Przyczynia się to do zwiększenia satysfakcji w pracy programisty. Automatyzacja może być wymagająca, ale gdy uda się ją wprowadzić, jest to powód do dumy i odetchnięcia.



Oryginał tekstu w języku angielskim przeczytasz tutaj.

Rozpocznij dyskusję

Lubisz dzielić się wiedzą i chcesz zostać autorem?

Podziel się wiedzą z 160 tysiącami naszych czytelników

Dowiedz się więcej