CI/CD

Oto pełna definicja pojęcia CI/CD, fundamentalnego filaru współczesnej kultury DevOps, uporządkowana zgodnie z polem „Długa definicja”.

Pełna definicja CI/CD

CI/CD to metoda dystrybucji oprogramowania oparta na automatyzacji każdego etapu rozwoju. Skrót ten składa się z dwóch nieodłącznych części:ciągłej integracji (CI) i ciągłej dystrybucji/wdrażania (CD).

Celem jest umożliwienie programistom częstego publikowania aktualizacji w sposób niezawodny i bez ryzykownych interwencji ręcznych.

1. CI: Ciągła integracja (Continuous Integration)

Kiedy programista modyfikuje kod, „przesyła” go do wspólnego repozytorium (takiego jak GitHub). CI automatycznie uruchamia wtedy:

  • Budowa (Build): Kompilacja kodu w celu sprawdzenia, czy nie zawiera on błędów składniowych.
  • Testy jednostkowe: wykonywanie automatycznych testów w celu upewnienia się, że nowe zmiany nie zakłócają działania istniejących funkcji.
  • Walidacja: weryfikacja jakości kodu i zgodności z normami bezpieczeństwa.

2. CD: Ciągłe dostarczanie i wdrażanie (Continuous Delivery/Deployment)

Po zatwierdzeniu kodu przez fazę CI, część CD przejmuje kontrolę:

  • Continuous Delivery: Kod jest automatycznie przygotowywany do wdrożenia, ale wprowadzenie go do produkcji wymaga ostatecznej weryfikacji przez człowieka.
  • Ciągłe wdrażanie: każda zmiana, która przejdzie testy, jest natychmiast wysyłana do produkcji bez żadnej ręcznej interwencji.

Dlaczego jest to rewolucja?

Przed wprowadzeniem CI/CD aktualizacje były przeprowadzane co miesiąc „dużymi falami” i zawierały wiele błędów. Dzięki CI/CD:

  1. Ograniczenie ryzyka: Błędy wykrywa się w ciągu kilku minut, a nie kilku tygodni.
  2. Szybkość: nowe funkcje trafiają do użytkownika szybciej.
  3. Spokój: Wdrożenia w piątek wieczorem nie są już źródłem stresu, ponieważ wszystko jest zautomatyzowane i przetestowane.

Technologie i narzędzia

Aby wdrożyć proces CI/CD, zazwyczaj wykorzystuje się:

  • Narzędzia potokowe: GitHub Actions, GitLab CI, Jenkins lub CircleCI.
  • Konteneryzacja: Docker (aby zapewnić, że kod działa wszędzie w ten sam sposób).
  • Orkiestracja: Kubernetes.