Co wspólnego ma CI/CD z Twoimi wakacjami?

Samolot szykujący się do startu o zachodzie słońca

Wyobraź sobie, że planujesz wakacje.

Masz bilet, walizkę, lecicie gdzieś daleko — wszystko musi zadziałać jak w zegarku.

Więc by wszystko zachowało się zawsze zgodnie z założonym planem wyobraź sobie, że lotnisko to nic innego jak pipeline CI/CD.

Dobra, ale co w ogóle oznacza ten skrót CI/CD?

CI – Continuous Integration

To tak naprawdę wszelkie prace związane z weryfikacją i poprawnością kodu, a także przygotowaniem do późniejszego wypchnięcia ich na środowisko.

Więc w przypadku naszego przykładu zaczynamy od przygotowania do lotu.

Każdy samolot czyli commit - wrzucenie zmian do repozytorium przez programistę (może być to mała zmiana w kodzie, dodanie całej funkcjonalności itd.) przed startem musi przejść dokładne kontrole:

1. Przegląd techniczny – czy wszystko działa jak trzeba?

→ W CI oznacza to budowanie aplikacji i testy jednostkowe.

2. Tankowanie paliwa – przygotowanie zasobów potrzebnych do działania.

→ W pipeline to instalacja zależności, pobieranie bibliotek, budowanie obrazu Docker.

3. Kontrola dokumentów i bezpieczeństwa – zanim samolot poleci, trzeba mieć pewność, że wszystko jest legalne i bezpieczne.

→ W CI to linting, security scan, SAST – czyli automatyczne sprawdzenie, czy nie wkradły się błędy lub podatności.

W CI chodzi o to, żeby każdy samolot był sprawny, zanim ruszy z hangaru. Sprawdzamy, czy nowe części (czyli kod) nie popsuły silnika, czy wszystko jest zatankowane i gotowe do drogi.

CD – Continuous Delivery / Continuous Deployment

No dobrze – samolot przeszedł wszystkie kontrole, czyli czas na wypchnięcie go z hangaru– czyli wdrożenie nowej wersji aplikacji.

Tutaj rozróżniamy dwie opcje:

Opcja 1 - Continuous Delivery

To sytuacja, gdy samolot stoi już na pasie startowym, gotowy do lotu.

Silniki pracują, pasażerowie siedzą, ale pilot czeka na pozwolenie z wieży. Oznacza to, że wdrożenie jest przygotowane, ale uruchamiane ręcznie.

Opcja 2 - Continuous Deployment

A to już lotnisko w pełni zautomatyzowane.

Każdy samolot, który przeszedł kontrolę techniczną, sam startuje – bez czekania na człowieka, tak jakbyśmy mieli samoloty bezzałogowe. To w pełni automatyczny deploy na produkcję po udanym buildzie i testach.

Podsumowując

Continuous Delivery to lot gotowy do startu, ale czeka na zgodę. Continuous Deployment to samolot, który sam startuje, gdy tylko wszystko działa.

Jak wygląda to w przypadku pliku?

Jak wygląda to w przypadku pliku pipeline, w którym definiujemy kroki naszego CI/CD - tak definiujemy to jako kod w plikach YML.

Przedstawmy to na przykładzie pipeline z GitHub Actions:

name: Short Flight CI/CD

on:
  push:
    branches: [ "main" ]        #  Nowy „lot” po pushu na main
  workflow_dispatch:            # Opcjonalny start ręczny

jobs:
  ci_preflight:                 #  CI — przegląd samolotu
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4             # Pobierz kod (samolot z hangaru)
      - uses: actions/setup-python@v5         #  To jakby włączenie pokładowych systemów
        # zanim zaczniemy właściwą kontrolę techniczną
        with: { python-version: "3.11" }
      - run: pip install -r requirements.txt  # Tankowanie samolotu i wsadzanie walizek
      - run: pytest -q                        # Testy przedlotowe

  cd_takeoff:                  #  CD — start na produkcję
    needs: ci_preflight
    runs-on: ubuntu-latest
    environment: production     #  wszystkie systemy sprawdzone i pilot (czyli pipeline)
    # czeka na sygnał z wieży kontroli lotów
    steps:
      - run: echo "Deploying..."              

Po kliknięciu Approve samolot startuje, czyli wdrażamy kod na produkcję.

Po co to wszystko?

Żebyś nie musiał ręcznie popychać samolotu.

CI/CD sprawia, że Twoje wdrożenia są:

Podsumowanie

Następnym razem, gdy będziesz siedział w samolocie i patrzył, jak obsługa techniczna robi swoje, pomyśl, że dokładnie to samo dzieje się z Twoim kodem, zanim trafi na produkcję.

I że dzięki CI/CD możesz być spokojny – każdy lot Twojej aplikacji będzie bezpieczny, sprawdzony i dokładnie zaplanowany.

← Back to all posts