Tutoriel : Mettre à l’échelle des déploiements Jenkins avec une machine virtuelle s’exécutant dans Azure

Important

De nombreux services Azure disposent de plug-ins Jenkins. Certains de ces plug-ins ne seront plus pris en charge à partir du 29 février 2024. Azure CLI est la méthode actuellement recommandée pour intégrer Jenkins à des services Azure. Pour plus d’informations, reportez-vous à l’article Plug-ins Jenkins pour Azure.

Ce tutoriel montre comment créer une machine virtuelle Linux dans Azure et comment l’ajouter en tant que nœud de travail à Jenkins.

Durant ce tutoriel, vous allez effectuer les opérations suivantes :

  • Créer une machine agent
  • Ajouter l’agent à Jenkins
  • Créer un travail libre (freestyle) Jenkins
  • Exécuter le travail sur un agent de machine virtuelle Azure

Prérequis

Configurer la machine virtuelle agent

  1. Utilisez az group create pour créer un groupe de ressources Azure.

    az group create --name <resource_group> --location <location>
    
  2. Utilisez az vm create pour créer une machine virtuelle.

    az vm create --resource-group <resource-group> --name <vm_name> --image UbuntuLTS --admin-username azureuser --admin-password "<password>"
    

    Points essentiels :

    • Vous pouvez aussi charger votre clé SSH avec la commande --ssh-key-value <ssh_path>.
  3. Installez le JDK.

    1. Connectez-vous à la machine virtuelle à l’aide d’un outil SSH.

      ssh username@123.123.123.123
      
    2. Installez le JDK avec apt. Vous pouvez aussi l’installer avec d’autres outils du gestionnaire de package, comme yum ou pacman.

      sudo apt-get install -y default-jdk
      
    3. Une fois l’installation terminée, exécutez java -version pour vérifier l’environnement Java. La sortie va inclure les numéros de version associés aux différentes parties du JDK.

Configurer l’URL de Jenkins

Si vous utilisez JNLP, vous avez besoin de configurer l’URL de Jenkins.

  1. Dans le menu, sélectionnez Manage Jenkins (Gérer Jenkins).

  2. Sous System Configuration (Configuration système), sélectionnez Configure System (Configurer le système).

  3. Vérifiez que l’URL de Jenkins est définie sur l’adresse HTTP de votre installation de Jenkins : http://<your_host>.<your_domain>:8080/.

  4. Cliquez sur Enregistrer.

Ajouter l’agent à Jenkins

  1. Dans le menu, sélectionnez Manage Jenkins (Gérer Jenkins).

  2. Sous System Configuration (Configuration système), sélectionnez Manage Nodes and Clouds (Gérer les nœuds et les clouds).

  3. Dans le menu, sélectionnez New Node (Nouveau nœud).

  4. Entrez une valeur dans Node Name (Nom du nœud).

  5. Sélectionnez Permanent Agent(Agent permanent).

  6. Cliquez sur OK.

  7. Spécifiez les valeurs les champs suivants :

    • Nom : spécifiez un nom unique qui identifie un agent au sein de la nouvelle installation Jenkins. Cette valeur peut être différente du nom d’hôte de l’agent. En revanche, il est pratique que ces deux valeurs soient les mêmes. La valeur de ce nom peut inclure tout caractère spécial figurant dans la liste suivante : ?*/\%!@#$^&|<>[]:;.

    • Répertoire racine distant : un agent doit avoir un répertoire dédié à Jenkins. Spécifiez le chemin de ce répertoire sur l’agent. Il est préférable d’utiliser un chemin absolu, comme /home/azureuser/work ou c:\jenkins. Ce chemin doit être un chemin local de la machine agent. Il ne doit pas être nécessairement visible à partir du maître. Si vous utilisez un chemin relatif, comme ./Jenkins-agent, le chemin est relatif au répertoire de travail fourni par la méthode de lancement.

    • Étiquettes : les étiquettes sont utilisées pour regrouper des agents liés sémantiquement dans un groupe logique. Par exemple, vous pouvez définir une étiquette UBUNTU pour tous vos agents exécutant la distribution Ubuntu de Linux.

    • Méthode de lancement : il existe deux options pour démarrer le nœud Jenkins distant : lancer des agents via SSH et Lancer l’agent via l’exécution de la commande sur le maître :

      • Lancez des agents via SSH : spécifiez les valeurs des champs suivants :

        • Hôte : adresse IP publique de machine virtuelle ou nom de domaine. Par exemple, 123.123.123.123 ou example.com.

        • Informations d’identification : sélectionnez les informations d’identification à utiliser pour la connexion à l’hôte distant. Vous pouvez aussi sélectionner le bouton Add (Ajouter) pour définir de nouvelles informations d’identification, puis sélectionner ces nouvelles informations d’identification une fois qu’elles sont créées.

        • Stratégie de vérification de clé d’hôte : contrôle la façon dont Jenkins vérifie la clé SSH présentée par l’hôte distant lors de la connexion.

        Node configuration example specifying a launch method of Launch agents via SSH.

      • Launch agent via execution of command on the master (Lancer l’agent via l’exécution de la commande sur le maître) :

        • Téléchargez le fichier agent.jar à partir de https://<your_jenkins_host_name>/jnlpJars/agent.jar. Par exemple : https://localhost:8443/jnlpJars/agent.jar.

        • Chargez agent.jar sur votre machine virtuelle.

        • Démarrez Jenkins avec la commande ssh <node_host> java -jar <remote_agentjar_path>. Par exemple : ssh azureuser@99.99.999.9 java -jar /home/azureuser/agent.jar.

        Node configuration example specifying a launch method of Launch agent via execution of command on the master.

  8. Cliquez sur Enregistrer.

Une fois que vous avez défini les configurations, Jenkins ajoute la machine virtuelle en tant que nouveau nœud de travail.

Example of virtual machine as new work node

Créer un travail dans Jenkins

  1. Dans le menu, sélectionnez New Item (Nouvel élément).

  2. Entrez le nom demoproject1.

  3. Sélectionnez Freestyle project (Projet libre).

  4. Cliquez sur OK.

  5. Sous l’onglet General (Général), choisissez Restrict where project can be run (Restreindre les emplacements d’exécution du projet), puis tapez ubuntu dans le champ Label Expression (Expression d’étiquette). Vous obtenez un message confirmant que l’étiquette est prise en charge par la configuration cloud créée à l’étape précédente.

    Setting up a new Jenkins job

  6. Sous l’onglet Source Code Management (Gestion du code source), sélectionnez Git, puis entrez l’URL suivante dans le champ Repository URL (URL du référentiel) : https://github.com/spring-projects/spring-petclinic.git

  7. Sous l’onglet Build (Générer), sélectionnez Add build step (Ajouter une étape de génération), puis Invoke top-level Maven targets (Appeler des cibles Maven de niveau supérieur). Entrez package dans le champ Goals (Objectifs).

  8. Cliquez sur Enregistrer.

Générer le nouveau travail sur un agent de machine virtuelle Azure

  1. Sélectionnez le travail que vous avez créé à l’étape précédente.

  2. Sélectionnez Build now (Générer maintenant). Une nouvelle build est mise en file d’attente, mais elle ne démarre pas tant qu’une machine virtuelle d’agent n’est pas créée dans votre abonnement Azure.

  3. Une fois la génération terminée, accédez à la sortie de la console. Vous constatez que la génération a été effectuée à distance sur un agent Azure.

    Console output

Étapes suivantes