Miért van szükséged CI/CD pipeline-ra?
Ha a telepítési folyamatod úgy néz ki, hogy valaki SSH-zik a szerverre és kézzel futtatja a parancsokat — akkor minden telepítés egy kockázat. Elfelejtett lépések, eltérő konfigurációk, emberi hibák.
A CI/CD (Continuous Integration / Continuous Delivery) pipeline automatizálja ezt a teljes folyamatot: a kód megírásától az éles rendszerre kerülésig. Így:
- Minden telepítés azonos és megismételhető
- A hibák korábban kiderülnek (automatizált tesztek)
- Bárki telepíthet, nem csak a senior mérnök
- Van rollback — ha valami elromlik, egy kattintás visszaállni
A CI/CD pipeline rétegei
Egy jól megtervezett pipeline-nak öt rétege van:
1. réteg: Forráskód-kezelés
Minden a Git-tel kezdődik. Ha a kódod nincs verziókezelve, ott kell kezdeni.
Alapelvek:
- Branching stratégia — trunk-based development (rövid életű branch-ek) a legegyszerűbb és leghatékonyabb
- PR/MR review — minden változtatás átmegy code review-n
- Védett main branch — senki sem push-ol közvetlenül main-re
2. réteg: Continuous Integration (CI)
Minden PR-nál automatikusan lefutnak:
Build:
# GitHub Actions példa
- name: Build
run: docker build -t myapp:${{ github.sha }} .
Tesztek:
- Unit tesztek (gyorsak, minden PR-nál)
- Integrációs tesztek (lassabbak, de fontosak)
- Linting és kódminőség-ellenőrzés
Biztonsági vizsgálat:
- Dependency scanning (Dependabot, Snyk)
- Container image scanning (Trivy)
- Secrets detection (TruffleHog, GitLeaks)
3. réteg: Artifact Management
A sikeres build eredményeként létrejön egy artifact (konténer image, csomag):
- Konténer image push → ECR, GCR, Docker Hub, vagy Harbor
- Verziókezelés — git SHA vagy szemantikus verziószám
- Image signing — garantálja, hogy az image nem módosult
4. réteg: Continuous Delivery (CD)
Az artifact eljut a célkörnyezetbe. Itt két megközelítés van:
Push-based (hagyományos): A CI pipeline telepíti az alkalmazást. Egyszerű, de a CI rendszernek szüksége van a klaszter hozzáférésre.
Pull-based (GitOps): ArgoCD figyeli a GitOps repót, és automatikusan szinkronizálja az állapotot. Biztonságosabb, mert a klaszter húzza a változtatásokat.
Ajánlás: ha Kubernetest használsz, a GitOps/ArgoCD megközelítés egyértelműen jobb. Ha egyszerűbb az infrastruktúrád, a push-based is megfelel.
5. réteg: Környezetek és promóció
A tipikus környezet-hierarchia:
dev → staging → production
Promóciós szabályok:
- Dev: automatikus telepítés minden main merge után
- Staging: automatikus vagy manuális trigger, automatizált E2E tesztek
- Production: manuális jóváhagyás (vagy automatikus, ha elég érett a pipeline)
Gyakorlati példa: GitHub Actions + ArgoCD
Íme egy valós pipeline felépítés:
CI rész (GitHub Actions)
name: CI Pipeline
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run tests
run: make test
- name: Lint
run: make lint
build:
needs: test
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build and push image
run: |
docker build -t myapp:${{ github.sha }} .
docker push myapp:${{ github.sha }}
- name: Update GitOps repo
run: |
# Frissítjük az image tag-et a GitOps repóban
cd gitops-repo
sed -i "s|image: myapp:.*|image: myapp:${{ github.sha }}|" dev/deployment.yaml
git commit -am "Update dev to ${{ github.sha }}"
git push
CD rész (ArgoCD)
ArgoCD figyeli a GitOps repót és automatikusan szinkronizálja a dev környezetet. A staging és production promóció PR-rel történik.
Gyakori hibák
1. Túl bonyolult pipeline az elején
Kezdd egyszerűen: build, test, deploy. A többi (security scanning, performance testing, canary releases) később jön, amikor szükség van rá.
2. Nincs rollback terv
Minden pipeline-nak tartalmaznia kell egy rollback mechanizmust. GitOps-szal ez egy git revert. Push-based pipeline-nál definiáld előre.
3. Lassú pipeline
Ha a pipeline 30+ percig tart, senki sem fogja használni. Optimalizálj: párhuzamos futás, Docker layer cache, szelektív tesztek.
4. Titkok a kódban
Soha, semmilyen körülmények között ne tárold a titkokat (API kulcsok, jelszavak) a git repóban. Használj GitHub Secrets-et, HashiCorp Vault-ot, vagy AWS Secrets Manager-t.
Összefoglalás
Egy jó CI/CD pipeline nem luxus — alapvető szükséglet. Nem kell tökéletesnek lennie az első naptól. Kezdd egyszerűen, mérd az eredményeket, és iterálj.
A legfontosabb lépések:
- Git + branching stratégia rendbe tétele
- Automatizált build és tesztek beállítása
- Automatizált telepítés legalább dev környezetbe
- Monitorozás — tudnod kell, ha valami elromlik
- Fokozatos bővítés — security scanning, staging, production automation
Ha segítségre van szükséged a CI/CD pipeline tervezésében vagy implementálásában — beszéljünk róla. Az első konzultáció ingyenes.