🟡 Intermediate

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á.