Intégrer à 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é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-sa
    

    Cela crée un compte de service nommé jenkins-sa@PROJECT.iam.gserviceaccount.com, 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 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 :

  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 Sécurité, sélectionnez le compte de service Jenkins que vous avez créé.

  6. Cliquez sur Enregistrer pour quitter le formulaire.

  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 installer 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 > Manage Plugins > Updates (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. Configurez un pipeline dans l'interface Jenkins.

    1. Cliquez sur New Item (Nouvel élément).
    2. Sélectionnez Pipeline.
    3. Définissez un nom pour le 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 y connecter.

  1. Ajoutez votre dépôt au fichier pom.xml Maven. 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.
  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 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