Che cos'è un manufatto?


54

Ci sono alcune domande e risposte che menzionano " artificiali ".

Non sarei sorpreso se fosse in qualche modo legato ai .

Le mie domande :

  • Cosa è in realtà un "artefatto" (nel contesto di DevOps)?
  • Perché vengono utilizzati gli artefattori?

Abbastanza alcune risposte interessanti a quello che pensavo fosse una domanda piuttosto elementare. Abbastanza divertente, mi ricordano tutti un concetto simile in buoni vecchi ambienti mainframe (dove sono le mie radici DevOps ... e da dove sembrano provenire tanti concetti DevOps).
Pierre.Vriens

Risposte:


67

Artifactory è un prodotto di JFrog che funge da gestore di repository binario . Detto questo molto spesso si userà un 'artefatto' come sinonimo del repository binario più generale, proprio come molte persone usano Frigidaire o frigorifero per indicare il frigorifero indipendentemente dal fatto che sia un marchio Frigidaire o meno.

Il repository binario è un'estensione naturale del repository di codice sorgente, in quanto memorizzerà il risultato del processo di compilazione, spesso indicato come artefatti. Il più delle volte non si usa direttamente il repository binario ma attraverso un gestore di pacchetti fornito con la tecnologia scelta.

Nella maggior parte dei casi, questi memorizzeranno i singoli componenti dell'applicazione che possono essere successivamente assemblati in un prodotto completo, consentendo così di spezzare una build in blocchi più piccoli, facendo un uso più efficiente delle risorse, riducendo i tempi di costruzione, miglior tracciamento dei database binari di debug ecc.

Ecco alcuni dei gestori di pacchetti più popolari che possono essere gestiti utilizzando un repository binario:

  • Java: jar, ear, war etc ha Maven e il MavenCentral ufficiale . Ci sono molti altri gestori di pacchetti che useranno anche il formato del repository binario maven ( edera , gradle ecc.).
  • .Net: nuget per componenti .NET (DLL ed EXE) ma può anche essere usato come meccanismo di distribuzione in sistemi Windows come Chocolatey . Le versioni più recenti di Powershell possono anche sfruttare questo per distribuire i moduli PowerShell attraverso la galleria PowerShell di cui è possibile creare una distribuzione locale con un repository binario e un repository in formato nuget. Controlla anche OneGet se la gestione della distribuzione di Windows ti interessa.
  • In JavaScript: abbiamo npm che è uno dei più popolari e richiederà nodejs .
  • In pitone: c'è pip e l'indice pacchetto ufficiale pypi , che si può anche creare un'istanza locale attraverso repository binario che supporterà il formato.

Questo elenco è tutt'altro che completo, dà solo un'idea di cosa c'è là fuori.

Il repository binario può consentire di ospitare tutti questi sotto lo stesso tetto, rendendo la loro gestione molto più semplice per i team. Si noti che non è necessario un team di dimensioni molto grandi per iniziare a raccogliere benefici dalla gestione dei pacchetti binari. L'investimento iniziale non è molto elevato e i benefici si avvertono immediatamente. Soprattutto ora che sempre più piattaforme, framework e linguaggi stanno integrando questa gestione delle dipendenze direttamente in essi. Il loro più grande vantaggio che ho trovato è stato quello di creare un ambiente che i tuoi programmatori troveranno naturale e confortevole rendendolo essenziale. Ti aiuta come sviluppatori a creare una solida catena di strumenti e li aiuta a far sì che l'esperienza complessiva si adatti naturalmente alla loro scelta.

Come ho detto prima, ci sono molti prodotti là fuori che possono fungere da gestori di pacchetti binari, alcuni più generici di altri nel loro uso di destinazione, variando anche ampiamente in termini di accessibilità e prezzi.

La mia opinione personale è che i repository binari sono una parte vitale di una configurazione devops ben progettata come il repository di codice sorgente o l'integrazione continua.


Grazie per questa interessante risposta (anche). Per qualche ragione, tutto ciò mi fa pensare "hm, quindi è come quello che in genere chiamiamo, in buoni vecchi ambienti mainframe, cose come caricare librerie contenenti eseguibili (usate per eseguire le tue regioni CICS / IMS / IDMS) ..." .
Pierre.Vriens

1
Una cosa importante da aggiungere è l'ascesa di repository pubblici come Maven Central ecc. Modulecounts.com - questi sono spesso la fonte di approvvigionamento per progetti software che diventano sempre più insiemi di assemblaggio per questi componenti oltre a codice colla / frontend personalizzato e, naturalmente, attività specifiche del cliente logica.
Peter,

1
mai sentito parlare di modulecounts.com, il sito non funziona adesso, lo controllerò più tardi.
Newtopian,

1
Interessante analogia tra frigorifero e frigorifero :)
Ravi Tiwari,

