🔄 CI/CD a DevOps
CI/CD Pipeline
Detailní pipeline stages
| Stage |
Nástroje |
Co se děje |
| Checkout |
git clone, fetch |
Stažení kódu z repozitáře, včetně submodulů |
| Lint |
ESLint, Prettier, RuboCop, golangci-lint |
Statická analýza kódu, formátování |
| Test (unit) |
Jest, pytest, JUnit |
Rychlé testy (ms až s), bez závislostí |
| Test (integration) |
Testcontainers, Docker Compose |
Testy s DB, message queue, externí služby |
| Test (e2e) |
Playwright, Cypress, Selenium |
Full-stack testy v prohlížeči |
| Build |
Docker build, go build, npm build, Maven |
Kompilace, sestavení artifactu |
| Scan (SAST) |
Semgrep, SonarQube, CodeQL |
Statická analýza bezpečnosti |
| Scan (DAST) |
OWASP ZAP, Burp Suite |
Dynamická analýza (běžící aplikace) |
| Scan (SCA) |
Dependabot, Snyk, Trivy |
Analýza závislostí a CVE |
| Publish |
Docker push, npm publish, Maven deploy |
Nahrání artifactu do registru |
| Deploy |
ArgoCD, Terraform, Helm, kubectl |
Nasazení do cílového prostředí |
Continuous Integration (CI)
- Automatické sestavení a testy při každém commitu
- Rychlá feedback smyčka (< 10 min)
- Linting, type checking, unit testy, security scan (SAST)
Continuous Delivery (CD)
- Automatické deploye do staging / test prostředí
- Ruční schválení do produkce (optional)
- Smoke testy po deployi
Continuous Deployment
- Plně automatický deploy do produkce
- Vyžaduje vysokou důvěru v testy a monitoring
- Feature flagy pro řízení rizika
GitHub Actions detail
Workflow syntax
Matrix builds
- Spouští stejné joby s různými parametry (OS, jazyková verze, architektura)
strategy.matrix — kombinace parametrů (kartézský součin)
strategy.fail-fast — zastavení všech při selhání jednoho
Reusable workflows
Composite actions
- Vlastní akce bez nutnosti samostatného repozitáře
- Kombinace
run, uses, shell kroků
- Use case: standardizace lint/test/build napříč repozitáři
Self-hosted runners
- Vlastní infrastruktura pro běh GitHub Actions
- Use case: privátní síť, GPU, specifický HW, compliance
- Škálování: actions-runner-controller (Kubernetes), auto-scaling groups
- Bezpečnost: izolace jobů, ephemeral runners
GitLab CI detail
Koncepty:
- Stages — sekvenční fáze (každá stage může mít více jobů paralelně)
- Rules — podmínky spuštění (branch, tag, changes, variables) — nahrazuje
only/except
- Needs — DAG závislosti (job nemusí čekat na celou stage)
- Artifacts — předávání souborů mezi joby (binárky, reporty, cache)
- Environments — sledování deployů (rollback, history, approvals)
DAG pipelines (needs)
- Definuje závislosti mezi joby (ne nutně stages)
- Umožňuje paralelizaci nezávislých jobů
- Snižuje celkový čas pipeline
Infrastructure as Code (IaC)
| Nástroj |
Typ |
Jazyk |
| Terraform |
Declarative |
HCL |
| OpenTofu |
Declarative |
HCL (fork Terraformu) |
| Pulumi |
Declarative |
TypeScript, Python, Go, C# |
| AWS CDK |
Declarative |
TypeScript, Python, Java, C# |
| CloudFormation |
Declarative |
YAML/JSON (AWS) |
| Azure ARM/Bicep |
Declarative |
Bicep, JSON |
| Ansible |
Imperative/Config |
YAML |
| Chef/Puppet |
Config mgmt |
Ruby DSL |
Terraform detail
State locking mechanism
| Backend |
Locking mechanism |
Poznámka |
| S3 + DynamoDB |
DynamoDB (ConditionalPut) |
Nejčastější, levný, jednoduchý |
| Terraform Cloud |
Built-in (API) |
SaaS, audit logy, VCS integration |
| Azure Storage |
Azure Blob Lease |
Podobný S3 modelu |
| GCS |
Cloud Storage Object Hold |
Omezené |
| Consul |
Consul KV session_lock |
High-availability |
| PostgreSQL |
pg_advisory_lock / row lock |
Vlastní backend |
State backends comparison
| Vlastnost |
S3 + DynamoDB |
Terraform Cloud |
Consul |
| Cena |
$ (S3 + DynamoDB) |
$$ (free tier omezený) |
$$ (infra) |
| Team workflow |
GitHub Actions + OIDC |
Native RBAC, runs |
Vlastní |
| Locking |
DynamoDB |
Built-in |
Consul session |
| History |
S3 versioning |
Full history, diff |
None |
| Remote ops |
Ne (pouze state) |
Ano (remote runs) |
Ne |
| Encryption |
SSE-S3/KMS |
At rest + in transit |
TLS |
Workspaces vs Terragrunt
| Aspekt |
Terraform Workspaces |
Terragrunt |
| Separace stavu |
Jeden backend, klíč: env:/workspace |
Samostatný backend per env |
| Code reuse |
Stejný kód, jiné proměnné |
DRY konfigurace, moduly |
| Riziko |
Omylem apply do špatného workspace |
Izolované backends |
| Kdy použít |
Jednoduché projekty, <5 env |
Mikroservice, multi-env, multi-team |
| Extra features |
— |
Dependency, include, before_hook |
Provider versioning
~> 5.0 — pouze patch verze (5.x, x ≥ 0)
>= 2.23, < 3.0 — jakákoli 2.x od 2.23
~> constraints zabraňují breaking changes v major/minor
Terraform workflow
State management
- Remote state (S3, Terraform Cloud, Azure Storage)
- State locking (DynamoDB, Consul)
- Workspaces pro oddělení prostředí
Dockerfile best practices
Pravidla:
- Multi-stage build — oddělení build tools od runtime
- Distroless images — minimal attack surface (žádný shell, package manager)
- Non-root user — USER nonroot (security best practice)
- Layer caching — nejdříve kopírovat málo se měnící soubory (package.json → npm ci → code)
- Small base image — Alpine (5 MB), distroless (minimální), scratch (Go static binary)
- Healthcheck — HEALTHCHECK instrukce pro orchestrátor
- Labels — LABEL maintainer, version, git commit
- .dockerignore — minimalizace build contextu
Artifact management
Docker registries
| Registry |
Public/Private |
Cena |
Integrace |
| Docker Hub |
Obojí |
Public free, private $5/měsíc |
GitHub Actions, GitLab |
| ECR (AWS) |
Private |
$0.10/GB/měsíc + data transfer |
IAM, ECS, EKS |
| GHCR (GitHub) |
Obojí |
Public free, private 500 MB free |
GitHub Actions, npm |
| GCR / Artifact Registry |
Private |
$0.10/GB/měsíc |
GKE, Cloud Build |
| ACR (Azure) |
Private |
$0.11/GB/měsíc |
AKS, Azure DevOps |
| Harbor |
Private (self-hosted) |
Zdarma (open source) |
Vlastní, CNCF |
Helm charts
- Repository — index.yaml + chart .tgz na HTTP serveru (S3, GitHub Pages, ChartMuseum)
- OCI registry — Helm 3.8+ podporuje uložení chartů v OCI registrech (ECR, GHCR, Harbor)
- Versioning — chart version (balíček) + app version (aplikace)
SBOM (Software Bill of Materials)
- SPDX / CycloneDX — standardní formáty SBOM
- Generování: Trivy, Syft, grype
- Use case: supply chain security, compliance (EO 14028, EU CRA)
Konfigurace a tajemství
| Nástroj |
Popis |
| Vault (HashiCorp) |
Dynamic secrets, encryption-as-a-service |
| AWS Secrets Manager |
Managed, auto-rotation |
| Azure Key Vault |
Managed, HSM podpora |
| GCP Secret Manager |
Managed |
| SOPS |
Encryption v git repos |
| Sealed Secrets |
Encrypted secrets pro Kubernetes |
Secret management workflows
Vault agent injector (Kubernetes)
- Sidecar container (vault-agent) injectuje secrets do podu
- Secrets mountovány jako tmpfs volume (ne do environment variables)
- Auto-rotation: vault-agent periodicky refreshuje secrets
External Secrets Operator (Kubernetes)
- CRD:
ExternalSecret → vytváří Secret v K8s
- Backend: AWS Secrets Manager, Azure Key Vault, GCP Secret Manager, Vault
- Push-based refresh: změna v externím store → propagate do K8s
Sealed Secrets
kubeseal zašifruje Secret na clusteru (controller má privátní klíč)
- Zašifrovaný manifest (SealedSecret) může být bezpečně v gitu
- Controller decryptuje při deployi
GitOps
- Princip: Git je jediný zdroj pravdy (single source of truth)
- Nástroje: ArgoCD, Flux, Rancher Fleet
- Pull-based deploy — agent v clusteru sleduje repo a aplikuje změny
- Auto-sync + drift detection
Environment promotion (dev → staging → prod)
Quality gates:
- Unit tests — pass rate 100 %, code coverage ≥ 80 %
- Integration tests — all critical paths pass
- SAST scan — no critical/high vulnerabilities
- SCA scan — no known critical CVEs
- Container scan — all fixable vulns addressed
- Smoke tests — po deployi na staging (health endpoint, basic flow)
- Manual approval — pro produkci (volitelné při CD)
Deployment strategie
| Strategie |
Popis |
Riziko |
| Rolling update |
Postupná výměna instancí |
Nízké |
| Blue/Green |
Dvě identická prostředí, přepojení trafficu |
Střední |
| Canary |
% trafficu na novou verzi, postupné zvyšování |
Nízké |
| Feature flag |
Zapnutí/vypnutí funkce bez deploye |
Velmi nízké |
| A/B testing |
Různé verze pro různé uživatele |
Nízké |
Git branching strategies
| Strategie |
Popis |
Vhodné pro |
| Trunk-based |
Jeden hlavní branch (main), krátké feature branche (< 1 den) |
CD, microservices, mature teams |
| GitHub Flow |
Main + feature branche, PRs, jednoduchý |
Startupy, web apps |
| GitLab Flow |
Main + environment branche (staging, prod) + feature branche |
Enterprise, regulated |
| GitFlow |
Develop + main + feature/release/hotfix branche |
Release-based, enterprise legacy |
| One Flow |
Zjednodušený GitFlow (bez develop branche) |
Střední týmy |
Rollback strategies
| Strategie |
Popis |
Rychlost |
Riziko |
| Forward fix |
Nový deploy s hotfixem |
Pomalá (build + deploy) |
Nízké |
| Rollback (revert commit) |
Revert gitu, nový deploy |
Střední |
Nízké |
| Blue/Green switchback |
Přepojení zpět na starou verzi |
Okamžitá |
DB inkompatibilita |
| Database rollback |
Reverze DB migrace (migrate down) |
Pomalá |
Data loss risk |
Database rollback challenges
- Breaking changes — odstranění sloupce/tabulky znamená rollback problém (data ztracena)
- Best practice: Expand → Migrate → Contract (nikdy neodstraňovat v jednom deployi)
- Tooling: Flyway undo (limited), Liquibase rollback, pgroll (Postgres)
- Feature flagy jako prevence — nový kód je za flagem, rollback = vypnutí flagu
CI/CD Design Patterns
Moderní CI/CD pipeline řeší opakující se problémy pomocí návrhových vzorů:
| Vzor |
Popis |
| Pipeline as Code |
Pipeline definovaná v YAML/Kotlin DSL (.gitlab-ci.yml, .github/workflows/) |
| Immutable Pipeline |
Každý build je artifact, nikdy se nemění |
| Quality Gate |
Branch protection, required checks, code coverage threshold |
| Deployment Strategy |
Blue/Green, Canary, Rolling (viz tabulka níže) |
| GitOps |
Pull-based deploy s auto-sync a drift detection |
| Shift-Left Security |
SAST/DAST/SCA součást pipeline |
| Dependency Caching |
Cache layer mezi běhy pipeline |
Shift left security
SCA (Software Composition Analysis)
| Nástroj |
Typ |
Integrace |
| Dependabot |
GitHub native |
GitHub, auto-PR na fix |
| Renovate |
Multi-platform |
GitHub, GitLab, Bitbucket |
| Snyk |
SaaS + CLI |
Všechny platformy, Docker, IaC |
| Trivy |
CLI, OSS |
CI/CD pipeline (GitHub Actions, GitLab) |
SAST (Static Application Security Testing)
| Nástroj |
Jazyky |
Charakteristika |
| Semgrep |
30+ (Python, Java, Go, JS/TS) |
Rychlý, custom rules, CI-native |
| SonarQube |
30+ |
Komplexní, quality gates, tech debt |
| CodeQL |
12 (C++, C#, Go, Java, JS/TS, Python) |
GitHub native, query-based |
| Checkmarx |
30+ |
Enterprise, CxSAST, CxFlow |
| Fortify |
30+ |
Enterprise, SAST + DAST |
Container scanning
| Nástroj |
Popis |
| Trivy |
OSS, skenuje OS packages + language-specific + IaC |
| Grype |
OSS, od Anchore, rychlý, Syft pro SBOM |
| Clair |
Red Hat, OSS, OCI-compatible |
| Docker Scout |
Docker Desktop / CLI, integrace s Docker Hub |
AI-Native Software Delivery (2025–2026)
AI transformuje DevOps 2.0:
- AI-assisted CI/CD — automatické diagnózy selhání pipeline, optimalizace resource alokace
- Agent Control Protocol (ACP) / Model Context Protocol (MCP) — standardy pro interakci AI agentů s toolingem
- AI-driven cost management — FinOps optimalizace cloudu
- Intelligent test selection — ML určuje, které testy spustit podle změn v kódu
- Self-healing pipelines — AI auto-detekuje a opravuje běžné problémy
Nové nástroje: Harness (AI-native CD), GitLab 19.0 (agentic MR workflows, secrets manager), Octopus Deploy.
Nástroje pro pipeline
- GitHub Actions — integrovaný s GitHubem, velký marketplace
- GitLab CI — nativní v GitLabu, auto DevOps
- Jenkins — nejstarší, extensible, self-hosted
- CircleCI — SaaS, rychlý
- Argo Workflows — Kubernetes nativní
- Buildkite — hybrid (vlastní agenti, SaaS orchestrator)
Best practices
- Idempotentní pipeline — opakované spuštění dává stejný výsledek
- Immutable infrastructure — nikdy neupravovat running server, vždy znovu nasadit
- Shift left — testy a security co nejdříve v pipeline
- Artifact management — všechny buildy verzované v registru (Docker Hub, ECR, GHCR)
- Dependency caching — urychlení pipeline (npm ci, pip cache, Docker layer caching)
- Fail fast — pipeline selže co nejdříve při chybě
Zdroje
Odkazy, knihy a standardy: sources/cicd/sources.md
- Quality gates — automated checks před každým povýšením do dalšího prostředí
- Pipeline visibility — dashboard s aktuálním stavem všech pipeline (GitHub, GitLab, ArgoCD)