Che cos'è un repository di artefatti?


Risposte:


32

Durante lo sviluppo generi una discreta quantità di artefatti diversi. Questi potrebbero includere:

  • Il codice sorgente
  • L'applicazione compilata
  • Un pacchetto distribuibile
  • Documentazione

e potenzialmente anche altri

Sebbene sia possibile utilizzare un sistema di controllo del codice sorgente per archiviarli tutti, di solito è enormemente inefficiente, poiché i sistemi di controllo del codice sorgente sono generalmente progettati per gestire file basati su testo e non file binari. Potresti essere in grado di usarli come un semplice meccanismo di archiviazione, se la maggior parte delle tue versioni sono basate su testo e non devi archiviare molti dati binari.

I repository di artefatti sono tuttavia progettati per archiviare tutti i tipi di file, compresi quelli binari. Ciò include qualsiasi cosa, dai codici sorgente compressi, per creare risultati, fino a cose come le immagini docker. Inoltre, di solito non solo memorizzano questi artefatti, ma aiutano anche a gestirli utilizzando varie funzioni aggiuntive, ad esempio:

  • Supporto delle versioni: memorizza correttamente alcuni metadati, come quando è stato creato ogni artefatto, qual è il loro numero di versione, archivia i loro hash, ecc.
  • Conservazione: assicurati di conservare solo gli artefatti importanti ed elimina automaticamente quelli che sono solo istantanee / non più necessari, ecc. In base a vari criteri che puoi impostare
  • Controllo degli accessi: imposta chi può pubblicare e chi può scaricare i vari artefatti
  • Promozione: capacità di promuovere artefatti. Ad esempio, è possibile disporre di artefatti di istantanea con un breve periodo di conservazione su un server vicino ai programmatori e un repository separato vicino ai server attivi, in cui vengono visualizzati solo gli artefatti ritenuti distribuibili. Ciò include anche il supporto per vari canali di versione e lo spostamento di artefatti tra loro (come la promozione di una versione specifica dalla beta alla stabile).
  • Funziona come un repository nativo per i manufatti. Ciò significa che è possibile utilizzarlo come repository principale per Maven, Rubygem, Docker, ecc. Questo può includere anche la memorizzazione nella cache di artefatti dai repository ufficiali.

Potrebbe valere la pena aggiungere la funzionalità "channel" al supporto di Versionning, avendo la possibilità di avere alcune macchine destinate all'ultima versione nel canale "sviluppo" e prode macchine destinate a una versione specifica nel canale "stable".
Tensibai,

@ Pierre.Vriens ha aggiunto alcuni piccoli commenti, ma forse può essere affrontato anche in una domanda separata
SztupY

merci, ma per ogni evenienza, ecco la tua occasione per rispondere ulteriormente al mio commento aggiuntivo ...
Pierre.Vriens

Ha senso tenere traccia anche dei file di configurazione o dei dispositivi in ​​questo tipo di repository?
tutuca,

7

Ci sono gestori di repository e gestori di repository di pacchetti Universal (UPM).

Gli UPM possono archiviare tutto il tuo artefatto di build per Jenkins, teamcity ecc. E generalmente possono anche fungere da osservatori di repository per molti diversi tipi di artefatti binari Maven, npm, NuGet e altro.

Questi sarebbero strumenti come Jfrog Artifactory , Inedo ProGet e Sonatype Nexus .

Un confronto abbastanza decente è qui: https://binary-repositories-comparison.github.io/

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.