Invoke - lista zadań
Biblioteka invoke do definiowania zadań:
Python1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25# tasks.py from invoke import task @task def test(ctx): """Uruchamia testy.""" ctx.run("pytest tests/") @task def lint(ctx): """Sprawdza jakość kodu.""" ctx.run("flake8 .") ctx.run("black --check .") @task def format(ctx): """Formatuje kod.""" ctx.run("black .") @task(pre=[lint, test]) def build(ctx): """Buduje projekt.""" ctx.run("python setup.py build") # Użycie: invoke test, invoke lint, invoke build
Makefile dla Pythona
Klasyczny Makefile dla automatyzacji:
MAKEFILE1 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.PHONY: help install test lint format clean help: @echo "Dostępne komendy:" @echo "make install- Instalacja zależności" @echo "make test - Uruchomienie testów" @echo "make lint - Sprawdzenie jakości kodu" @echo "make format - Formatowanie kodu" @echo "make clean- Czyszczenie plików tymczasowych" install: pip install -r requirements.txt test: pytest tests/ lint: flake8 . black --check . format: black . clean: find . -type d -name __pycache__ -exec rm -r {} + find . -type f -name "*.pyc" -delete rm -rf .pytest_cache .coverage htmlcov # Użycie: make install, make test, make lint
Fabric - zdalne zadania
Automatyzacja zadań zdalnych:
Python1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16# fabfile.py from fabric import task @task def deploy(c): """Wdraża aplikację.""" c.run("git pull origin main") c.run("pip install -r requirements.txt") c.run("systemctl restart myapp") @task def backup(c): """Tworzy backup bazy danych.""" c.run("pg_dump mydb > backup.sql") # Użycie: fab deploy, fab backup
Pipeline'y z zadania zależne
Tworzenie złożonych pipeline'ów:
Python1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24from invoke import task @task def clean(ctx): """Czyści pliki tymczasowe.""" ctx.run("rm -rf build dist *.egg-info") @task def test(ctx): """Uruchamia testy.""" ctx.run("pytest tests/") @task def build(ctx): """Buduje pakiet.""" ctx.run("python setup.py sdist bdist_wheel") @task(pre=[clean, test], post=[build]) def release(ctx): """Kompletny proces wydania.""" print("Proces wydania rozpoczęty") # Dodatkowe kroki # Użycie: invoke release (uruchomi clean, test, release, build)
Podsumowanie
Zarządzanie zadaniami w Pythonie obejmuje:
- Invoke do lokalnych zadań
- Makefile dla standardowych komend
- Fabric dla zadań zdalnych
- Pipeline'y z zależnościami między zadaniami
Te narzędzia standardyzują procesy i zwiększają powtarzalność w projektach Python.
➡️ Następny artykuł
Po opanowaniu zarządzania zadaniami, naucz się automatyzować CI/CD:
Automatyzacja CI/CD w Pythonie: GitHub Actions — kompletny przewodnik po automatyzacji testów, kontroli jakości kodu i wdrożeń z poziomu GitHub Actions.



