Artipie est un outil de gestion d’artefacts binaires open-source sous licence MIT. Il prend en charge les types de référentiels suivants : Docker, Maven, NPM, PyPI, Anaconda, RPM, Gem, Go, etc. Si vous souhaitez en savoir plus sur Artipie en détail, vous pouvez lire l’article Développeurweb.com Un moyen facile d’obtenir votre propre référentiel binaire.
Concentrons-nous sur le référentiel Maven. Maven est un outil qui peut être utilisé pour construire et gérer n’importe quel projet basé sur Java. Maven a deux types de référentiels :
- Le référentiel local est un répertoire sur l’ordinateur sur lequel Maven s’exécute. Maven met en cache les téléchargements à partir des référentiels Maven distants dans ‘
{user.home}/.m2
‘ dossier. Le référentiel local contient des artefacts de construction temporaires. - Les référentiels distants sont des référentiels accessibles à l’aide de divers protocoles. Ces référentiels peuvent être publics, par exemple, repo.maven.apache.org ou privés, ils ne sont accessibles qu’à l’intérieur d’une organisation, partageant des artefacts privés entre les équipes de développement.
Les référentiels Maven locaux et distants ont la même structure et sont construits, étendus et pris en charge selon les mêmes « règles de référentiel Maven ». Ainsi, il est possible d’exposer le référentiel maven local de n’importe qui en tant que référentiel maven distant.
Nous allons mettre en place un référentiel maven distant privé.
Tout d’abord, nous devons récupérer le fichier jar Artipie, que vous pouvez trouver sur cette page. Dans l’étape suivante, nous devons définir une configuration principale Artipie qui est représentée par un ‘yml
‘ dossier. Alors, créons un dossier pour Artipie config’{user.home}/artipie/config
‘ avec le ‘my-artipie.yml
‘, qui a le contenu suivant :
meta:
storage:
type: fs
path: {user.home}/artipie/repo
Où:
- Le champ ‘type’ décrit quel type de stockage Artipie utilisera pour obtenir la configuration des référentiels. Dans notre cas, il s’agit de « fs », le stockage du système de fichiers.
- Le champ ‘path’ est le chemin absolu vers le répertoire du système de fichiers où les fichiers de configuration du référentiel seront stockés.
Maintenant, nous sommes prêts à définir une configuration de référentiel maven qui est également représentée par un ‘yml
‘ dossier:
repo:
type: maven
storage:
type: fs
path: {user.home}/artipie/data
Où:
- Le champ ‘type’ décrit un type de référentiel ; dans notre cas, c’est ‘maven’.
- Le champ ‘stockage’ définit les paramètres du stockage de fichiers où les artefacts sont placés.
Nous appelons ce fichier ‘my-maven.yml’ et le plaçons dans le dossier ‘{user.home}/artipie/repo
‘. Comme vous le verrez plus tard, Artipie utilise le nom de fichier comme nom de référentiel maven.
Maintenant tout est fait, et nous sommes prêts à lancer Artipie. Exécutez la commande suivante dans un terminal :
java -jar {path-to-jar}/artipie-latest-jar-with-dependencies.jar \
--config-file={user.home}/artipie/config/my-artipie.yml \
--port=8085
Où:
- Le paramètre ‘–config-file’ pointe vers le fichier de configuration principal d’Artipie.
- Le paramètre ‘–port’ définit le port pour démarrer le service.
C’est tout. Maintenant, nous avons notre référentiel maven !
Essayons de déployer un artefact dans le référentiel maven de notre Artipie. Nous utilisons le ‘hamcrest-2.2.jar
‘ fichier de la célèbre bibliothèque Hamcrest. Après avoir téléchargé ce fichier sur l’ordinateur local, je le copie simplement à partir du référentiel maven local ‘{user.home}/.m2/repository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar
‘ dans un dossier temporaire, par exemple, ‘{user.home}/temp
‘. Ensuite, pour déployer un JAR tiers, nous utiliserons le ‘deploy:deploy-file
‘ objectif sous maven-deploy-plugin. La commande de déploiement peut être la suivante :
mvn deploy:deploy-file -DgroupId=org.hamcrest \
-DartifactId=hamcrest \
-Dversion=2.2 \
-Dfile={user.home}/temp/hamcrest-2.2.jar \
-Durl=http://localhost:8085/my-maven/
Vous pouvez en savoir plus sur le ‘deploy:deploy-file
‘ objectif ici.
La sortie de la console devrait être :
Uploading to remote-repository: http://localhost:8085/my-maven/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar
Uploaded to remote-repository: http://localhost:8085/my-maven/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar (123 kB at 851 kB/s)
Uploading to remote-repository: http://localhost:8085/my-maven/org/hamcrest/hamcrest/2.2/hamcrest-2.2.pom
Uploaded to remote-repository: http://localhost:8085/my-maven/org/hamcrest/hamcrest/2.2/hamcrest-2.2.pom (392 B at 21 kB/s)
Downloading from remote-repository: http://localhost:8085/my-maven/org/hamcrest/hamcrest/maven-metadata.xml
Uploading to remote-repository: http://localhost:8085/my-maven/org/hamcrest/hamcrest/maven-metadata.xml
Uploaded to remote-repository: http://localhost:8085/my-maven/org/hamcrest/hamcrest/maven-metadata.xml (296 B at 2.1 kB/s)
Ici, nous pouvons voir que le ‘hamcrest-2.2.jar
‘ l’artefact a été déployé avec succès sur ‘http://localhost:8085/my-maven/
‘ référentiel.
Artipie stocke les artefacts en utilisant la même structure de dossiers que maven, donc maintenant le dossier ‘{user.home}/artipie/data
‘ ressemble à l’image suivante :
Si vous avez déjà des artefacts mis en cache dans un référentiel maven local et que vous ne souhaitez pas les charger à nouveau, copiez simplement le dossier ‘{user.home}/.m2/repository
‘ dans un répertoire où vous allez stocker vos artefacts de référentiel. Dans l’exemple, nous pourrions copier le contenu du référentiel maven local dans le ‘{user.home}/artipie/data
‘ et ces artefacts seraient accessibles par l’URL du référentiel d’Artipie. Cette fonctionnalité nous permet de déployer rapidement et facilement le référentiel maven d’Artipie basé sur le stockage compatible maven existant.
Souvent, nous souhaitons utiliser simultanément des référentiels Maven privés et publics. Avec Artipie, cette exigence peut être atteinte en utilisant le type de référentiel ‘maven-proxy’. Le référentiel maven-proxy redirige les requêtes vers les référentiels distants. Transformons notre référentiel maven existant en référentiel maven-proxy. Nous devons modifier le fichier ‘my-maven.yml’ de la manière suivante :
repo:
type: maven-proxy
remotes:
- url: https://repo.maven.apache.org/maven2
- url: {your_private_remote_maven_repository}
Où:
- Le champ ‘type’ est le ‘maven-proxy’ ce qui signifie utiliser le repository maven Artipie en mode proxy.
- Le champ ‘remotes’ définit la liste des référentiels maven distants qu’Artipie demandera pour les artefacts nécessaires.
Notez que vous n’avez pas besoin d’arrêter Artipie pour modifier la configuration du référentiel. Toutes les modifications de configuration du référentiel seront appliquées à la volée.
Artipie essaiera d’obtenir l’artefact de la liste des référentiels distants un par un jusqu’à ce que l’artefact soit trouvé. Pour vérifier le téléchargement, nous utiliserons le plugin de dépendance maven et tout artefact, par exemple, le même ‘org.hamcrest:hamcrest
‘ artefact, mais la version 2.1. Le plugin de dépendance maven essaie d’abord d’obtenir un artefact du référentiel local et ensuite seulement des référentiels distants. Si vous avez déjà le dossier ‘{user.home}/.m2/repository/org/hamcrest/hamcrest/2.1’
, supprimez-le simplement pour forcer le plugin maven à demander l’artefact au référentiel distant. Ensuite, vous pouvez ajouter la description du référentiel à ‘{user.home}/.m2/settings.xml
‘ ou créez un nouveau fichier de paramètres Maven. Pour ne pas affecter d’autres projets, nous allons choisir la deuxième option – créer des paramètres maven ‘my-maven-settings.xml
‘dans le dossier’{user.home}/artipie/
‘ et définissez le profil décrivant notre dépôt distant :
<?xml version="1.0"?>
<settings>
<profiles>
<profile>
<id>artipie</id>
<repositories>
<repository>
<id>my-maven</id>
<url>http://localhost:8085/my-maven/</url>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>artipie</activeProfile>
</activeProfiles>
</settings>
Maintenant, nous devons exécuter la commande Maven :
mvn -s {user.home}/artipie/my-maven-settings.xml \
dependency:get -Dartifact=org.hamcrest:hamcrest:2.1:jar
Vous pouvez voir le morceau de sortie de console suivant :
Downloading from my-maven: http://localhost:8085/my-maven/org/hamcrest/hamcrest/2.1/hamcrest-2.1.pom
Downloaded from my-maven: http://localhost:8085/my-maven/org/hamcrest/hamcrest/2.1/hamcrest-2.1.pom (1.1 kB at 2.0 kB/s)
Downloading from my-maven: http://localhost:8085/my-maven/org/hamcrest/hamcrest/2.1/hamcrest-2.1.jar
Downloaded from my-maven: http://localhost:8085/my-maven/org/hamcrest/hamcrest/2.1/hamcrest-2.1.jar (123 kB at 676 kB/s)
Artipie a trouvé le ‘org.hamcrest:hamcrest:2.1:jar
‘ artefact dans le ‘https://repo.maven.apache.org/maven2
‘ référentiel et l’a téléchargé. Si quelqu’un d’autre demande à nouveau cet artefact, Artipie essaiera de l’obtenir à partir de l’un des référentiels répertoriés dans le fichier de configuration. Cependant, pour réduire le trafic Internet, il est utile de mettre en cache les artefacts téléchargés dans le stockage maven-proxy. Ajoutons l’option cache au fichier ‘my-maven.yml’ :
repo:
type: maven-proxy
remotes:
- url: https://repo.maven.apache.org/maven2
cache:
storage:
type: fs
path: {user.home}/artipie/data
- url: {your_private_remote_maven_repository}
Où:
- Le champ ‘storage’ définit le stockage où les artefacts sont mis en cache.
Avant d’essayer de télécharger le ‘hamcrest-2.1.jar
‘ fichier une fois de plus, n’oubliez pas de supprimer le ‘{user.home}/.m2/repository/org/hamcrest/hamcrest/2.1
‘ dossier. La sortie de la console devrait être la même que ci-dessus, mais maintenant le dossier ‘{user.home}/artipie/data
‘ a la structure suivante :
Pour les prochaines demandes du ‘org.hamcrest:hamcrest:2.1
‘ artefact, Artipie l’obtiendra dans le stockage de fichiers plutôt que d’en télécharger un à partir de référentiels externes. Ce comportement est précisément ce que nous voulions.
Artipie est un outil de gestion d’artefacts binaires open source qui vous permet de créer simplement et rapidement n’importe quel référentiel à partir d’un ensemble de référentiels pris en charge….