Wat is een opslagplaats voor artefacten? Als het gewoon een plek is om bestanden op te slaan, kan ik dan niet gewoon een broncontrolesysteem gebruiken?
Answer
Tijdens ontwikkeling genereer je een behoorlijke hoeveelheid verschillende artefacten. Deze kunnen zijn:
- De broncode
- De gecompileerde applicatie
- Een inzetbaar pakket
- Documentatie
en mogelijk ook anderen
Hoewel je een broncontrolesysteem zou kunnen gebruiken om ze allemaal op te slaan, is het meestal enorm inefficiënt, aangezien broncontrolesystemen meestal ontworpen zijn om op tekst gebaseerde bestanden, en geen binaire bestanden. U kunt ze misschien gebruiken als een eenvoudig opslagmechanisme, als de meeste van uw releases op tekst zijn gebaseerd en u niet veel binaire gegevens hoeft op te slaan.
Artefact-opslagplaatsen zijn echter ontworpen om allerlei soorten bestanden op te slaan, inclusief binaire bestanden. Dit omvat alles van gecomprimeerde broncodes tot het bouwen van resultaten tot zaken als docker-afbeeldingen. Bovendien slaan ze deze artefacten meestal niet alleen op, maar helpen ze ze ook te beheren met behulp van verschillende aanvullende functies, bijvoorbeeld:
- Ondersteuning voor versiebeheer: sla enkele metagegevens op de juiste manier op, zoals wanneer elk artefact werd gebouwd, wat hun versie is nummer is, bewaar hun hashes, enz.
- Retentie: zorg ervoor dat je alleen de belangrijke artefacten bewaart, en verwijder automatisch degenen die alleen momentopnamen zijn / niet meer nodig zijn, enz. op basis van verschillende criteria die je kunt instellen
- Toegangscontrole: stel in wie de verschillende artefacten kan publiceren en downloaden.
- Promotie: mogelijkheid om artefacten te promoten. U kunt bijvoorbeeld snapshot-artefacten met een korte bewaartermijn op een server in de buurt van uw coders hebben, en een aparte opslagplaats in de buurt van de live servers, waar alleen artefacten verschijnen die als inzetbaar worden beschouwd. Dit omvat ook ondersteuning voor verschillende versiekanalen en het verplaatsen van artefacten tussen deze kanalen (zoals het promoten van een specifieke versie van bèta naar stabiel).
- Fungeren als een native repository voor de artefacten. Dit betekent dat je het kunt gebruiken als de belangrijkste opslagplaats voor maven, rubygems, docker, enz. Dit kan ook het cachen van artefacten uit de officiële opslagplaatsen omvatten.
Reacties
- Het is wellicht de moeite waard om de ' kanaal ' mogelijkheid toe te voegen aan de Versionning-ondersteuning, met de mogelijkheid om wat machine gericht op de nieuwste release in kanaal " ontwikkel " en prik machine gericht op een specifieke versie in kanaal " stable ".
- @ Pierre.Vriens heeft wat kleine opmerkingen toegevoegd, maar misschien kan dit ook in een aparte vraag worden behandeld
- merci, maar voor het geval dat hier uw kans is om verder in te gaan op mijn aanvullende opmerking …
- Is het zinvol om ook configuratiebestanden of fixtures bijhouden in dit soort repositories?
Answer
Er zijn opslagplaatsmanagers en universele pakketrepositorymanagers (UPM).
UPMs kunnen al je build-artefacten voor Jenkins, teamcity enz. opslaan en kunnen over het algemeen ook fungeren als opslagplaatsbeheerders voor veel verschillende soorten binaire artefacten Maven, npm, NuGet en meer.
Dit zijn tools als Jfrog Artifactory , Inedo ProGet , en Sonatype Nexus .
Een behoorlijk behoorlijke vergelijking is hier: https://binary-repositories-comparison.github.io/