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.