Wikipedia ha un'ottima risposta a questa domanda. Il manufatto , talvolta chiamato anche oggetto derivato , è un prodotto di alcuni processi applicati al repository di codice . Inizialmente venivano chiamati Build Artefacts , ma poiché venivano applicati più processi oltre a build per crearli, la prima parola veniva semplicemente eliminata.
La principale distinzione è che gli artefatti possono essere ricreati dal repository di codice usando lo stesso processo, purché tu abbia preservato l'ambiente in cui è stato applicato il processo. Poiché questo processo può richiedere molto tempo e l'ambiente può essere preservato in modo imperfetto per poter ricreare i manufatti nello stesso identico modo, abbiamo iniziato a memorizzarli nei repository di manufatti .
Memorizzarli a parte il repository di codici in un repository di artefatti è una decisione di progettazione che un ingegnere DevOps prenderebbe. Alcune aziende, vale a dire Perforce , suggeriscono di utilizzare il proprio repository di codici anche come repository di artefatti. Esistono requisiti diversi in termini di accesso , controllo , dimensioni degli oggetti , codifica degli oggetti e scalabilità su ciascun repository e quindi, a seconda della situazione, è spesso preferibile utilizzare due prodotti distinti. Ad esempio Giti repository vengono copiati nella loro interezza su ogni macchina di sviluppo e quindi la memorizzazione di artefatti nel repository di codice aumenterebbe le sue dimensioni oltre ogni ragione, anche se ultimamente ci sono modi per mitigare questo. Un'altra decisione da prendere è quali artefatti conservare. Alcune aziende memorizzano anche artefatti intermedi come file di singoli oggetti, per velocizzare le ricostruzioni, altri archiviano semplicemente solo i binari finali. Non tutti gli artefatti hanno lo stesso valore. Gli artefatti risultanti da una build di rilascio potrebbero avere requisiti diversi rispetto agli artefatti derivanti da una build di sviluppatore.
I manufatti più comuni sono i risultati dei seguenti processi: configurazione , preelaborazione , compilazione , collegamento , test automatizzati , archiviazione , packaging , creazione ed elaborazione di file multimediali , generazione di file di dati , analisi della documentazione , analisi del codice , QA , ecc.