Skip to content

Jak stworzyć pierwszy projekt CI w GitHub Actions workflows?

Cześć. Dzisiaj zaprezentuję Wam jak możecie uruchomić swój pierwszy projekt CI w GitHub Actions workflows.

Ten artykuł wchodzi w skład cyklu prezentującego jak zacząć pracę w popularnych narzędziach CI/CD. W ramach tego wpisu pokażę Wam jak przygotować proces budowania oraz testowania prostego projektu opartego na Mavenie.

Czym jest GitHub Actions workflows?

GitHub Actions workflows są usługą portalu GitHub, dzięki której można uruchomić proces składający się z jednego lub więcej zadań. Procesy te można wykorzystać jako składniki Continuous Integration i Continuous Delivery dla naszych projektów.

Usługa ta działa w ramach portalu GitHub i bardzo dobrze integruje się z repozytoriami Git, które przechowywane są w nim przechowywane. Standardowo portal udostępnia GitHub Actions workflows jako usługę co powoduje, że nie trzeba się zajmować utrzymaniem samego systemu.

Usługa ta umożliwia budowanie projektów opartych o wiele różnych języków, m.in. : Python, Java, JavaScript, PHP, Ruby, C#, C++, i Go.

Unikalną cechą GitHub Actions workflows jest fakt, że procesy budowania składają się z kroków zwanych akcjami. Akcje te można pobierać ze oficjalnego sklepu https://github.com/marketplace?type= jak i z wielu repozytoriów dostępnych na GitHubie. Nie ma tez przeszkód aby stworzyć swoją akcję.

Przygotowania

Projekty w GitHub Actions workflows definiowane są w repozytoriach GIT umieszczonych w portalu GitHub. W związku z tym na początku konieczne jest posiadanie konta w tym serwisie.

Po ewentualnym utworzeniu konta w GitHub proponuję również utworzenie forka (kopii) repozytorium dostępnego pod adresem: https://github.com/czerniga/helloworld . W tym repozytorium zamieściłem prosty projekt Java, który posłuży nam jako kod źródłowy naszego projektu CI.

Nadajemy uprawnienia do uruchamiania akcji

Przed rozpoczęciem pracy nad procesem CI/CD musimy nadać uprawnienia do uruchamiania akcji w repozytorium. W tym celu przechodzimy do naszego sklonowanego repozytorium i klikamy na Settings.

Ustawenia w repozytroium GitHub
Ustawienia w repozytroium GitHub

Później w menu po lewej stronie wybieramy Actions -> General a potem Allow all actions and reusable workflows. Zapisujemy wybór klikając Save.

Ustawenia w GitHub Actions
Ustawienia w GitHub Actions

Po zapisaniu powinniśmy zauważyć, że pojawiła się nowa zakładka Actions. Po kliknięciu przejdziemy do ekranu, w którym możemy stworzyć nowy workflow.

Tworzymy pierwszy workflow
Tworzymy pierwszy workflow

Tworzymy workflow w GitHub

Aby stworzyć nowy workflow w repozytorium GitHub możemy utworzyć ręcznie nowy plik YAML w katalogu .github/workflows lub też wybrać predefiniowany szablon. W naszym przypadku skorzystamy z szablonu Java with Maven, który jest dostępny na głównej stronie akcji. Klikamy tutaj w przycisk Configure.

Po przejściu na nową stronę pojawi się nam edytor workflow. W przykładowym szablonie widzimy jedno zadanie o nazwie Build. Zadanie te ma na celu zbudowanie aplikacji Java za pomocą komendy mvn -B package –file pom.xml.

Edytor worflow
Edytor worflow

Naszym celem jest zbudowanie aplikacji i uruchomienie jej w celach prostego testu. Dlatego też przygotowałem rozbudowany workflow, który możecie zobaczyć poniżej.

name: Java CI with Maven

