Na rynku jest dostępna mnogość serwerów CI do wyboru. Nie dziwi więc, że GitHub zainwestował we własny. Jeżeli dodamy do tego ogromną ilość projektów trzymanych na GiHubie, to dobrze to wróżę :). Nie zwlekaj i sprawdź 7 rzeczy, które musisz wiedzieć o Github Actions.

1. Jest to serwer CI

Serwerów CI jest od groma. Ten jest kolejnym. Dzięki GitHub Actions zautomatyzujesz proces budowania i testowania aplikacji. Ponadto wygenerujesz i opublikujesz nowe wersje paczek. Wrzucisz je do releasów w GH, a także opublikujesz w repozytorium pakietów. Jakby tego było mało, jest darmowy dla OpenSource, ale to dla nikogo nie jest zaskoczenie. Prawda?

2. Integracja GitHub Actions

GitHub Actions jest częścią GitHuba … dość oczywiste. Ma to swoje konotacje, zarówno pozytywne, jak i negatywne. Jednym z przykładów jest duże znaczenie konwencji, tj. plik ma być w odpowiednim katalogu, tag o odpowiedniej strukturze. To owszem, sporo ułatwia, ale trzeba to poznać i się przyzwyczaić.

Natomiast niewątpliwą zaletą jest integracja z całą platformą. Używając GitHub Actions, możesz podpiąć się pod praktycznie każde zdarzenie w GH, a wyniki workflowów wykorzystywać w innych miejscach.

3. Konfigurowany jest w YAML

GitHub Actions nie posiada GUI do konfiguracji workflow. Natomiast posiada interfejs do przeglądania wyników. Na pierwszy rzut oka wydaje się to niepraktyczne. Jednak patrząc na to, mając na uwadze dłuższą perspektywę, ma to ręce i nogi.

Ponieważ konfiguracja GitHub Action jest zrealizowana w plikach YAML, trzymanych w repozytorium. Takie podejście ma masę zalet, które możesz sprawdzić w artykule o 7 powodach, dlaczego PaC jest dobre. Co prawda, początkowo możesz czuć się zagubiony, więc sprawdź kolejny punkt, gdzie opisuję co jest czym

4. Workflow jest plikiem

Pierwszym krokiem, jaki musisz wykonać w nowo poznanym narzędziu to zmuszenie go, aby napisał Ci „Cześć”. Jeżeli to Ci się uda, możesz planować zapanowanie nad światem.

W GitHub Action , jak już pisałem wyżej, dużo rzeczy opiera się na konwencjach. Jedną z tych konwencji jest to, że pliki konfiguracyjne workflowów muszą leżeć w katalogu .github/workflows. A jak może wyglądać przykładowy workflow? Już Ci pokazuję i objaśniam.

name: CI
on:
push:
branches: master
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run a one-line script
run: echo Dzień dobry!

Jeżeli masz ochotę przeglądnąć bardziej zaawansowane konfiguracje, sprawdź gotowe przykładowe konfiguracje.

5. Joby i stepy w GitHub Actions

Każdy workflow składa się z co najmniej jednego joba. Natomiast job, składa się przynajmniej jednego stepa. Job ma kilka, wartych zapamiętania, właściwości:

  • Za każdym razem odpala się na świeżym agencie.
    • Przynajmniej póki jest hostowany przez GitHuba
  • Jeżeli dodasz kilka jobów, domyślnie odpalają się one równolegle.
    • Warto o tym pamiętać. Możesz to wykorzystać do optymalizacji, ale może Cię to zaskoczyć, gdy będziesz chciał wykorzystać efekty wcześniejszych jobów
    • Natomiast można tę właściwość nadpisać. Używając właściwości needs

Natomiast step:

  • Jest pojedynczym krokiem, który możesz wykonać w jobie
  • Może nim być skrypt lub akcja
  • Poszczególne kroki są odpalane na tym samym agencie.
    • W związku z tym operują na tych samych plikach i mogą sobie je modyfikować i przygotowywać. 

6. Wreszcie tytułowe akcje 

Już 6 punkt, a my dopiero dochodzimy do tytułowych akcji. Czym jest akcja w GitHub Actions? Jest to najmniejszy blok jaki używasz do zdefiniowania workflow. A mówiąc bardziej po ludzku, jest to już gotowy klocek, który dodajesz do pipeline.  Przykładowe akcje, jakich możesz użyć:

  • actions/checkout@v2 – pobiera kod z aktualnego repozytorium w kontekście uruchomienia
  • cake-build/cake-action@v1.2.0 – odpala cake build
  • actions/create-release@v1 – tworzy release w github
  • actions/setup-node@v1 – konfiguruje node w konkretnym agencie

Akcji jest cała masa i prawdopodobnie znajdziesz to czego potrzebujesz. Jest do tego cały marketplace (https://github.com/marketplace?type=actions). Natomiast, jeżeli okaże się, że czegoć Ci brakuje to nic nie stoi na przeszkodzie, aby stworzyć własną akcje, ale o tym już kiedy indziej.

7. Do czego się nie nada

Jak wspomniałem w pierwszym punkcie, GitHub Action jest częścią GitHuba. Co za tym idzie, ma on pewne domyślne przeznaczenie, jakim jest tworzenie i publikowanie paczek. Natomiast jeżeli rozwijasz aplikację biznesową do której potrzebuejsz skonfigurować cały pipeline Continous Delivery to nie będzie to naturalny wybór.  Dlaczego? Ponieważ na chwilę obecną nie ma tam ładnego i przejrzystego mechanizmu pozwalajacego na zarządzanie deploymentem. Co nie znaczy, że się nie da. Da się, ale wymaga to kombinowania i trików.

A czy polecam GitHub Actions?

Jeżeli trzymasz kod na GitHub i publikujesz go jako paczki to tak. Jeżeli w dodatki jest to OpenSource to zdecydowanie tak. Natomiast, jeżeli rozwijasz aplikację użytkową i chcesz wdrażać często przy implementacji Ciągłego Dostarczania lub Ciągłego Wdrażania to raczej nie.

GitHub Actions wygląda ciekawie? Sprawdź alternatywę i dowiedz się
Czym jest Azure DevOps?

A jak u Ciebie?

Czy miałeś już przyjemność pracy z GitHub actions? Chcesz wiedzieć więcej o tym narzędziu?
Koniecznie zostaw komentarz. Pogadamy.