PY-CI
CI/CD implementálása Python projekten
Ismertető
A képzés során megismerhető a CI/CD folyamata Python projekt példáján. GitHub, Jenkins, SonarQube és Nexus használatával automatizált pipeline-t építünk. Docker image-et készítünk, amit Kubernetes környezetbe telepítünk.
A tanfolyam célja, hogy a résztvevők átfogó képet kapjanak a modern szoftverfejlesztési és szállítási folyamatokról, különös tekintettel a Python projektekre. A képzés során a résztvevők saját kezűleg építenek fel egy teljes CI/CD pipeline-t, amely magában foglalja a kód verziókezelését, automatikus tesztelést, kódminőség ellenőrzést, csomagolást, konténerizációt és deployment-et Kubernetes környezetbe.
A gyakorlati megközelítés mellett a tanfolyam hangsúlyt fektet a DevOps kultúra megértésére és a best practice-ek elsajátítására. A résztvevők megismerik az iparági szabványokat, eszközöket és munkafolyamatokat, amelyek lehetővé teszik a gyors, megbízható és automatizált szoftverszállítást. A tanfolyam végére a résztvevők képesek lesznek önállóan CI/CD pipeline-t tervezni és implementálni Python projektekhez.
Kinek ajánljuk?
A tanfolyamot Python fejlesztőknek, DevOps mérnököknek és rendszergazdáknak ajánljuk.
Ez a tanfolyam neked szól, ha:
- Python fejlesztő vagy és CI/CD-t szeretnél tanulni
- DevOps mérnök vagy és Python projektekkel dolgozol
- Automatizálni szeretnéd a build és deployment folyamatokat
- Jenkins-t szeretnél használni CI/CD-hez
- Docker és Kubernetes-t szeretnél alkalmazni
- Kódminőséget szeretnéd javítani (SonarQube)
- Modern szoftverfejlesztési gyakorlatokat szeretnél elsajátítani
- Team lead vagy és CI/CD-t szeretnél bevezetni
Előnyök
- Gyakorlati tudás: Teljes CI/CD pipeline építése
- Iparági eszközök: Jenkins, Docker, Kubernetes, SonarQube használata
- Automatizálás: Build, test és deploy folyamatok automatizálása
- Kódminőség: Clean code, statikus analízis és tesztelés
- Modern DevOps: Konténerizáció és orchestration
- Produktivitás: Gyorsabb release ciklusok
- Karrierlehetőségek: DevOps és CI/CD készségek iránti erős piaci kereslet
Tematika
- Szállítási folyamatok (klasszikus vs modern megközelítés)
- Szoftver életciklus (development, testing, staging, production)
- Életciklus példa (valós projekt bemutatása)
- DevOps bevezetés (kultúra, gyakorlatok, előnyök)
- Docker példa (konténerizáció alapjai)
- Folyamatos szállítás (Continuous Delivery, CD)
- CD példa (automatizált deployment)
- Klasszikus problémák (manuális deployment, “works on my machine”)
- Folyamatos integrálás (Continuous Integration, CI)
- CI példa (automatizált build és test)
- Pipeline áttekintés (CI/CD pipeline elemei)
- Pipeline példa (end-to-end pipeline bemutatása)
- Build eszközök (összehasonlítás, Python specifikus eszközök)
- Fejlesztői környezet (IDE, tools, best practices)
- Projekt struktúra (Python projekt felépítése)
- Projekt létrehozása (cookiecutter, project templates)
- Függőségkezelés (pip, requirements.txt, Poetry, Pipenv)
- venv vs. global (virtual environment használata)
- Egyéb csomagkezelők (Poetry, Pipenv, Conda)
- Minta program (referencia projekt létrehozása)
- Tesztelés alapok (miért fontos a tesztelés)
- Tesztek típusai (unit, integration, e2e, acceptance)
- Tesztelés áttekintése (testing pyramid)
- Unit testing (unit tesztek írása Python-ban)
- pytest keretrendszer (modern Python testing framework)
- unittest keretrendszer (Python beépített test framework)
- pytest példa (egyszerű és összetett tesztek)
- Egyszerű pytest (assert alapú tesztek)
- Dokumentáció generálás (automatikus dokumentáció)
- Docstrings (Python dokumentációs stringek)
- Dokumentáció formátumok (Sphinx, reStructuredText, Markdown)
- CI/CD dokumentáció (dokumentáció build pipeline-ban)
- Pytest haladó (fixture-ök, paraméterezés, plugin-ek)
- Automatizált tesztek (CI pipeline-ban futó tesztek)
- TDD bevezető (Test-Driven Development)
- Pytest koncepciók (test discovery, assertions, markers)
- Fixture bevezető (setUp és tearDown pytest-ben)
- Fixture paraméterek (paraméterezett fixture-ök)
- Fixture használat (scope, autouse)
- OOP tesztelés (osztályok és metódusok tesztelése)
- Mockolás (unittest.mock, pytest-mock)
- Dependency Injection (DI tesztelésben)
- Clean code (tiszta kód elvek)
- PEP8 ismertető (Python style guide)
- PEP8 futtatása (flake8, pylint, black)
- Type hinting (Python type annotations)
- mypy statikus analízis (type checking)
- Kódlefedettség (coverage.py, pytest-cov)
- Kódellenőrzés (linter-ek használata)
- Csomagolás (Python package-ek)
- setuptools, wheel, twine
- PyPI publikálás
- CLI alkalmazások készítése
- Lokális telepítés és fejlesztés
- Docker alapok és architektúra
- Dockerfile készítés Python projekthez
- Image build és layer optimalizáció
- Docker Compose
- Container futtatás és hálózatok
- Git alapok és branching stratégiák
- GitHub / GitLab használat
- Pull/Merge request workflow
- pre-commit hookok
- GitLab CI/CD (.gitlab-ci.yml)
- Jenkins pipeline és Jenkinsfile
- Nexus bevezető és telepítés
- Privát PyPI repository
- Docker registry használat
- Artifact feltöltés és letöltés
- Jenkins telepítés és konfiguráció
- Pipeline as Code (Jenkinsfile)
- Multi-branch pipeline
- Build és deployment lépések
- Blue Ocean UI
- .gitlab-ci.yml pipeline
- GitLab Runner
- CI/CD environments
- SQLAlchemy ORM
- PostgreSQL Dockerben
- DB CRUD műveletek
- Kapcsolatok (relationships)
- Alembic migrációk
- Kubernetes alapok
- kubectl használat
- Pod, Node, Cluster
- Deployment és Service YAML
- Minikube lokális cluster
- Kódminőség analízis
- SonarQube telepítés Dockerben
- GitLab integráció
- Coverage és security analízis
- Postman használat
- Collection és environment kezelés
- Automatizált API tesztelés
- Newman CLI futtatás
- CI integráció (Jenkins / GitLab CI)
Szükséges előképzettség
- Python fejlesztési tapasztalat
- Virtuális környezetek (venv, virtualenv) kezelése
- Függőségkezelés (pip, requirements.txt)
- Git verziókezelő rendszer alapjai (clone, commit, push, pull, branch, merge)
- Linux/Unix parancssor használata (navigáció, fájlkezelés, jogosultságok)
- Bash vagy más shell scripting alapok
- HTTP protokoll és REST API alapfogalmak
- JSON és YAML formátumok olvasása és írása
- SQL nyelv alapjai (SELECT, INSERT, UPDATE, DELETE, JOIN)
- Relációs adatbázisok alapfogalmai
- Hálózati alapismeretek (TCP/IP, DNS, portok)
- Szövegszerkesztő vagy IDE használata Python fejlesztéshez
A tanfolyam közepes/haladó szintű, tapasztalt Python fejlesztőknek és kezdő DevOps mérnököknek készült. A résztvevőknek rendelkezniük kell szilárd Python tudással és képesnek kell lenniük önálló alkalmazásfejlesztésre. Command-line és Git ismeretek elengedhetetlenek a tanfolyam sikeres teljesítéséhez. Docker és Kubernetes előzetes tapasztalat hasznos, de nem kötelező, mivel ezeket a technológiákat a tanfolyam során részletesen áttekintjük.
Merre tovább?
- CI/CD folyamatokat tervezel és implementálsz
- Jenkins pipeline-okat építesz
- Docker image-eket készítesz Python alkalmazásokhoz
- Docker Compose-t használsz
- Kubernetes-ben deployolsz
- Minikube-ot használsz lokális fejlesztéshez
- GitLab CI/CD-t konfigurálsz
- Git branching stratégiákat alkalmazol
- Pre-commit hookokat használsz
- Nexus artifact repository-t üzemeltetsz
- SonarQube-ot használsz kódminőség ellenőrzésre
- pytest-et használsz unit és integration tesztekhez
- TDD-t (Test-Driven Development) alkalmazol
- Kódlefedettséget mérsz
- Type hinting-et használsz
- PEP8-at betartod
- Python csomagokat készítesz és publikálsz
- Postman-t és Newman-t használsz API tesztelésre
- Adatbázis migrációkat kezelsz (Alembic)