Vad är ett artefaktförvar? Om det bara är en plats att lagra filer, kan jag inte bara använda ett källkontrollsystem?
Svar
Under utveckling genererar du en hel del olika artefakter. Dessa kan inkludera:
- Källkoden
- Den kompilerade applikationen
- Ett distribuerbart paket
- Dokumentation
och eventuellt andra också
Även om du kan använda ett källkontrollsystem för att lagra dem alla är det vanligtvis massivt ineffektivt, eftersom källkontrollsystem vanligtvis är utformade för att hantera textbaserad filer och inte binära filer. Du kanske kan använda dem som en enkel lagringsmekanism om de flesta av dina utgåvor är textbaserade och du inte behöver lagra mycket binär data.
Artefaktförvar är dock utformade för att lagra alla typer av filer, inklusive binära filer. Detta inkluderar allt från zippade källkoder, för att bygga resultat, till saker som dockerbilder också. De lagrar vanligtvis inte bara dessa artefakter utan hjälper också till att hantera dem med hjälp av olika ytterligare funktioner, till exempel:
- Stöd för versionering: lagra vissa metadata ordentligt, som när varje artefakt byggdes, vad deras version nummer är, lagra deras hash osv.
- Retention: se till att du bara behåller de viktiga artefakterna och automatiskt tar bort sådana som bara är ögonblicksbilder / inte längre behövs etc. baserat på olika kriterier du kan ställa in
- Åtkomstkontroll: ställa in vem som kan publicera och vem som kan ladda ner de olika artefakterna
- Kampanj: förmåga att marknadsföra artefakter. Till exempel kan du ha ögonblicksbildartefakter med en kort kvarhållningsperiod på en server nära dina kodare och ett separat förvar nära levande servrar, där endast artefakter som har ansetts användas kan visas. Detta inkluderar också stöd för olika versionskanaler och flyttning av artefakter mellan dem (som att marknadsföra en specifik version från beta till stabil).
- Fungera som ett inbyggt arkiv för artefakterna. Det betyder att du kan använda den som huvudförvar för maven, rubygems, docker etc. Detta kan också inkludera cachning av artefakter från de officiella förvaren.
Kommentarer
- Kan värt att lägga till ' kanal ' förmåga över Versionning-stödet, med förmågan att ha lite maskin som är inriktad på den senaste versionen i kanal " utvecklar " och prod-maskin som riktar sig mot en specifik version i kanal " stabil ".
- @ Pierre.Vriens har lagt till några små kommentarer, men kanske kan det också tas upp i en separat fråga
- merci, men bara om här är din chans att ytterligare ta itu med min ytterligare kommentar …
- Är det vettigt att hålla koll på konfigurationsfiler eller fixturer i den här typen av förvar?
Svara
Det finns förvarshanterare och UPM (Universal package repository managers).
UPM: er kan lagra all din byggartefakt för Jenkins, teamcity etc. och kan i allmänhet också fungera som förvarsföretag för många olika typer av binära artefakter Maven, npm, NuGet och mer.
Detta skulle vara verktyg som Jfrog Artifactory , Inedo ProGet , och Sonatype Nexus .
En ganska anständig jämförelse finns här: https://binary-repositories-comparison.github.io/