Cykl: Automatyzacja procesów z n8n — od danych do AI w jednym narzędziu · Część 10/20

Automatyzacja CI/CD w Pythonie: GitHub Actions

Kacper Sieradziński
Kacper Sieradziński24 stycznia 2025 · 1 min czytania
Streszczenie
  • Podstawowy workflow CI
  • Workflow z packaging
  • Kompletny pipeline CI/CD
  • Podsumowanie
Automatyzacja CI/CD w Pythonie: GitHub Actions

GitHub Actions to potężny system CI/CD zintegrowany bezpośrednio z GitHubem, który pozwala na kompleksową automatyzację testów, kontroli jakości kodu, buildowania pakietów i wdrażania aplikacji Python — wszystko z poziomu prostych plików YAML. Zamiast konfigurować osobne serwery CI/CD, możesz zdefiniować cały pipeline w repozytorium, co sprawia, że każdy commit może automatycznie uruchomić testy, lintowanie, sprawdzenie typów i inne kontrole jakości. To oznacza, że błędy są wykrywane natychmiast, kod jest zawsze zgodny ze standardami, a proces wydania nowych wersji jest w pełni zautomatyzowany i powtarzalny, co znacząco przyspiesza rozwój projektu i zwiększa jego niezawodność.

Podstawowy workflow CI

Podstawowy workflow do testów i lintowania:

YAML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 name: CI on: push: branches: [main, develop] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest strategy: matrix: python-version: [3.10, 3.11, 3.12] steps: - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt pip install pytest pytest-cov - name: Run tests run: | pytest tests/ --cov=src --cov-report=xml - name: Upload coverage uses: codecov/codecov-action@v3 with: file: ./coverage.xml lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: '3.11' - name: Install linting tools run: | pip install flake8 black isort - name: Run linters run: | flake8 src tests black --check src tests isort --check src tests

Workflow z packaging

Kurs · 24 lekcje8h 14m
Kurs

Kurs Python dla początkujących — PyStart

Zacznij programować w Pythonie! Idealne dla osób bez doświadczenia. Praktyczne zadania, projekty i wsparcie społeczności.

  • 24 lekcje wideo + 80 ćwiczeń
  • Realne bazy z e-commerce
  • Społeczność i code-review
499 zł799 zł−38%
Rozpocznij naukę

Workflow z buildowaniem i publikowaniem pakietu:

YAML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 name: Release on: release: types: [published] jobs: build-and-publish: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.11' - name: Install build tools run: | pip install build twine - name: Build package run: python -m build - name: Publish to PyPI env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} run: | twine upload dist/*

Kompletny pipeline CI/CD

Pełny pipeline z testami, lintem i deploymentem:

YAML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 name: Full CI/CD Pipeline on: push: branches: [main] pull_request: branches: [main] jobs: quality-gate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.11' - name: Install dependencies run: | pip install -r requirements.txt pip install pytest pytest-cov flake8 black isort mypy - name: Run tests run: pytest tests/ --cov=src --cov-report=xml - name: Type checking run: mypy src/ - name: Linting run: | flake8 src tests black --check src tests isort --check src tests deploy: needs: quality-gate runs-on: ubuntu-latest if: github.ref == 'refs/heads/main' steps: - uses: actions/checkout@v3 - name: Deploy run: | echo "Deployment steps here" # Twój kod deploymentu

Podsumowanie

Newsletter · co środę

Python co tydzień — newsletter dla programistów

Otrzymuj codzienne ćwiczenia, ciekawostki z ekosystemu Pythona i wskazówki do rozmów rekrutacyjnych.

2 312 czytelników · ⭐ 4,8

Automatyzacja CI/CD w GitHub Actions obejmuje:

  • Workflow'y CI do testów i lintowania
  • Publishing pakietów do PyPI
  • Quality gates przed deploymentem
  • Automatyczne deploymenty po testach

To kompletne rozwiązanie do automatyzacji procesów CI/CD w Pythonie.

➡️ Następny artykuł

Gratulacje! Opanowałeś kluczowe techniki automatyzacji w Pythonie. Jeśli chcesz pogłębić wiedzę, sprawdź pozostałe artykuły w sekcji automatyzacji:

Automatyzacja zadań w Pythonie — Praktyczne przykłady — dodatkowe przykłady i zaawansowane techniki automatyzacji.

Część 11 z 20

Automatyzacja Excela w Pythonie: odczyt, zapis, walidacja danych

druga lekcja cyklu „Automatyzacja procesów z n8n — od danych do AI w jednym narzędziu"

Czytaj kolejny →