GitHub Actions – co to i dlaczego warto z tego korzystać?
W tym artykule znajdziesz wyjaśnienie podstawowych konceptów GitHub Actions, czyli dedykowanego GitHubowi narzędzia ciągłych integracji oraz dostarczania (ang. Continuous Integration/Continuous Delivery, CI/CD).
Karol Ciemborowicz. Starszy inżynier oprogramowania w Hyland. Entuzjasta Agile, zwolennik interdyscyplinarnych zespołów, lifelong learner; w branży IT od ponad dekady.
Same praktyki CI/CD są co prawda dobrze już ugruntowaną częścią pracy programistów. Ich pozytywny wpływ na jakość oprogramowania został wykazany (np. tu), na rynku nie brakuje też narzędzi wspomagających je (przykładowo: Jenkins, AWS CodePipeline, Azure DevOps, TeamCity czy GitLab CI).
Jednakże to właśnie Github Actions obecnie wyznacza coraz nowe poziomy odniesienia w kwestii łatwości obsługi i utrzymania. Od 2018 r. zespół Microsoft skutecznie wplata w nie najlepsze praktyki dziedziny wykorzystując swoje doświadczenie z prac nad Azure DevOps (starszą, bardziej dojrzałą alternatywą CI/CD). Platforma jest jednocześnie tworem nowym, świeżym, pozbawionym balastu zdezaktualizowanych już podejść i utrzymywanych jedynie dla wstecznej kompatybilności rozwiązań.
Przyjrzyjmy się czterem głównym cechom Github Actions, które moim zdaniem składają się na wyróżniającą to narzędzie prostotę, na przykładzie publicznego repozytorium trebuchet-action.
Spis treści
1. Integracja z GitHubem
Narzędzie jest domyślnie gotowe do użycia dla każdego repozytorium, nie wymaga instalacji, integracji czy osobnej konfiguracji uwierzytelniania. Spójne są także nazewnictwo i interfejsy użytkownika GitHuba oraz GitHub Actions.
Źródło: github.com/HylandSoftware
2. Infrastruktura w chmurze
Odpowiedzialność za środowiska uruchomieniowe GitHub Actions jest w całości po stronie GitHuba, który zarządza całą fizyczną infrastrukturą, pośredniczącym oprogramowaniem, dostosowuje moc obliczeniową do aktualnych potrzeb, a także zapewnia aktualizacje oraz bezpieczeństwo. Obowiązki użytkownika w zakresie infrastruktury w zasadzie sprowadzają się do wyboru wirtualnego środowiska spośród dostępnych:
Źródło: docs.github.com/en/actions/using-github-hosted-runners
3. Czytelna składnia
Narzędzie opiera się na czytelnym języku YAML i niewielkiej liczbie deklaratywnie używanych kluczowych pojęć. Podstawowymi elementami potoku zadań (ang. workflow) są zadania (ang. jobs), które z kolei składają się z kroków (ang. steps). Potoki mogą być uruchamiane ręcznie lub jako reakcje na zdarzenia zachodzące w repozytorium (np. otwarcie pull requesta). Pliki YAML definiujące potoki są także składowane bezpośrednio w repozytorium, a co za tym idzie również podlegają wersjonowaniu.
Zadania potoku można także enkapsulować w postaci tytułowych akcji w osobnych repozytoriach. Akcje mogą przyjmować postać skryptów powłoki lub programów w języku TypeScript/JavaScript. Zbiór akcji realizujących często stosowane kroki i rozwiązania (jak operacje na repozytorium, czy wersjonowanie lub udostępnianie artefaktów) jest współtworzony z GitHubem przez społeczność oraz publicznie dostępny, co dodatkowo usprawnia tworzenie nowych potoków. Używane w charakterze przykładu repozytorium trebuchet-action zawiera – nomen omen – właśnie implementację akcji.
Źródło: github.com/HylandSoftware
4. Czytelny status
Przejrzysta wizualizacja potoku zapewnia czytelność aktualnego statusu narzędzia, zależności pomiędzy składającymi się na nie akcjami, czasów ich trwania oraz wgląd w ewentualne błędy.
Źródło: github.com/HylandSoftware
Źródło: github.com/HylandSoftware
Prócz prostoty, GitHub Actions cechuje także mnogość innych nie mniej ważnych zalet, jak:
- Brak opłat dla repozytoriów publicznych (tak!) oraz comiesięczne bezpłatne okresy działania dla prywatnych, co umożliwia sprawdzenie narzędzia bez zobowiązań.
- Wbudowane lub dostarczone przez społeczność wsparcie dla wielu popularnych ekosystemów programistycznych, środowisk uruchomieniowych oraz technologii.
- Integracja z mechanizmami automatycznej aktualizacji zależności, skanowania kodu w poszukiwaniu niezabezpieczonych błędów, czy informowania o wyciekach danych wrażliwych, jak klucze dostępu.
- Skrócenie czasów budowania i testowania dzięki możliwości łatwego przyspieszania ich poprzez współbieżne wykonywanie niezależnych od siebie kroków.
Podsumowując, GitHub Actions ma wiele zalet, które przemawiają za tym, by właśnie skorzystać z tego, a nie z innego narzędzia. Świetna integracja z GitHubem, łatwa obsługa, przystępny model oraz dostępność działania zapewniają GitHub Actions niski próg wejścia. Wymienione wyżej zalety to tylko wierzchołek góry lodowej, jest ich zdecydowanie więcej. Poznacie je szybko, gdy zaczniecie korzystać z GitHub Actions.
Zdjęcie główne artykułu pochodzi z unsplash.com.