Ciągła integracja to kolejny logiczny krok po posiadaniu systemu kontroli wersji, takiego jak GIT i zdalny system kontroli wersji, taki jak Gitlab lub GitHub dla wspólnych przedsięwzięć. Problem, z którym borykają się duże projekty, polega na tym - w miarę jak nowe żądania ciągnięcia, muszą zostać przetestowane, a następnie zintegrowane z głównym oddziałem, a wysiłek ten może z łatwością zająć od kilku godzin do kilku tygodni, w zależności od wielkości projektu, lokalizacja członków zespołu itp.
Jak każdy taki problem, logicznym krokiem jest zautomatyza. Robimy to, konfigurując wyzwalacz w taki sposób, że ilekroć nowsze zatwierdzenia są scalone w oddział, agent (na przykład Gitlab Runner) automatycznie buduje środowisko i kod, uruchamia wszystkie testy jednostkowe i testy integracji przeciwko niemu. Jeśli pojawi się jakikolwiek błąd, daje to ostrzeżenie i raport awaryjny, w przeciwnym razie otrzymasz zielony sygnał, w którym wszystko działa.
Oczywiście, przeniesione do logicznej ekstremalnej skrajności, możesz również zautomatyzować wdrożenie, skonfigurować zautomatyzowane testy A/B i usunąć interwencję człowieka z procesu. To jest określane jako ciągłe dostawy i/lub ciągłe wdrażanie w zależności od poziomu automatyzacji. Ale skupilibyśmy się na ciągłej integracji w tym samouczku.
Wymagania wstępne
Skoncentrujemy się na skonfigurowaniu prostego przepływu CI w samouczku za pomocą instancji Gitlab nad HTTPS, którą omówiliśmy w poprzednim poście.
Dodatkowo zakładamy również, że skonfigurowałeś konto użytkownika w tej instancji Gitlab i masz repozytorium (sklonowany na lokalnym komputerze) zarządzany pod twoją nazwą użytkownika. To repozytorium będziemy używać do zademonstrowania przepływu pracy CI. W samouczku jego nazwa będzie mój projekt.
Aby to wszystko wymienić:
Tworzenie prostej aplikacji
W tym repozytorium utwórzmy prosty węzeł.Aplikacja JS. Ta aplikacja jest prostym ekspresem.serwer JS, który ma być wdrażany w kontenerze Docker. Serwer daje ładunek HTTP, mówiąc „cześć świat” w Twojej przeglądarce.
W korzeni lokalnego repozytorium utwórz plik App.JS i dodaj następujące wiersze:
„Użyj ścisłego”;Następnie utwórz inny plik pakiet.JSON i dodaj do niego następujące czynności:
Wreszcie, stwórz Dockerfile i dodaj do niego następującą zawartość:
Od węzła: 8Proces kompilacji tej aplikacji obejmowałby utworzenie kontenera węzłów i instalację zależności (jak Express.moduł JS). Ten proces powinien nastąpić bez żadnych błędów. Ze względu na prostotę nie będziemy omawiać żadnych testów w tym samouczku.
Gitlab Runner Pipeline
Teraz dodamy kolejny plik do naszego repozytorium, który byłby wywoływany .Gitlab-Ci.yml . Ten plik zawierałby instrukcje budowania naszego projektu. Teraz, za każdym razem, gdy naciskamy na naszą instancję Gitlab, Gitlab wywołałby biegacza do budowy i przetestowania projektu.
Przypisujemy ten rurociąg różny Oferty pracy które mogą działać niezależnie od siebie, dzięki czemu proces kompilacji jest bardziej elastyczny. Dla powyższego repozytorium jest to ważne .Gitlab-Ci.yml Utwórz ten plik w korzeni repozytorium:
Zdjęcie: węzeł: najnowszy
gradacja:
- zbudować
Pamięć podręczna:
Ścieżki:
- node_modules/
instalowanie_dependencje:
Etap: buduj
scenariusz:
- Instalacja NPM
Mamy tylko jeden etap zbudować I to po prostu Instalacja NPM jako skrypt. Jest to polecenie, które musisz ręcznie uruchomić za każdym razem, gdy zmiana przychodzi do twojego projektu. Biegacz Gitlab zrobiłby to za Ciebie. Runner może być zainstalowany w klastrze Kubernetes, VPS w chmurze lub na lokalnej stacji roboczej, a jeśli będzie aktywny, będzie czekał na instrukcje z serwera GitLab, aby wykonać kompilację.
Instalujemy i konfigurowaliśmy lokalnie biegacz, aby go zautomatyzować.
Uzyskanie tokenu biegacza
Otwórz swoje repozytorium na Gitlab i odwiedź jego ustawienia CD/CI. Jest to Ustawienia → CD/CI wewnątrz repozytorium testowego.
Pozostaw ustawienie Auto DevOps na jego domyślnie i kliknij ZWIĘKSZAĆ Aby rozszerzyć ogólne ustawienia rurociągu, a otrzymasz token biegacza. Skopiuj jego wartość i, oczywiście, zachowaj prywatność, jeśli cenisz swój projekt.
Korzystając z tego tokenu, Twój lokalny gitlab Runner Exceutable będzie mógł bezpiecznie zarejestrować się w instancji Gitlab.
Gitlab-Runner to mały lekki program napisany w Go, który działa powiązane z CI Oferty pracy na lokalnym komputerze i wysyła wyniki do Gitlab, aby rozważyć zmiany. Jest to pojedynczy plik wykonywalny, który można zainstalować na dowolnym głównym systemie operacyjnym. Postępuj zgodnie z instrukcjami tutaj, dla konkretnego systemu operacyjnego. Te instalacje różnią się dziko, więc wymienianie wszystkich jest niemożliwe.
Alternatywnie możesz użyć biegacza jako usługi Docker, ale trzymajmy się tradycyjnej instalacji, ponieważ polecenia są prostsze do odczytania i zrozumienia czytelnika. Po zainstalowaniu na lokalnej stacji roboczej musisz wykonać polecenie:
$ Gitlab-Runner Register
Zada ci to kilka pytań od koordynatora GITLAB-CI, który byłby twoją instancją Gitlab:
$ Gitlab-Runner Register
Wprowadź adres URL koordynatora GITLAB-CI (e.G. https: // gitlab.com/):
https: // gitlab.przykład.com
Poprosiłoby to o token biegacza, który uzyskaliśmy w poprzedniej sekcji:
Wprowadź token GITLAB-CI dla tego biegacza:
Your_Secret_TokenNastępnie w celu identyfikacji opisu i możesz po prostu pominąć dodanie dowolnego tagów, uderzając:
Wprowadź opis Gitlab-CI dla tego biegacza:
[Nazwa hosta]: demo konfiguracji CI za pomocą biegaczaWprowadź tagi GITLAB-CI dla tego biegacza (przecinek oddzielony):
Rejestracja biegacza… Udało mi sięCo najważniejsze, poprosi cię o wykonawcę (więcej o tym za chwilę), wybierzemy Docker ze względu na nasz przykład.
Wprowadź wykonawcę: Docker-Ssh+Machine, Kubernetes, Parallele, Shell, SSH, VirtualBox, Docker+Machine, Docker, Docker-Ssh:
dokerPodstawowy obraz dokera, w którym miałby miejsce kompilacja, należy następnie określić, nasza przykładowa aplikacja używa węzła, więc określamy obraz węzła:
Wprowadź domyślny obraz dokera (e.G. Ruby: 2.1):
Węzeł: najnowszyRunner zarejestrował się pomyślnie. Zapraszam do rozpoczęcia, ale jeśli jest już uruchomiony, konfiguracja powinna zostać automatycznie ponownie załadowana!
Teraz coś, co wymaga małego wyjaśnienia, jest to, co dokładnie są Wykonawcy? Sposób, w jaki przepływ pracy CI polega na tym, że budowanie modułów, ich testów itp Oferty pracy a wykonawcy wykonują te zadania. Jeśli wybrałeś VirtualBox jako wykonawcę, Gitlab Runner zintegrowałby się z lokalnie zainstalowanym VirtualBox i uruchomił zadania CI w maszynie wirtualnej, jeśli wybierzesz kubernetes, to wydarzy się w klastrze Kubernetes, w chmurze, jeśli możesz wybrać SSH, możesz delegować zadania CI na zdalny serwer.
Nasz przykładowy projekt opiera się na Docker, więc sensowne jest użycie Dockera jako naszego wykonawcy. Musisz mieć Docker zainstalowany lokalnie dla tego.
Posiadanie wielu opcji wykonawców sprawia, że biegacz jest bardziej elastyczny. Możesz zbudować lokalnie, ponieważ pliki projektu są zbyt duże lub możesz chcieć wykonać na zdalnym serwerze z 20 rdzeniami i połową terabajtu pamięci RAM, ponieważ proces kompilacji jest intensywny obliczeniowo, określenie opcji wykonawcy daje taką elastyczność.
Wreszcie, w swojej powłoce chcesz rozpocząć usługę biegacza:
$ Gitlab-Runner start
Widzenie .Gitlab-Ci.YML w akcji
Teraz dokonaliśmy wszystkich tych zmian w naszym lokalnym repozytorium, stworzyło całą aplikację.JS, pakiet.JSON, Dockerfile i .Gitlab-Ci.Pliki YML. Przypuszczalnie popełniłeś zmiany w lokalnym repozytorium, uruchamiając:
$ git scena_name_name
$ git commit -m „commit Message”
Przesuńmy zmiany do naszego zdalnego gitlab.
$ git push -u pochodzenie
Następnie możesz otworzyć swój projekt w Gitlab, przejdź do My-Project → Rurociąg I zobaczysz to tag z napisem „minął” obok dokonanego zobowiązania. Kolejne zatwierdzenia będą miały również tagi.
To są podstawy CI za pomocą Gitlab i Runner. Mam nadzieję, że podobał Ci się ten post i nauczyłeś się czegoś nowego.