DevOps i automatyzacja Średnio zaawansowany 70 min

Dostarczanie zmian i diagnostyka pipeline

Zaprojektujesz kontrolowane przejście od PR i testów do kandydata wydania oraz zdiagnozujesz błąd workflow.

Wróć do listy lekcji

1. Krótka teoria

Praca nad zmianą zaczyna się na osobnej gałęzi. PR uruchamia CI, a jego wynik jest bramką przed włączeniem kodu do main. Po zatwierdzeniu można zbudować wersjonowany obraz i zachować identyfikator commita oraz wynik testów. Artifact jest wynikiem workflow; nie powinien zawierać sekretów. Etap dostarczania może przygotować obraz i instrukcję wydania, a właściwy deployment wymaga osobnego joba zależnego od testów, jawnego wyzwalacza i kontroli środowiska. needs: checks wiąże job z wynikiem jakości. workflow_dispatch pozwala na ręczne uruchomienie; reguły środowiska GitHub mogą wymagać zatwierdzenia przed użyciem sekretów. Token GITHUB_TOKEN powinien mieć minimalne uprawnienia, a poświadczenia zewnętrzne należy pobierać z kontrolowanych sekretów lub krótkotrwałej tożsamości. Nie przekazuj ich do joba testującego nieufny PR. Przy niepowodzeniu znajdź pierwszą błędną fazę: trigger, runner, checkout, instalacja, test, build albo uprawnienia. Czytaj log konkretnego kroku i porównaj komendy z lokalnym wynikiem. Powtórne uruchomienie bez diagnozy może ukryć niestabilny test; wynik, commit i przyczynę zapisz przed kolejną próbą.

2. Przykłady komend

git status --short

Sprawdza stan zmian przed przygotowaniem PR.

$ git status --short
git rev-parse HEAD

Zapisuje dokładny commit związany z wynikiem CI.

$ git rev-parse HEAD
gh run list --limit 5

Pokazuje najnowsze uruchomienia workflow.

$ gh run list --limit 5
gh run view --log-failed

Pozwala wybrać uruchomienie i odczytać log nieudanych kroków.

$ gh run view --log-failed
gh run view

Otwiera szczegóły wybranego uruchomienia w CLI.

$ gh run view
needs: checks

Fragment YAML uzależniający job dostarczania od pozytywnego wyniku kontroli.

jobs:
  checks:
    runs-on: ubuntu-latest
    steps:
      - run: pytest
  delivery:
    needs: checks
    runs-on: ubuntu-latest
    steps:
      - run: echo 'Kontrole zakończone'

3. Zadanie praktyczne

Rozpisz dla orders-api drogę zmiany: branch, PR, wynik Ruff i pytest, budowa obrazu, identyfikator commita, kontrolowany job dostarczenia oraz osobna decyzja o wdrożeniu. W ćwiczeniowym YAML dodaj needs: checks i wyzwalacz workflow_dispatch dla etapu wymagającego decyzji operatora; nie dodawaj prawdziwego wdrożenia. Na przygotowanym nieudanym uruchomieniu znajdź pierwszy błędny krok przez gh run view --log-failed, zapisz przyczynę i lokalną komendę do odtworzenia problemu.

4. Typowe błędy

  • Udzielanie sekretów jobowi uruchamianemu dla nieufnego PR.
  • Uruchamianie joba dostarczenia bez zależności od kontroli jakości.
  • Mylenie artifactu lub obrazu z już wykonanym wdrożeniem.
  • Dawanie GITHUB_TOKEN szerokich praw zapisu bez uzasadnienia.
  • Ponawianie nieudanego pipeline bez analizy pierwszego błędnego kroku.
  • Brak zapisu commita odpowiadającego przygotowanemu wydaniu.

5. Podsumowanie

CI sprawdza PR, a późniejszy etap może przygotować wersjonowany wynik do dostarczenia. Job zależny od testów, kontrolowane sekrety i jawna decyzja ograniczają ryzyko wdrożenia. Diagnoza zaczyna się od pierwszego błędnego kroku i jego logu.

Flow nauki
  1. Teoria
  2. Przykład
  3. Ćwiczenie
  4. Quiz
  5. Praktyka
  6. Podsumowanie