Skip to content

Jak przygotować pierwszy projekt CI w AWS CodeBuild?

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

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

Co to jest AWS CodeBuild?

AWS CodeBuild jest serwisem continuous integration, który kompiluje kod źródłowy, wykonuje testy i przygotowuje pakiety gotowe do instalacji. Przy wykorzystaniu CodeBuild nie musicie przygotowywać i zarządzać własnym serwerem do budowania. Co ważne rozwiązanie jest pełni skalowane i umożliwia z korzystanie innych serwisów i usług dostępnych w AWS takich jak secret manager czy zaawansowane zarządzanie uprawnieniami.

Przygotowania

Projekty w AWS CodeBuild korzystają ze kodu umieszczonego w repozytoriach GIT. W naszym poradniki wykorzystamy kod, który będzie znajdował się w serwisie GitHub. W związku z tym na początku upewnijmy się, że posiadamy już konto w GitHub.

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.

Podczas budowania projektu będziemy korzystać z obrazu docker dla Mavena. Obraz będzie pobierany z oficjalnego rejestru DockerHub. Niestety portal wprowadził ograniczenie co do ilości pobrań obrazów z rejestru. W praktyce nie będziemy mogli pobrać obrazu z poziomu usługi CodeBuild bez wcześniejszego zalogowania się do tego serwisu. Dlatego też konieczne jest utworzenie konta w tym portalu (https://hub.docker.com/signup)

Tworzymy secret dla DockerHub

Przed właściwym rozpoczęciem pracy stworzymy secret zawierający login i hasło do DockerHub. W tym celu przechodzimy w AWS na stronę „AWS Secrets Manager”. Tam klikamy na Store a new secret. Na nowej stronie wybieramy opcję Other type of secret. Poniżej wpisujemy w pole key/value dwa wiersze:

  • username – nazwa naszego użytkownika w DockerHub (to nie jest adres mailowy)
  • password – hasło dla naszego konta
AWS secret manager
AWS secret manager

Dla celów naszego poradnika pozostawiamy domyślny KMS Key (DefaultEncryptionKey). Potem przechodzimy do kolejnej strony (przycisk Next).

Na następnej stronie podajemy nazwę naszego secreta: DockerHub. Pozostałe opcje zostawiamy bez zmian i przechodzimy do następnych stron (2 x przycisk Next) a potem zapisujemy secret (przycisk Store).

Tworzymy pipeline w CodeBuild

Po utworzeniu secreta możemy przejść do właściwego tworzenia naszego pipeline’a. W tym celu przechodzimy na stronę CodeBuild i wciskamy przycisk Create build project.

Na następnej stronie podajemy nazwę projektu: MavenProject. Potem przechodzi niżej do sekcji Source. Tam wybieramy Source Provider Github a w Repository Connect using OAuth.

Później klikamy Connect to GitHub. W nowym oknie logujemy się do do GitHuba i zatwierdzamy uprawnienia AWSa do pobierania danych z konta.

Po zatwierdzeniu klikamy opcję Repository in my GitHub account a na liście GitHub repository wybieramy nasz sklonowany projekt.

Źródło dla CodeBuild
Źródło dla CodeBuild

W kolejnym kroku przechodzimy do panelu Environment. Tam wybieramy Custom image i Environment type: Linux. Później wybieramy Other registry i w pole External registry URL wpisujemy maven:latest.

W Registry credential wpisujemy DockerHub. Service Role i Role Name zostawiamy bez zmian.

Środowisko dla CodeBuild
Środowisko dla CodeBuild

Teraz przechodzimy do panelu Buildspec. Tam wybieramy Insert build commands i klikamy Switch to editor.

W nowym polu pojawi się definicja naszego pipeline’a. W to miejsce wklejmy nasz kod:

version: 0.2

phases:
  build:
    commands:
      - echo "Compiling the code..."
      - mvn clean package
      - echo "Compile complete."
  post_build:
    commands:    
      - ls -al
      - echo "Running tests"
      - java -cp target/helloworld-1.1.jar com.coveros.demo.helloworld.HelloWorld

Powyższy kod definiuje nam dwie fazy budowania i testowania naszej aplikacji:

  • build: tutaj budujemy nasz projekt w Mavenie
  • post_build: tutaj uruchamiamy nasz prosty test

Teraz przechodzimy na sam dół strony i zapisujemy projekt Create Build Project.

Na następnej stronie możemy uruchomić nasz projekt. W tym celu klikamy Start Build.

Gotowy projekt w CodeBuild
Gotowy projekt w CodeBuild

Po paru chwilach projekt powinien się zbudować. Aktualny status budowy można podejrzeć w zakładkach Phase details oraz Build logs.

Zbudowany projekt w CodeBuild
Zbudowany projekt w CodeBuild

Podsumowanie

W tym poradniku przedstawiłem Wam jak szybko można stworzyć pierwszy projekt w AWS CodeBuild. Sam proces tworzenia projektu nie powinien zając więcej niż 15 minut. Dodatkowo AWS udostępnia 100 minut budowania za darmo w miesiącu w ramach AWS Free Tier. Dzięki temu możemy sprawdzić czy to rozwiązanie jest właściwe dla nas bez ponoszenia kosztów.

Published inAWSCI/CDPoradnik

Be First to Comment

Dodaj komentarz

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