Details zum E-Book

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

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

Christopher Cowell, Nicholas Lotz, Chris Timberlake

E-book

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!

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
  • 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
  • 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
  • Titel: 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
  • Autor: Christopher Cowell, Nicholas Lotz, Chris Timberlake
  • Originaler Titel: Automating DevOps with GitLab CI/CD Pipelines: Build efficient CI/CD pipelines to verify, secure, and deploy your code using real-life examples
  • Übersetzung: Łukasz Wójcicki
  • ISBN: 978-83-289-0776-8, 9788328907768
  • Veröffentlichungsdatum: 2024-06-11
  • Format: E-book
  • Artikelkennung: autmet
  • Verleger: Helion
  • Alterskategorie: 14+