Qu'est-ce qu'un artefact?


55

Il y a beaucoup de questions et réponses qui mentionnent " artificiel ".

Je ne serais pas surpris si cela est lié aux .

Mes questions :

  • Qu'est-ce qui est réellement un "artificiel" (dans le contexte de DevOps)?
  • Pourquoi utilise-t-on des artefacts?

Quelques réponses intéressantes à ce que je pensais être une question plutôt fondamentale. Assez drôle, ils me rappellent tous un concept similaire dans de bons vieux environnements mainframe (où se trouvent mes racines DevOps ... et où tant de concepts DevOps semblent provenir).
Pierre.Vriens

Réponses:


67

Artifactory est un produit de JFrog qui sert de gestionnaire de référentiel binaire . Cela dit, très souvent, on utilisera un «artificiel» comme synonyme du référentiel binaire plus général, un peu comme beaucoup de gens utilisent Frigidaire ou réfrigérateur pour désigner le réfrigérateur, qu’il s’agisse d’une marque Frigidaire ou non.

Le référentiel binaire est une extension naturelle du référentiel de code source, en ce sens qu'il stockera le résultat de votre processus de construction, souvent désigné sous le nom d'artefacts. La plupart du temps, le référentiel binaire ne serait pas utilisé directement, mais via un gestionnaire de paquets fourni avec la technologie choisie.

Dans la plupart des cas, ceux-ci stockent des composants d'application individuels qui peuvent ensuite être assemblés dans un produit complet, ce qui permet de diviser une génération en fragments plus petits, d'utiliser plus efficacement les ressources, de réduire les temps de génération, de mieux suivre les bases de données de débogage binaires, etc.

Voici quelques-uns des gestionnaires de paquets les plus populaires pouvant être gérés à l'aide d'un référentiel binaire:

  • Java: pot, oreille, guerre, etc. a Maven et le MavenCentral officiel . Il existe de nombreux autres gestionnaires de paquets qui utiliseront également le format de référentiel binaire maven ( ivy , gradle, etc.).
  • .Net: nuget pour les composants .NET (DLL et EXE), mais peut également être utilisé comme mécanisme de distribution sous des systèmes Windows tels que Chocolatey . Les versions les plus récentes de Powershell peuvent également en tirer parti pour distribuer des modules powershell via la galerie powershell, dans laquelle on pourrait créer une distribution locale avec un référentiel binaire et un référentiel au format nuget. Vérifiez également OneGet si la gestion de la distribution Windows vous intéresse.
  • En JavaScript: nous avons npm qui est l’un des plus populaires, il faudra des nœuds .
  • En python: il existe pip et l’index officiel du package, pypi , qu’il est également possible de créer une instance locale via un référentiel binaire qui prendra en charge le format.

Cette liste est loin d'être complète, elle donne juste une idée de ce qui se passe.

Le référentiel binaire peut permettre d’héberger tous ces éléments sous un même toit, ce qui simplifie considérablement leur gestion pour les équipes. Notez que vous n’avez pas besoin d’une très grande équipe pour commencer à tirer des avantages de la gestion des paquets binaires. L'investissement initial n'est pas très important et les avantages sont ressentis immédiatement. Surtout maintenant que de plus en plus de plates-formes, de frameworks et de langages intègrent directement cette gestion de dépendance. Leur principal avantage, cependant, est de créer un environnement que vos programmeurs trouveront naturel et confortable, ce qui le rend indispensable. En tant que développeur, il vous aide à créer une chaîne d'outils solide et à intégrer naturellement l'expérience globale dans leur pile de choix.

Comme je l’ai dit plus tôt, de nombreux produits peuvent servir de gestionnaires de paquets binaires, certains plus génériques que d’autres dans leur utilisation cible, variant considérablement en termes d’accessibilité et de prix.

Mon opinion personnelle est que les référentiels binaires sont aussi essentiels à une configuration bien conçue de devops que le référentiel de code source ou l'intégration continue.


Merci pour cette réponse intéressante (aussi). Pour une raison quelconque, tout cela me fait penser "hm, c'est donc ce que nous appelons généralement, dans de bons vieux environnements mainframe, des choses comme des bibliothèques de chargement contenant des exécutables (utilisées pour exécuter vos régions CICS / IMS / IDMS) ..." .
Pierre.Vriens

1
Une chose importante à ajouter est la montée des dépôts publics comme Maven Central etc modulecounts.com - ce sont souvent la source d'approvisionnement pour les projets logiciels qui deviennent de plus en plus l' assemblage srores pour ces composants ainsi que la colle personnalisée / code frontend et d'activité spécifique à la clientèle de cours logique.
Peter

1
jamais entendu parler de modulecounts.com, le site est en panne maintenant, je le vérifierai plus tard.
Newtopian

