Cette page vous explique comment configurer Jenkins pour stocker les packages Maven créés dans un dépôt Artifact Registry.
Avant de commencer
Si le dépôt cible n'existe pas, créez un dépôt.
Configurer l'accès à votre dépôt
Créez un compte de service dédié que Jenkins pourra utiliser avec Artifact Registry.
Exécutez la commande suivante pour créer un compte de service nommé
jenkins-sa:gcloud iam service-accounts create jenkins-saCela crée un compte de service nommé jenkins-sa@PROJECT.iam.gserviceaccount.com, où PROJECT correspond à l'ID de votre projet.
Dans le projet contenant le dépôt, attribuez le rôle Rédacteur Artifact Registry au compte de service Jenkins que vous avez créé. Vous pouvez attribuer le rôle pour tous les dépôts du projet ou pour les dépôts spécifiques auxquels le compte de service doit accéder.
Pour en savoir plus sur les autorisations et l'attribution d'accès par rôle, consultez la page Configurer le contrôle des accès.
Configurer un cluster GKE
Lorsque vous configurez un cluster ou un pool de nœuds Google Kubernetes Engine, utilisez le compte de service que vous avez créé pour Jenkins.
Console
Pour créer un cluster à l'aide de la Google Cloud console, procédez comme suit :
Accédez au menu Artifact Registry dans la console. Google Cloud
Cliquez sur Créer un cluster.
Configurez le cluster comme vous le souhaitez. Ne cliquez pas encore sur Créer.
Cliquez sur Plus d'options dans le pool de nœuds par défaut.
Dans la section Sécurité, sélectionnez le compte de service Jenkins que vous avez créé.
Cliquez sur Enregistrer pour quitter le formulaire.
Cliquez sur Create (Créer).
gcloud
Utilisez l'une des commandes suivantes pour créer le cluster avec le compte de service Jenkins. Dans les commandes, PROJECT correspond à l'ID de votre projet.
Pour créer un cluster avec le compte de service, exécutez la commande.
gcloud container clusters create example-cluster --service-account=jenkins-sa@PROJECT.iam.gserviceaccount.com
Pour créer un pool de nœuds dans un cluster existant :
gcloud container node-pools create example-pool --service-account=jenkins-sa@PROJECT.iam.gserviceaccount.com
Pour en savoir plus sur la commande, consultez la documentation gcloud container clusters create.
Installer Jenkins sur GKE
Suivez le tutoriel pour installer Jenkins sur GKE. Utilisez le cluster que vous avez créé dans la section précédente.
Dans Jenkins, mettez à jour le plug-in GKE vers la dernière version. Cliquez sur Manage Jenkins > Manage Plugins > Updates (Gérer Jenkins > Gérer les plug-ins > Mises à jour).
Configurer un projet Maven
Dupliquez l'exemple de projet Maven dans le dépôt GitHub de la documentation Jenkins.
Clonez le dépôt dupliqué.
git clone git@github.com:USER_NAME/simple-java-maven-app.git
Configurez un pipeline dans l'interface Jenkins.
- Cliquez sur New Item (Nouvel élément).
- Sélectionnez Pipeline.
- Définissez un nom pour le pipeline, puis cliquez sur OK.
Dans l'onglet Général, configurez les options suivantes dans la section Pipeline :
- Sélectionnez Pipeline script from SCM (Script de pipeline de SCM).
- Dans la liste déroulante SCM, sélectionnez Git , puis spécifiez l'URL et les identifiants pour vous connecter à votre dépôt GitHub.
Cliquez sur Enregistrer.
Configurer la connexion au dépôt
Configurez Jenkins avec le dépôt et les identifiants pour vous y connecter.
Ajoutez votre dépôt au fichier
pom.xmlMaven. Exécutez la commande suivante pour imprimer un extrait à ajouter.gcloud artifacts print-settings mvn [--project=PROJECT] \ [--repository=REPOSITORY] [--location=LOCATION]Où :
- PROJECT correspond à l'ID du projet. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
- REPOSITORY correspond à l'ID du dépôt. Si vous avez configuré un dépôt Artifact Registry par défaut, il est utilisé lorsque cette option est omise dans la commande.
- LOCATION correspond à l'emplacement régional ou multirégional du dépôt.
Créez un fichier YAML en tant que modèle de pod pour les agents Jenkins.
mkdir jenkins cat > jenkins/maven-pod.yaml << EOF apiVersion: v1 kind: Pod spec: containers: - name: maven image: maven:3.3.9-jdk-8-alpine command: ['cat'] tty: true EOFModifiez le fichier
Jenkinsfile.pipeline { agent none stages { stage('Deploy') { steps { agent { kubernetes { label 'mavenpod' yamlFile 'jenkins/maven-pod.yaml' } } container('maven') { sh "mvn -B clean deploy" } } } } }
Démarrer une compilation
Transférez les modifications que vous avez apportées au projet GitHub.
git add . && git commit -m "Configure my Jenkins pipeline" && git pushDans l'interface Jenkins, démarrez une compilation pour l'application dans votre exemple de projet Maven.
Une fois la compilation terminée, les artefacts sont ajoutés au dépôt de packages Java Artifact Registry que vous avez créé.
Exécutez la commande suivante pour répertorier les packages dans le dépôt :
gcloud artifacts packages list --repository=mvn-jenkins --location=LOCATION
La sortie ressemble à ceci :
Listing items under project {YOUR_PROJECT}, repository mvn-jenkins.
PACKAGE CREATE_TIME UPDATE_TIME
com.mycompany.app:my-app 2019-06-25T17:09:44 2019-06-25T17:09:44