Artifact Management — Správa build artefaktov
Artifact management je proces ukladania, verziovania a distribúcie build výstupov. Správny artifact repository je kritická súčasť každej CI/CD pipeline.
Čo je Artifact Management
Artefakt je akýkoľvek výstup z build procesu — JAR súbor, Docker image, npm package, Helm chart, binárka. Artifact repository je centrálne úložisko, kde sa tieto výstupy ukladajú, verzionujú a distribuujú.
Prečo nestačí Git:
- Binárne súbory nepatria do Git repozitára
- Artefakty potrebujú vlastné verziovanie (nezávislé od commitov)
- Distribúcia vyžaduje špecializované protokoly (Docker registry, Maven, npm)
- Compliance vyžaduje audit trail a retention policies
Nástroje
| Nástroj | Typ | Podporované formáty |
|---|---|---|
| JFrog Artifactory | Universal | Maven, npm, Docker, Helm, PyPI, Go, NuGet... |
| Sonatype Nexus | Universal | Maven, npm, Docker, PyPI, raw |
| GitHub Packages | Cloud | npm, Maven, Docker, NuGet, RubyGems |
| GitLab Package Registry | Integrovaný | npm, Maven, Docker, PyPI, Helm |
| AWS ECR | Cloud | Docker images |
| Google Artifact Registry | Cloud | Docker, Maven, npm, Python |
| Harbor | Open-source | Docker images, Helm charts |
JFrog Artifactory je enterprise štandard — podporuje prakticky všetky package formáty, má pokročilú replikáciu, security scanning a integráciu s CI/CD nástrojmi.
Sonatype Nexus je populárna open-source alternatíva (Nexus OSS) s možnosťou upgrade na Pro verziu.
Container Registry
Docker images sú dnes najčastejší typ artefaktu. Container registry je špecializovaný artifact repository:
# Build a tag
docker build -t registry.example.com/app:1.2.3 .
docker build -t registry.example.com/app:latest .
# Push
docker push registry.example.com/app:1.2.3
# V CI/CD pipeline — vždy tagujte konkrétnou verziou
docker pull registry.example.com/app:1.2.3
Dôležité: nikdy nepoužívajte :latest v produkcii. Vždy pinujte konkrétnu verziu alebo SHA digest.
Versioning stratégie
- SemVer (
1.2.3) — štandard pre knižnice a aplikácie - Git SHA (
abc1234) — jednoznačná identifikácia buildu - Timestamp (
20260227-143052) — chronologické radenie - Kombinácia (
1.2.3-abc1234) — verzia + identifikácia commitu
Praktické použitie
- Proxy repository — cachovanie externých dependencies (npm, Maven Central)
- Promotion pipeline — artefakt sa presúva: dev → staging → production
- Immutable artifacts — raz publikovaný artefakt sa nikdy neprepisuje
- Vulnerability scanning — automatický sken artefaktov na známe CVE
Best Practices
- Každý artefakt musí byť immutable — rovnaká verzia = rovnaký obsah
- Implementujte retention policies — staré artefakty zaberajú miesto
- Skenujte artefakty na zraniteľnosti pred nasadením
- Používajte proxy repositories pre externé dependencies (rýchlosť + dostupnosť)
- Podpisujte artefakty (cosign, Sigstore) pre supply chain security
- Zálohujte artifact repository — strata artefaktov = nemožnosť deploynúť
Artifact management je často prehliadaná, ale kritická časť CI/CD. Bez spoľahlivého úložiska artefaktov je celá pipeline krehká.