1
Analogie intéressante entre réfrigérateur et réfrigérateur :)
Ravi Tiwari

8

La façon dont cela m'a aidé à comprendre au début, la différence entre le référentiel de code source et le référentiel binaire était de penser comme suit: * Github ou Bitbucket est utile pour gérer tout le 'code' * Jfrog Artifactory est utile pour conserver le 'binaire' construit jusqu'à ce que je sois à l'aise avec ces termes!

En outre, l’importance d’Artifactory peut être comprise par rapport à la philosophie de DevOps consistant à "Construire une fois, déployer toujours". Dans l’intégration continue, il est très utile de construire votre fichier binaire une fois, de le placer dans Artifactory, puis de l’appeler à partir de là pour le déployer dans tous les environnements. De cette façon, nous sommes sûrs que le code qui fonctionne dans Dev est celui qui est transmis à Prod et qui y fonctionnera.


explication intéressante, merci!
Pierre.Vriens

6

Artifactory est un produit Binary Repository Manager de Jfrog .

Vous avez raison. En tant que gestionnaire de référentiel binaire, il est généralement utilisé pour gérer le stockage des générés et utilisés dans le processus de développement logiciel.

De la page principale d'Artifactory :

En tant que premier et unique logiciel Artifact Repository Manager sur le marché, JFrog Artifactory prend entièrement en charge les packages logiciels créés par n'importe quel langage ou technologie.

...

... Artifactory fournit une solution de bout en bout, automatisée et à l'épreuve des balles pour le suivi des artefacts du développement à la production.

Les utilisations que vous avez mentionnées suggèrent que cela peut être assez populaire pour une marque générique dans DevOps.


1
Merci Dan, vous êtes en quelque sorte confirme qu'un Artifactory est comme une combinaison des mots Artifac ts avec Reposi toire . La question supplémentaire que je me pose est la suivante: qu’en est-il des artefacts utilisés en production, mais qui ne sont pas des fichiers binaires, tels que du code PHP, des fichiers CSS, des scripts bash, etc.?
Pierre.Vriens

1
Pour le code des applications, ils ont des systèmes de contrôle de version du code source tels que cvs, svn, git, mercurial .. Et pour le code de configuration, les systèmes de gestion de la configuration et de distribution, comme les marionnettes, les chefs, l'ansible, le sel ..
Peter

@ Pierre.Vriens Je n'avais pas l'habitude d'y penser de cette façon, d'une manière ou d'une autre, "l'usine" me venait toujours à l'esprit en premier :) Mais je le vois totalement maintenant. Merci!
Dan Cornilescu

@ J.Doe merci pour cet ajout, et juste pour approfondir votre commentaire ... sur les mainframes, ils ont des outils comme "ChangeMan ZMF", "Endevor SCM", etc. Ces outils sont utilisés pour toutes les fonctions que vous avez mentionnées (versioning, distribution, etc., mais aussi pour le flux de travail, la sécurité, etc. liées à tout cela).
Pierre.Vriens

Donc, si on réinvente seulement les msinframes, qu'est-ce qui ne va pas avec eux?!
Peter

4

Je pense que la complication est ce que tout le monde est en train d’apprécier pour le moment. Je vais essayer de répondre à cette question en bref.

Le référentiel source est utilisé pour stocker le code et ses versions, tandis que artifactory est utilisé pour stocker les programmes exécutables qui sont les résultats de ce code [fichiers binaires - dll, jar, war, ear, msi, fichiers exe, etc.]

Désormais, la raison pour laquelle vous souhaitez les placer séparément dans un référentiel différent de votre code peut être multiple: accès sécurisé, menace de piratage, archivage de code malveillant ou tout simplement pour les clients qui ont simplement besoin du binaires.

La technologie de SCM aurait pu être divisée en deux types d’utilisateurs (un avec des privilèges de développeur qui pourront accéder au code source et un autre en tant que client qui ne pourra accéder qu’aux binaires). Mais il n'a pas emprunté cette voie! Alors maintenant, nous avons des artefacts.


2

Un artefact

Est-ce que quelque chose est produit / généré / fabriqué à partir d'un processus spécifique

Jar sur une construction de projet Java.

Question hors de ton esprit

Voiture sortie d'usine

Nouvelle chanson

Un référentiel

Est-ce un réceptacle où les choses persistent?

Github pour un projet Java.

StackExchange pour vos questions décourageantes

En théorie, un artefact - ORY serait un dépôt d'artefact où ils sont conservés et gérés tout au long de leur cycle de vie.

Dans le contexte de DevOps, Artifactory est un produit qui gère les artefacts binaires. Il stocke et gère différents types (packages Jar, Python et npm, etc.) que vous produisez à partir de vos versions et que vous réutilisez lors de la compilation ou du déploiement.


explication intéressante, merci!
Pierre.Vriens

ca me fait plaisir!
Gumol
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.