CI/CD z GitHub Actions: pierwszy workflow
Zapiszesz pierwszy workflow i rozpoznasz zdarzenie, job, runner oraz kroki wykonywane na zmianie kodu.
1. Krótka teoria
CI, czyli ciągła integracja, automatycznie sprawdza zmiany łączone we wspólnym repozytorium. CD oznacza automatyzację dostarczania lub wdrażania, lecz zakres zawsze trzeba nazwać dokładnie: przejście testów nie jest jeszcze wdrożeniem. GitHub Actions czyta pliki YAML z .github/workflows/. Klucz on wskazuje zdarzenia, na przykład push do main i pull_request kierowany do tej gałęzi. Workflow ma zadania jobs; każde zadanie działa na runnerze wskazanym przez runs-on. Wewnątrz zadania kroki steps wykonują polecenia przez run lub używają gotowej akcji przez uses. actions/checkout pobiera kod, a actions/setup-python ustawia Pythona. Zadania nie współdzielą automatycznie plików, dlatego przekazanie wyniku między nimi wymaga artifactu lub osobnego magazynu. Na początku ustaw permissions: contents: read, aby token workflow miał tylko potrzebne prawo odczytu. Po zapisie pliku sprawdź, czy zdarzenia odpowiadają rzeczywistemu procesowi branch i PR.
2. Przykłady komend
mkdir -p .github/workflows
Tworzy katalog, z którego GitHub odczytuje definicje workflow.
$ mkdir -p .github/workflows
cat .github/workflows/ci.yml
Pokazuje kompletny szkielet workflow uruchamianego dla main i PR.
name: orders-api-ci
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
jobs:
checks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- run: python --version
git status --short
Pokazuje, czy plik workflow należy do przygotowanej zmiany.
$ git status --short
git diff -- .github/workflows/ci.yml
Pozwala sprawdzić zmianę YAML przed przeglądem.
$ git diff -- .github/workflows/ci.yml
gh workflow list
Pokazuje workflow dostępne w połączonym repozytorium GitHub.
$ gh workflow list
gh run list --workflow ci.yml --limit 5
Pokazuje ostatnie uruchomienia danego workflow.
$ gh run list --workflow ci.yml --limit 5
gh run view
Pozwala wybrać uruchomienie i wyświetlić jego wynik.
$ gh run view
3. Zadanie praktyczne
.github/workflows/ci.yml dla orders-api. Ustaw on dla push do main i pull_request do main, permissions: contents: read oraz job checks na ubuntu-latest. Dodaj kroki checkout i setup-python z wersją Python 3.12, a potem krok python --version. Opisz, który element uruchamia workflow, który wybiera runner i gdzie zobaczysz wynik. Nie wysyłaj zmian do repozytorium w tym ćwiczeniu.
4. Typowe błędy
- Uznawanie przejścia testów CI za automatyczne wdrożenie produkcyjne.
- Mylenie zdarzenia on z poleceniem run.
- Zakładanie, że drugi job widzi pliki pierwszego bez artifactu.
- Nadawanie tokenowi workflow praw zapisu bez potrzeby.
- Umieszczanie definicji workflow poza .github/workflows.
5. Podsumowanie
Workflow określa zdarzenia, zadania, runnery i kroki. Checkout udostępnia kod, setup-python przygotowuje środowisko, a uprawnienia tokenu powinny być minimalne. CI weryfikuje zmianę przed dalszym dostarczaniem.