Automatyzacja metodyki DevOps za pomocą potoków CI/CD GitLaba. Buduj efektywne potoki CI/CD do weryfikacji, zabezpieczenia i wdrażania kodu, korzystając z rzeczywistych przykładów - ebook
Automatyzacja metodyki DevOps za pomocą potoków CI/CD GitLaba. Buduj efektywne potoki CI/CD do weryfikacji, zabezpieczenia i wdrażania kodu, korzystając z rzeczywistych przykładów - ebook
Obecnie zasady i wzorce DevOps pozwalają na ograniczenie ryzyka związanego z budowaniem, zabezpieczaniem i wdrażaniem kodu. Programiści i wdrożeniowcy wiedzą, że zapewnienie funkcjonalnej poprawności, efektywności i bezpieczeństwa kodu jest czasochłonne i skomplikowane. Dużym ułatwieniem w tym zakresie mogą być potoki CI/CD GitLaba.
Dzięki tej książce poznasz od podstaw Gita i GitLaba. Dowiesz się, jak skonfigurować runnery GitLaba, a także jak tworzyć i konfigurować potoki dla różnych etapów cyklu rozwoju oprogramowania. Poznasz zasady interpretacji wyników potoków w GitLabie. Nauczysz się też wdrażania kodu w różnych środowiskach i korzystania z wielu zaawansowanych funkcji, takich jak łączenie GitLaba z Terraformem, klastrami Kubernetes czy uruchamianie i poprawa wydajności potoków. Skorzystasz ponadto z licznych przykładów i studiów przypadków, dzięki którym za pomocą potoków CI/CD zautomatyzujesz wszystkie etapy DevOps do budowy i wdrażania kodu o wysokiej jakości.
Najciekawsze zagadnienia:
- podstawy Gita, GitLaba i DevOps
- tworzenie, przeglądanie i uruchamianie potoków CI/CD GitLaba
- weryfikacja, zabezpieczanie i wdrażanie kodu za pomocą potoków CI/CD GitLaba
- runnery, DAG-i i logika warunkowa GitLaba
- najlepsze praktyki i metody rozwiązywania problemów w potokach CI/CD GitLaba
- przykłady cykli życia procesów rozwoju oprogramowania
DevOps. Wdrażaj zmiany szybko i bezpiecznie!
Spis treści
O autorach
O recenzentach
Przedmowa
Część 1. Rozpoczęcie pracy z DevOps, Gitem i GitLabem
- Rozdział 1. Zrozumienie okresu przed DevOps
- Wprowadzenie do aplikacji internetowej Hats for Cats
- Ręczne tworzenie i weryfikacja kodu
- Ręczne budowanie kodu
- Ręczna weryfikacja kodu
- Dodatkowe wyzwania związane z weryfikacją kodu
- Ręczne przeprowadzanie testów bezpieczeństwa kodu
- Statyczna analiza kodu
- Wykrywanie tajemnic
- Analiza dynamiczna
- Skanowanie zależności
- Skanowanie kontenerów
- Podsumowanie ręcznych testów bezpieczeństwa
- Ręczne pakowanie i wdrażanie kodu
- Skanowanie zgodności licencji
- Wdrażanie oprogramowania
- Problemy z ręcznymi praktykami w cyklu życia oprogramowania
- Rozwiązywanie problemów za pomocą DevOps
- Jak GitLab implementuje DevOps
- Podsumowanie
- Rozdział 2. Ćwiczenie podstawowych poleceń Gita
- Wymagania techniczne
- Dlaczego korzystać z Gita?
- Czym jest system kontroli wersji?
- Jakie problemy rozwiązuje system kontroli wersji?
- Dlaczego Git jest popularny
- Wady Gita
- Zatwierdzanie kodu, aby zachować go w bezpiecznym miejscu
- Wyłączenie plików z repozytorium
- Oznaczanie zatwierdzeń w celu identyfikowania wersji kodu
- Tworzenie gałęzi, aby rozwijać kod w oddzielnym miejscu
- Komendy Gita do zarządzania gałęziami
- Obsługa konfliktów scalania
- Synchronizacja lokalnych i zdalnych kopii repozytoriów
- "Złote" repozytorium
- Konfigurowanie zdalnych repozytoriów
- Wypychanie zatwierdzeń
- Pobieranie fetch
- Pobieranie pull
- Dodatkowe źródła do nauki Gita
- Podsumowanie
- Rozdział 3. Zrozumienie komponentów GitLaba
- Wymagania techniczne
- Kładziemy nacisk na "dlaczego" bardziej niż na "jak"
- Wprowadzenie do platformy GitLaba
- Czym jest GitLab?
- Jaki problem rozwiązuje GitLab?
- Etapy weryfikacji, zabezpieczania i wydawania
- Organizowanie pracy w projekty i grupy
- Przykład - organizacja pracy nad projektem Hats for Cats
- Śledzenie pracy za pomocą zgłoszeń
- Struktura zgłoszenia w GitLabie
- Rodzaje zadań, które mogą być reprezentowane przez zgłoszenia
- Etykiety
- Schematy pracy ze zgłoszeniami
- Bezpieczne edytowanie plików za pomocą zatwierdzeń, gałęzi i próśb o scalenie
- Historia zatwierdzeń
- Łączenie jednej gałęzi Gita z drugą
- Trzej amigos - zgłoszenia, gałęzie i prośby o scalenie
- Kiedy dwóch amigos wystarcza
- Czym różnią się zgłoszenia i prośby o scalenie?
- Korzystanie z praktyk DevOps za pomocą GitLab Flow
- Podsumowanie
- Rozdział 4. Opis struktury potoku CI/CD GitLaba
- Wymagania techniczne
- Definicje pojęć: "potok", "CI" i "CD"
- Czym jest potok
- Definiowanie jednego potoku na projekt
- Wyjaśnienie różnych znaczeń terminu "potok"
- Przeglądanie listy potoków
- CI - dowiedz się, czy Twój kod jest dobry
- CD - dowiedz się, gdzie powinien trafić Twój kod (i umieść go tam)
- GitLab Runnery
- Elementy potoku - etapy, zadania i polecenia
- Etapy
- Zadania
- Polecenia
- Łączenie elementów potoku
- Uruchamianie potoków CI/CD GitLaba
- Potoki dla gałęzi (ang. branch pipelines)
- Potoki dla tagów Gita
- Inne rodzaje potoków
- Pomijanie potoków
- Odczytywanie statusów potoków CI/CD GitLaba
- Konfigurowanie potoków CI/CD GitLaba
- Podsumowanie
Część 2. Automatyzacja etapów DevOps przy użyciu potoków CI/CD GitLaba
- Rozdział 5. Instalacja i konfiguracja GitLab Runnerów
- Wymagania techniczne
- Definicja GitLab Runnerów i ich związek z CI/CD
- GitLab Runner to aplikacja open source napisana w języku Go
- GitLab Runner uruchamia zadania CI/CD określone w pliku .gitlab-ci.yml
- Architektura runnera i obsługiwane platformy
- GitLab Runner jest obsługiwany przez większość platform i architektur
- Runnery mogą być specyficzne dla projektu, grupy lub współdzielone
- Każdy runner ma zdefiniowanego executora
- Tagi runnera określają, które runnery mogą wykonywać konkretne zadania
- Instalacja agenta runnera
- Instalacja GitLab Runnera
- Rejestracja runnera w GitLabie
- Rozważania dotyczące różnych typów runnerów i executorów
- Rozważania dotyczące wydajności
- Rozważania dotyczące bezpieczeństwa
- Rozważania dotyczące monitorowania
- Podsumowanie
- Rozdział 6. Weryfikacja kodu
- Wymagania techniczne
- Budowanie kodu w potoku CI/CD
- Kompilacja kodu Java za pomocą javac
- Kompilacja Javy przy użyciu narzędzia Maven
- Kompilacja języka C przy użyciu narzędzia GNU Compiler Collection (GCC)
- Przechowywanie skompilowanego kodu jako artefaktów
- Sprawdzanie jakości kodu w potoku CI/CD
- Włączanie funkcji jakości kodu
- Przeglądanie wyników funkcji jakości kodu
- Uruchamianie automatycznych testów funkcjonalnych na etapie dostarczania (CI/CD)
- Włączanie automatycznych testów funkcjonalnych
- Przeglądanie wyników automatycznych testów funkcjonalnych
- Testy fuzzingowe w potoku CI/CD
- Architektura i przepływ pracy testowania fuzzingowego
- Przepływ pracy testowania fuzzingowego
- Przeglądanie wyników testów fuzzingu
- Dodatkowe uwagi dotyczące testowania fuzzingu
- Testowanie fuzzingu z korpusem
- Sprawdzanie dostępności w procesie CI/CD
- Dodawanie testów dostępności
- Przeglądanie wyników testów dostępności
- Dodatkowe sposoby weryfikacji kodu
- Pokrycie kodu (ang. code coverage)
- Testowanie wydajności przeglądarki (ang. browser performance testing)
- Testowanie wydajności obciążeniowej (ang. load performance testing)
- Podsumowanie
- Rozdział 7. Zabezpieczanie kodu
- Wymagania techniczne
- Zrozumienie strategii skanowania bezpieczeństwa GitLaba
- GitLab korzysta ze skanerów open source
- Skanery są dostarczane jako obrazy Dockera
- Niektóre skanery używają różnych analizatorów dla różnych języków programowania
- Podatności nie zatrzymują potoku
- Wyniki pojawiają się w trzech różnych raportach
- Potoki mogą korzystać ze skanerów innych niż GitLab
- Korzystanie z SAST-a do skanowania kodu źródłowego pod kątem podatności
- Włączanie SAST-a
- Konfigurowanie SAST-a
- Przeglądanie wyników SAST-a
- Użycie wykrywania sekretów do znalezienia poufnych informacji w Twoim repozytorium
- Zrozumienie działania wykrywania sekretów
- Włączanie i konfigurowanie wykrywania sekretów
- Przeglądanie wyników wykrywania sekretów
- Korzystanie z DAST-a do wykrywania podatności w aplikacjach internetowych
- Zrozumienie działania DAST-a
- Włączanie i konfigurowanie DAST-a
- Przegląd wyników DAST-a
- Korzystanie ze skanowania zależności do wyszukiwania luk w zależnościach
- Zrozumienie skanowania zależności
- Włączanie i konfigurowanie skanowania zależności
- Przeglądanie wyników skanowania zależności
- Korzystanie ze skanowania kontenerów do wyszukiwania podatności w obrazach Dockera
- Zrozumienie skanowania zależności
- Włączanie i konfigurowanie skanowania kontenerów
- Przeglądanie wyników skanowania kontenerów
- Korzystanie z badania zgodności licencji do zarządzania licencjami zależności
- Zrozumienie badania zgodności licencji
- Włączanie i konfigurowanie badania zgodności z licencją
- Przeglądanie wyników badania zgodności z licencją
- Korzystanie ze skanowania IaC do wykrywania problemów w plikach konfiguracyjnych infrastruktury
- Zrozumienie skanowania IaC
- Włączanie i konfigurowanie skanowania IaC
- Przeglądanie wyników skanowania IaC
- Zrozumienie różnych rodzajów raportów bezpieczeństwa
- Zarządzanie podatnościami związanymi z bezpieczeństwem
- Integracja z zewnętrznymi skanerami bezpieczeństwa
- Podsumowanie
- Rozdział 8. Pakowanie i wdrażanie kodu
- Wymagania techniczne
- Przechowywanie kodu w rejestrze pakietów GitLaba w celu późniejszego wykorzystania
- Lokalizacja rejestrów kontenerów i pakietów GitLaba
- Rozpoczęcie pracy z rejestrem pakietów
- Obsługiwane formaty pakietów
- Uwierzytelnianie w rejestrze
- Budowanie i publikowanie pakietów w rejestrze pakietów
- Budowanie i przesyłanie pakietów do rejestru kontenerów
- Przechowywanie kodu w rejestrach kontenerów i pakietów GitLaba w celu późniejszego wdrożenia
- Korzystanie z obrazów z rejestru kontenerów
- Wykorzystanie pakietów z rejestru pakietów
- Wdrażanie w różnych środowiskach przy użyciu GitLab Flow
- Wdrażanie w narzędziu review app w celu testowania
- Wdrażanie w rzeczywistych środowiskach produkcyjnych
- Wdrażanie w klastrze Kubernetes
- Proces CI/CD
- Podejście GitOps
- Podsumowanie
Część 3. Następne kroki w doskonaleniu aplikacji za pomocą GitLaba
- Rozdział 9. Poprawa szybkości i łatwości utrzymania potoku CI/CD
- Przyspieszanie procesów za pomocą skierowanych grafów acyklicznych i architektury rodzic - dziecko
- Jak utworzyć DAG w potoku CI?
- Budowanie kodu dla wielu architektur
- Kiedy i jak wykorzystywać pamięć podręczną lub artefakty?
- Charakterystyka pamięci podręcznej
- Charakterystyka artefaktów
- Korzystanie z pamięci podręcznej
- Korzystanie z artefaktów
- Wykorzystywanie artefaktów jako zależności zadania
- Redukowanie powtarzającego się kodu konfiguracyjnego za pomocą zakotwiczeń i słowa kluczowego extends
- Zakotwiczenia
- Słowo kluczowe extends:
- Tagi referencji
- Poprawa zarządzalności poprzez łączenie wielu potoków oraz wykorzystywanie potoków macierzystych i potomnych
- Łączenie plików dla ułatwienia zarządzania
- Użycie opcji include: w celu uzyskania możliwości ponownego wykorzystania
- Dołączanie zdalnych zasobów
- Wykorzystywanie potoków macierzystych
- Zabezpieczanie i przyspieszanie zadań za pomocą kontenerów utworzonych w celu realizacji określonych zadań
- Przykład kontenera utworzonego w celu realizacji określonego zadania
- Podsumowanie
- Przyspieszanie procesów za pomocą skierowanych grafów acyklicznych i architektury rodzic - dziecko
- Rozdział 10. Poszerzanie zakresu potoków CI/CD
- Wykorzystywanie potoków CI/CD do wykrywania problemów wydajnościowych
- Jak zintegrować przeglądarkowe testy wydajnościowe?
- Jak zintegrować testy obciążeniowe z użyciem narzędzia k6?
- Korzystanie z flag funkcji umożliwiających wydawanie różnych aplikacji w zależności od decyzji biznesowych
- Jak skonfigurować aplikację pod kątem flag funkcji?
- Integracja narzędzi innych firm z potokami CI/CD
- Tworzenie pliku Dockerfile dla kontenera narzędziowego
- Automatyzacja procesu budowy kontenera
- Skanowanie kontenerów
- Wywoływanie narzędzia zewnętrznego
- Wykorzystywanie potoków CI/CD do tworzenia aplikacji mobilnych
- Wymagania
- Fastlane
- Fastlane - wdrożenie
- Fastlane - automatyzacja testowania
- Podsumowanie
- Wykorzystywanie potoków CI/CD do wykrywania problemów wydajnościowych
- Rozdział 11. Kompletny przykład
- Wymagania techniczne
- Konfiguracja środowiska
- Tworzenie projektu w GitLabie
- Planowanie pracy za pomocą zgłoszeń GitLaba
- Konfiguracja lokalnego repozytorium Gita
- Tworzenie kodu
- Tworzenie gałęzi Gita
- Tworzenie żądania MR
- Zatwierdzanie i przesyłanie kodu
- Tworzenie infrastruktury potoku
- Tworzenie potoku
- Tworzenie runnera
- Weryfikacja kodu
- Dodawanie testów funkcjonalnych do potoku
- Dodawanie skanowania jakości kodu do potoku
- Dodawanie testu typu fuzzing do potoku
- Zabezpieczanie kodu
- Dodawanie SAST-a do potoku
- Dodawanie wykrywania sekretów do potoku
- Dodawanie skanowania zależności do potoku
- Dodawanie badania zgodności licencji do potoku
- Integracja zewnętrznego skanera bezpieczeństwa z potokiem
- Doskonalenie potoku
- Korzystanie z DAG-a w celu przyspieszenia potoku
- Podział potoku na kilka plików
- Dostarczanie kodu do odpowiedniego środowiska
- Wdrażanie kodu
- Podsumowanie
- Rozdział 12. Rozwiązywanie problemów i przyszłość GitLaba
- Wymagania techniczne
- Rozwiązywanie problemów i najlepsze praktyki dotyczące powszechnych problemów spotykanych w potokach CI/CD
- Rozwiązywanie problemów związanych ze składnią i logiką CI/CD
- Rozwiązywanie problemów z działaniem potoku i przypisaniem runnera
- Zarządzanie infrastrukturą operacyjną przy użyciu GitOpsa
- Użycie Terraforma do wdrażania i aktualizowania stanu infrastruktury
- Użycie Ansible'a do zarządzania konfiguracjami zasobów
- Przyszłe trendy
- Automatyzacja stworzy więcej oprogramowania na większą skalę
- Abstrakcja prowadzi do modeli biznesowych opartych na pojęciu "wszystko jako kod"
- Skrócony czas cyklu rozwoju produktu pomoże zespołom wydawać lepsze oprogramowanie szybciej
- Podsumowanie i kolejne kroki
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-289-0776-8 |
Rozmiar pliku: | 8,3 MB |