on:
  push:
    branches: [ "master" ]
  pull_request:
    branches: [ "master" ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Set up JDK 11
      uses: actions/setup-java@v3
      with:
        java-version: '11'
        distribution: 'temurin'
        cache: maven
    - name: Build with Maven
      run: |
        echo "Compiling the code..."
        mvn clean package
        echo "Compile complete."
    - name: 'Upload Artifact'
      uses: actions/upload-artifact@v3
      with:
        name: helloworld
        path: target/helloworld-1.1.jar
        retention-days: 5    

  test:
    runs-on: ubuntu-latest
    needs: build
    steps:
    - uses: actions/checkout@v3
    - name: Set up JDK 11
      uses: actions/setup-java@v3
      with:
        java-version: '11'
        distribution: 'temurin'
        cache: maven
    - name: Download a single artifact
      uses: actions/download-artifact@v3
      with:
        name: helloworld
    - name: Test
      run: |
        echo "Running tests"
        java -cp helloworld-1.1.jar com.coveros.demo.helloworld.HelloWorld

Powyższy workflow składa się z następujących elementów:

  1. name: nazwa naszego workflow
  2. on: definiuje kiedy workflow ma zostać uruchomiony. W naszym przypadku proces zostanie uruchomiony w przypadku akcji push i pull request na branchu master
  3. jobs: lista zadań w workflow
  4. build: definiuje nam zadanie budujące aplikację. Składa się ona z:
    1. runs-on: określa nazwę runnera, na którym będzie budowana aplikacja
    2. steps: kroki zadania. Mam tutaj cztery zadania:
      1. actions/checkout@v3 – pobranie kodu aplikacji
      2. Set up JDK 11: przygotowanie środowiska java
      3. Build with Maven: proces budowania aplikacji
      4. Upload Artifact: zapisanie zbudowanej aplikacji jako artefaktu
  5. test: definiuje nam zadanie testującą aplikację. Składa się ona z:
    1. runs-on: określa nazwę runnera, na którym będzie budowana aplikacja
    2. needs: build: tutaj mam wskazaną zależność pomiędzy krokami. W tym wypadku zadanie test zostanie uruchomione dopiero po zakończeniu zadania build.
    3. steps: kroki zadania. Mam tutaj cztery zadania:
      1. actions/checkout@v3 – pobranie kodu aplikacji
      2. Set up JDK 11: przygotowanie środowiska java
      3. Download a single artifact: pobranie artefaktu ze zbudowaną aplikacją z poprzedniego kroku
      4. Test: uruchomienie prostego testu

Podany powyżej workflow wklejamy w edytor tekstowy na stronie i zastępujemy oryginalny kod. Zmianę zapisujemy w repozytorium klikając w Start Commit. Jeśli chcemy to możemy dodać komentarz i opis. Zapisujemy commit klikając Commit new file.

Po zapisaniu pliku przechodzimy ponownie do zakładki Actions. Powinniśmy tutaj zobaczyć na stronie, że nasz workflow został już uruchomiony. Kliknijmy teraz w nazwę naszego pierwszego commita (domyślnie Create maven.yml) aby przejść do szczegółów naszego builda. Po kilkunastu sekundach powinniśmy zobaczyć, że nasze zadanie zostało zbudowane.

Pierwszy build w GitHub
Pierwszy build w GitHub

Jeśli chcemy to możemy przejrzeć pełne logi z budowania. W tym celu należy przejść do poszczególnych zadań dostępnych w lewym panelu. Tutaj mamy dostępne logi z wszystkich kroków.

Podsumowanie

W tym poradniku przedstawiłem Wam jak szybko można stworzyć pierwszy projekt w GitHub Actions workflows. Sam proces tworzenia projektu nie powinien zając więcej niż 10 minut.

Github udostępnia również wersję darmową tego narzędzia. W przypadku publicznych projektów możemy uruchomić proces budowania przez 2000 minut na miesiąc. To powinno wystarczyć do zweryfikowania czy te narzędzie jest dobra dla nas.

Published inCI/CDPoradnik

Be First to Comment

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *