Hvad er et artefaktregister?

Hvad er et artefaktregister? Hvis det bare er et sted at gemme filer, kan jeg ikke bare bruge et kildekontrolsystem?

Svar

Under udvikling genererer du en hel del forskellige artefakter. Disse kan omfatte:

  • Kildekoden
  • Den kompilerede applikation
  • En implementerbar pakke
  • Dokumentation

og potentielt andre også

Selvom du kunne bruge et kildekontrolsystem til at gemme dem alle, er det normalt ineffektivt, da kildekontrolsystemer normalt er designet til at håndtere tekstbaseret filer og ikke binære filer. Du kan muligvis bruge dem som en simpel opbevaringsmekanisme, hvis de fleste af dine udgivelser er tekstbaserede, og du ikke behøver at gemme mange binære data.

Artifact-arkiver er dog designet til at gemme alle slags filer, inklusive binære filer. Dette inkluderer alt fra zippede kildekoder til opbygning af resultater til ting som dockerbilleder. De gemmer normalt ikke kun disse artefakter, men hjælper også med at administrere dem ved hjælp af forskellige yderligere funktioner, for eksempel:

  • Versionsstøtte: gemme nogle metadata korrekt, som når hver artefakt blev bygget, hvad deres version nummer er, gem deres hash osv.
  • Opretholdelse: Sørg for, at du kun beholder de vigtige artefakter og automatisk sletter dem, der kun er snapshots / ikke længere er nødvendige osv. baseret på forskellige kriterier, du kan indstille
  • Adgangskontrol: opsæt, hvem der kan offentliggøre, og hvem der kan downloade de forskellige artefakter
  • Promovering: evne til at promovere artefakter. For eksempel kan du have øjebliksbillede-artefakter med en kort opbevaringsperiode på en server i nærheden af dine kodere og et separat lager nær live-serverne, hvor kun artefakter, der anses for at være implementerbare, vises. Dette inkluderer også understøttelse af forskellige versionskanaler og flytning af artefakter mellem dem (som at promovere en bestemt version fra beta til stabil).
  • Fungerer som et indbygget lager for artefakterne. Det betyder, at du kan bruge det som hovedlager til maven, rubygems, docker osv. Dette kan også omfatte caching af artefakter fra de officielle arkiver.

Kommentarer

  • Kan være værd at tilføje ' kanal ' kapacitet over Versionning-understøttelsen, der har evnen til at have nogle maskine målrettet mod den seneste udgivelse i kanal " udvikler " og prod-maskine målrettet mod en bestemt version i kanal " stabil ".
  • @ Pierre.Vriens tilføjede nogle små kommentarer, men måske kan det også behandles i et separat spørgsmål
  • merci, men bare hvis her er din chance for yderligere at adressere min yderligere kommentar …
  • Er det fornuftigt at også holde styr på konfigurationsfiler eller inventar i denne slags arkiver?

Svar

Der er lageradministratorer og UPM (Universal package repository managers).

UPMer kan gemme al din build-artefakt til Jenkins, teamcity osv. og kan generelt også fungere som depotmangere til mange forskellige typer binære artefakter Maven, npm, NuGet og mere.

Dette ville være værktøjer som Jfrog Artifactory , Inedo ProGet , og Sonatype Nexus .

En ret anstændig sammenligning er her: https://binary-repositories-comparison.github.io/

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *