Java + GitHub + Travis CI czyli darmowe continuous integration

W aktualnych czasach ciężko wyobrazić sobie proces wytwarzania oprogramowania bez CI (ciągła integracja). W środowisku JVM najpopularniejszymi narzędziami do ciągłej intergacji są Jenkins i Bamboo. Niestety przy małych projektach lub projektach typu open source nie chcemy wykupywać maszyn, aby uruchomić proces CI. Rozwiązaniem tego problemu jest darmowe narzędzie Travis CI, które jest cloud’owym systemem ciągłej integracji.

Github

Zanim zaczniemy stawiać pierwsze środowisko CI musimy zaopatrzyć się w repozytorium kodu. Rozwiązaniem bardzo dobrze współpracującym z Travis CI jest GitHub. Po założeniu konta możemy stworzyć repozytorium, które będzie wykorzystywane przez Travis’a. Nadajmy mu nazwę travis-example:

Projekt

Po stworzeniu nowego repozytorium możemy umieścić tam źródła. W naszym przykładzie dodamy prosty projekt Maven, który będzie zawierał dwie klasy. Jedną z tych klas będzie klasa pl.codecouple.Calculator:

class Calculator {
    
    int add(final int first, final int second) {
        return first + second;
    }
    
}

Natomiast w folderze src/test/java/pl/codecouple znajdzie się klasa testowa CalculatorTest:

class CalculatorTest {

    @Test
    void shouldReturnFive() {
        // Given
        Calculator calculator = new Calculator();
        // When
        int result = calculator.add(3, 2);
        // Then
        assertThat(result).isEqualTo(5);
    }

}

Odpalamy testy

Jeśli stworzyliśmy nowy projekt Maven musimy pamiętać o dodaniu pluginu, który będzie odpalał testy:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.0</version>
        </plugin>
    </plugins>
</build>

Włączamy integracje

Aby zacząć korzystać z Travis CI musimy założyć konto na https://travis-ci.org/:

Najlepiej połączyć nasze nowe konto Travis CI z Github’em klikając:

Po połączeniu naszego konta z Travis’em należy wskazać, które repozytorium chcemy wykorzystać w procesie budowania. Po wybraniu interesującego nas repozytorium przełączamy suwak obok:

Udało nam się włączyć ciągłą integrację dla naszego repozytorium. Teraz pora na wskazanie Travis’owi co i jak chcemy budować.

.travis.yml

W głównym folderze naszego repozytorium umieszczamy plik .travis.yml. Jest to plik, w którym konfigurujemy proces budowania. W naszym przypadku wystarczy wskazać, iż budujemy projekt związany z językiem Java:

language: java

Commitujemy i pushujemy wszystkie wprowadzone przez nas zmiany. Jeśli wszystko wykonaliśmy pomyślnie to pierwszy build (proces budowania) powinien odpalić się automatycznie:

Benefit

Wprowadźmy teraz zmianę w naszym kodzie, która powinna zepsuć proces budowania:

class Calculator {

    int add(final int first, final int second) {
        return first * second;
    }

}

 Commit, push i obserwujemy Travis CI:

Jak widzicie, Travis CI zwrócił nam informację o niepoprawnym zbudowaniu aplikacji.

Badge

Mechanizm Badge pozwala nam umieścić grafikę informującą o statusie naszego procesu budowania:

 

Najczęstszym rozwiązaniem jest wstawienie poniższego wpisu do pliku README.md naszego repozytorium:

[![Build Status](https://travis-ci.org/kchrusciel/travis-example.svg?branch=master)](https://travis-ci.org/kchrusciel/travis-example)

Gdzie w odpowiednie miejsca wstawiamy nazwę repozytorium oraz brancha.

Więcej

Będzie! Travis CI posiada bardzo dużo ciekawych funkcjonalności. Zapraszam do kolejnych wpisów po następne usprawnienia w naszym procesie budowania korzystając z darmowego Travis CI.

GitHub

Całość jak zawsze na GitHub’ie.

  • Artur Skrzydło

    polecam używanie pipelinow z GitLaba, używamy wtedy tylko Java + GitLab

  • kensshin985

    Super, czekam na więcej 😀 Kiedyś używałem darmowego CircleCI, czas wypróbować Travisa.
    Fajnie gdybyście wrzucali również kod z wykorzystaniem gradle (wiem, że robi się wszystko analogicznie ale mimo wszystko było by super)