GitLab CI et Artifactory : À vos marques, prêts, assemblez !
L’intégration de JFrog Artifactory à votre workflow GitLab CI concrétise le mantra de JFrog, « Release Fast Or Die ».
Ce billet de blog décrit comment intégrer GitLab CI à Artifactory, non seulement pour résoudre et déployer des fichiers binaires, mais également pour bénéficier de la fonctionnalité Build Integration d’Artifactory.
Publiez et gérez vos packages
GitLab CI prend en charge la création de plusieurs builds, tout en évaluant comment chaque validation passe vos tests et affecte vos produits. Pendant le processus de build, un grand nombre de fichiers binaires est généré. S'il n'est pas géré correctement à grande échelle, cela peut entraîner un véritable chaos binaire. Pour surmonter ce problème, Artifactory est intégré de manière transparente à votre processus de build. Vous pouvez ainsi publier et gérer ces fichiers binaires. Via JFrog CLI, GitLab CI récupère, met en cache et publie vos dépendances, vos packages créés et vos informations de build dans Artifactory.
Build Integration d'Artifactory associe automatiquement chaque package généré à son build, à ses dépendances et à ses informations, et collecte un nouvel ensemble de métadonnées dont vous n’avez peut-être pas bénéficié jusqu’à présent. Une fois Artifactory intégré à GitLab CI, vous pouvez stocker et afficher les informations telles que :
- Informations sur le build et modules publiés
- Dépendances utilisées
- Variables d’environnement
- Résumé de la licence
- Liens vers votre outil de suivi des problèmes
- Différences entre les builds
Les données sont stockées dans la base de données Artifactory, ce qui vous permet également de les récupérer à l’aide d'Artifactory Query Language.
Intégrez Artifactory dans votre workflow GitLab CI
L’exemple pas à pas suivant montre comment intégrer Artifactory à votre workflow GitLab CI. Dans cet exemple, nous allons utiliser Maven. Cet exemple et d’autres exemples de type de package sont disponibles dans GitHub.
- Créez un projet dans GitLab.
- Clonez cet exemple de projet Maven dans votre dépôt GitLab.
- Configurez les identifiants Artifactory suivants dans votre projet Maven, sous CI/CD Settings > Secret variables :
ARTIFACTORY_URL: https://artifactory.mycompany.com/artifactory
ARTIFACTORY_USER: admin
ARTIFACTORY_PASS: password
MAVEN_REPO_KEY: Nom du dépôt cible dans Artifactory - Validez le fichier de configuration .gitlab-ci.yml suivant dans le répertoire racine de votre projet. Ce fichier est un modèle personnalisé qui peut être modifié en fonction de vos besoins.
Exemple .gitlab-ci.yml
# Ce fichier est un modèle et peut avoir besoin d’être modifié avant de fonctionner dans votre projet. image: maven:latest before_script: # Installez JFrog CLI - curl -fL https://getcli.jfrog.io | sh # Configurez l’instance Artifactory avec JFrog CLI - ./jfrog rt config --url=$ARTIFACTORY_URL --user=$ARTIFACTORY_USER --password=$ARTIFACTORY_PASS - ./jfrog rt c show # Définissez la variable d’environnement M2_HOME - export M2_HOME=/usr/share/maven # Remplacez le nom du dépôt dans le fichier configuration.yml par le nom correct. - sed -i 's,MAVEN_REPO_KEY,'"$MAVEN_REPO_KEY"',g' configuration.yml build: script: # Exécutez la commande MVN - ./jfrog rt mvn "clean install" configuration.yml --build-name=gitlabci-maven-artifactory --build-number=$CI_JOB_ID # Collectez les variables d’environnement - ./jfrog rt bce gitlabci-maven-artifactory $CI_JOB_ID # Transmettez les informations de build à Artifactory - ./jfrog rt bp gitlabci-maven-artifactory $CI_JOB_ID only: - master
Un build instantané se déclenche automatiquement après la validation du fichier de configuration. Artifactory est renseigné avec vos packages Maven et vos dépendances mises en cache.
- Accédez à la tâche dans l’interface utilisateur de GitLab CI pour consulter le processus de génération et les journaux.
- Connectez-vous à Artifactory et accédez à l'Artifact Repository Browser pour afficher vos artefacts publiés dans Artifactory.
- Accédez au Build Browser pour afficher les informations de build.
Voilà ! Vous avez terminé.