Intégration à Jenkins

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

  1. Créer un compte de service dédié que Jenkins doit 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-sa
    

    Un compte de service nommé jenkins-sa@PROJECT.iam.gserviceaccount.comest créé, où PROJECT correspond à l'ID de votre projet.

  2. 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 accorder ce rôle à tous les dépôts du projet ou vous pouvez attribuer le rôle pour les dépôts spécifiques nécessaires au compte de service y accéder.

    Pour en savoir plus sur les autorisations et l'octroi d'accès par rôle, consultez la section Configurer le contrôle des accès.

Configurer un cluster GKE

Lorsque vous configurez un nouveau cluster ou un nouveau pool de nœuds Google Kubernetes Engine, utilisez le compte de service que vous avez créés pour Jenkins.

Console

Pour créer un cluster à l'aide de la console Google Cloud, procédez comme suit :

  1. Accédez au menu "Artifact Registry" dans la console Google Cloud.

    Accéder au menu Artifact Registry

  2. Cliquez sur Créer un cluster.

  3. Configurez le cluster comme vous le souhaitez. Ne cliquez pas encore sur Créer.

  4. Cliquez sur Plus d'options dans le pool de nœuds par défaut.

  5. Dans la section Security (Sécurité), sélectionnez le compte de service Jenkins. que vous avez créé.

  6. Cliquez sur Save (Enregistrer) pour quitter la superposition.

  7. 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

  1. Suivez le tutoriel pour configurer Jenkins sur GKE. Utilisez le cluster que vous avez créé dans la section précédente.

  2. Dans Jenkins, mettez à jour le plug-in GKE vers la dernière version. Cliquez sur Manage Jenkins (Gérer Jenkins) > Gérer les plug-ins > Mises à jour.

Configurer un projet Maven

  1. Dupliquez l'exemple de projet Maven. dans le dépôt GitHub de la documentation Jenkins.

  2. Clonez le dépôt dupliqué.

    git clone git@github.com:USER_NAME/simple-java-maven-app.git
    
  3. Configurer un nouveau pipeline dans l'interface Jenkins

    1. Cliquez sur New Item (Nouvel élément).
    2. Sélectionnez Pipeline.
    3. Attribuez un nom au pipeline, puis cliquez sur OK.
  4. 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.

    Capture d'écran des paramètres du pipeline

  5. Cliquez sur Enregistrer.

Configurer la connexion au dépôt

Configurez Jenkins avec le dépôt et les identifiants pour vous connecter au dépôt.

  1. Ajoutez votre dépôt au fichier Maven pom.xml. Utilisez la commande suivante pour imprimer un extrait à ajouter.

    gcloud artifacts print-settings mvn [--project=PROJECT] \
    [--repository=REPOSITORY] [--location=LOCATION]
    

    Où :

    • PROJECT est l'ID de projet. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
    • REPOSITORY est 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 est l'emplacement régional ou multirégional du dépôt.
  2. 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
    EOF
    
  3. Modifiez 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

  1. Transférez les modifications que vous avez apportées au projet GitHub.

    git add . && git commit -m "Configure my Jenkins pipeline" && git push
    
  2. Dans l'interface Jenkins, démarrez une nouvelle compilation de 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