8

Il modo in cui mi ha aiutato a capire inizialmente, la differenza tra il repository di codice sorgente e il repository binario era di pensarlo come: * Github o Bitbucket è utile per mantenere tutto il 'codice' * Jfrog Artifactory è utile per mantenere il 'binario' almeno finché non mi sono sentito a mio agio con questi termini!

Inoltre, l'importanza di Artifactory può essere compresa in relazione alla filosofia di DevOps di "Costruire una volta, distribuire sempre". La integrazione continua del tuo binario fa una lunga strada, lo mette in Artifactory e poi lo chiama da lì per dispiegarlo in tutti i diversi ambienti. In questo modo, siamo sicuri che il codice che funziona in Dev è quello inviato a Prod e funzionerà lì.


spiegazione interessante, merci!
Pierre.Vriens

6

Artifactory è un prodotto Binary Repository Manager di Jfrog .

Hai ragione: essendo un gestore di repository binario, viene in genere utilizzato per gestire l'archiviazione di generati e utilizzati nel processo di sviluppo del software.

Dalla pagina web principale di Artifactory :

Come primo e unico gestore di repository di artefatti universale sul mercato, JFrog Artifactory supporta pienamente i pacchetti software creati da qualsiasi linguaggio o tecnologia.

...

... Artifactory fornisce una soluzione end-to-end, automatizzata ea prova di proiettile per tracciare i manufatti dallo sviluppo alla produzione.

Gli usi che hai citato suggeriscono che potrebbe essere abbastanza popolare per un marchio generico in DevOps.


1
Merci Dan, sei in qualche modo conferma che un'Artifactory è come una combinazione delle parole Artifac TS con Reposi tory . La domanda aggiuntiva che mi chiedo è questa: che dire degli artefatti che vengono utilizzati nella produzione, ma che non sono binari, come codice PHP, file CSS, script bash, ecc?
Pierre.Vriens

1
Per il codice dell'applicazione hanno sistemi di versioning del codice sorgente come cvs, svn, git, mercurial .. E per il codice di configurazione, i sistemi di gestione e distribuzione della configurazione, come burattini, chef, ansible, salt ..
Peter

@ Pierre.Vriens Non ci pensavo in questo modo, in qualche modo "factory" mi è sempre venuto in mente prima :) Ma ora lo vedo totalmente. Grazie!
Dan Cornilescu,

@ J.Doe merci per quell'aggiunta, e solo per estendere ulteriormente il tuo commento ... sui mainframe hanno strumenti come "ChangeMan ZMF", "Endevor SCM", ecc. Questi strumenti sono usati per tutte le funzioni che hai citato (versioning, distribuzione, ecc., ma anche per flusso di lavoro, sicurezza, ecc. relativi a tutto ciò).
Pierre.Vriens

Quindi, se reinventiamo solo msinframes, cosa potrebbe esserci di sbagliato in loro ?!
Peter,

4

Penso che complicare le cose sia ciò per cui tutti stanno apprezzando al giorno d'oggi. Proverò a rispondere a questa domanda in breve.

Il repository di origine viene utilizzato per l'archiviazione del codice e delle sue versioni, mentre artifactory viene utilizzato per l'archiviazione dei programmi eseguibili che sono output di quel codice [file binari - dll, jar, war, ear, msi, file exe ecc]

Ora il motivo per cui vorresti metterli separatamente in un repository che è diverso dal tuo codice potrebbe essere molti: proprio da accesso sicuro, minaccia di hacking, check in di codice dannoso o semplicemente avere una strada separata per i clienti che hanno solo bisogno del binari.

La tecnologia di SCM avrebbe potuto divulgarsi nella creazione di 2 tipi di utenti (uno con privilegi di sviluppatore che sarà in grado di accedere al codice sorgente e un altro come client che sarà in grado di accedere solo ai binari). Ma non ha preso quella strada! Quindi ora abbiamo manufatti.


2

Un manufatto

È qualcosa che viene prodotto / generato / realizzato da un processo specifico

Jar fuori da una build del progetto Java.

Domanda fuori di testa

Auto fuori da una fabbrica

Nuova canzone

Un repository

È un ricettacolo in cui le cose persistono

Github per un progetto Java.

StackExchange per le tue domande scoraggianti

In teoria, un Artefatto - ORY sarebbe un deposito di manufatto in cui vengono mantenute e gestite in tutto il loro ciclo di vita.

Nel contesto di DevOps, Artifactory è un prodotto che gestisce artefatti binari. Memorizza e gestisce diversi tipi (pacchetti Jar, Python e npm, ecc ...) che produci dai tuoi build e riutilizzi in fase di compilazione o distribuzione.


spiegazione interessante, merci!
Pierre.Vriens

ca me fait plaisir!
Gumol,
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.