Catégories

Dépôt Git pour les constructions Jenkins

Comment utiliser un projet d'un dépôt Git comme source de projet Agilitest pour exécuter des tâches Jenkins ?

Dans ce guide, nous allons expliquer comment utiliser un projet d'un dépôt Git comme source de projet Agilitest pour exécuter des tâches Jenkins. À chaque construction, Jenkins effectuera d'abord le Clone du dépôt Git, puis procédera à l'exécution des scripts ATS configurés dans la suite de tests, et enfin générera les rapports éventuels.  

Préparation du projet Agilitest  

Pour les besoins de ce guide, le dépôt Git est hébergé chez Bitbucket et a été initialisé avec un nouveau projet Agilitest vide en suivant les étapes de la documentation Configuration d'un dépôt Git hébergé par Bitbucket pour les projets Agilitest.  

Ensuite, le projet Agilitest (ici, repository-test) a vécu à travers les commits, avec l'accumulation de ATS scripts, de suites de tests et de fichiers de données.  

Création de la tâche Jenkins  

Le serveur Jenkins doit être démarré et connecté à Agilitest depuis le menu Outils. Il peut s'agir d'un serveur Jenkins local installé par Agilitest, ou d'un serveur distant géré par votre administrateur.  

Il est alors temps de créer un nouveau job Jenkins à partir du menu d'exécution d'Agilitest (en cliquant sur le bouton "Gérer les suites d'exécution du projet" dans la zone en accordéon"Explorateur de projets").

Figure 1 : bouton "Gérer les suites d'exécution du projet" sous forme de roue dentée

Passez ensuite en mode "Intégration Jenkins" et cliquez sur"Créer une nouvelle tâche". Notez qu'Agilitest a déjà reconnu la présence d'un dépôt Git dans le dossier du projet avec son sous-dossier .git caché. Dans notre exemple, nous laissons la branche */master par défaut. Ensuite nous glissons et déposons la suite de test désirée dans la zone "Liste des Suites".

Figure 2 : Création d'une nouvelle tâche Jenkins à partir d'Agilitest avec un projet initié avec Git

Après validation, le nouveau job Jenkins apparaît dans Agilitest comme ceci.

Avant de lancer le build, il est essentiel de préparer le projet Agilitest à supporter les opérations Push et Fetch qui seront effectuées respectivement par le client Git et le serveur Jenkins. L'opération par défaut de Git n'est pas de synchroniser les dossiers vides, pourtant certains d'entre eux sont essentiels à Agilitest. Une solution de contournement consiste à déposer un fichier .gitkeep vide dans chaque dossier vide du projet Agilitest. Ces fichiers forceront Git à synchroniser les dossiers (vides) qui les contiennent.

  • ./target/ats-output/.gitkeep
  • ./target/classes/assets/ressources/lang/.gitkeep
  • ./target/classes/assets/resources/certs/.gitkeep
  • ./target/classes/assets/ressources/images/.gitkeep
  • ./target/classes/assets/data/.gitkeep
  • ./target/report/.gitkeep
  • ./libs/.gitkeep
  • ./src/main/java/.gitkeep
  • ./src/main/scripts/.gitkeep
  • ./src/main/ats/subscripts/.gitkeep
  • ./src/assets/data/.gitkeep
  • ./src/assets/resources/lang/.gitkeep
  • ./src/assets/resources/certs/.gitkeep
  • ./src/assets/resources/images/.gitkeep

Configuration de Jenkins  

Tout d'abord, Git doit être installé sur la machine qui exécute Jenkins. Le serveur Jenkins doit avoir le fichier Plugin Git. Ensuite, l'exécutable git.exe doit être configuré dans le répertoire de Jenkins. Manage Jenkins > Global Tool Configuration > Git > Path to Git executable. Dans ce cas, nous avons défini C:\Program Files\Git\bin\git.exe.

Figure 3 : Configuration globale des outils (ici, Git) dans Jenkins

Voyons à quoi ressemble la tâche Jenkins nouvellement créée dans le projet de référentiel de test depuis le back-office web.

Figure 4 : Configuration d'un travail à partir du back-office de Jenkins

L'URL du dépôt Git est reconnue. Il est important de configurer l'authentification au dépôt Git dans Jenkins. Ici, nous avons utilisé un compte Bitbucket (paul-chevalier) et un jeton API créé à partir du menu "App passwords" dans l'interface d'administration de Bitbucket.

On peut initialiser le dépôt Git dans SourceTree avec la syntaxe https://paul-chevalier:my-app-password@bitbucket.org/paul-chevalier/repository-test.git. Le mot de passe de l'application figure dans l'URL, donc dans ce cas, il n'est pas nécessaire de configurer les informations d'identification dans Jenkins. Pour ce faire, SourceTree peut avoir besoin d'adresser le System git.exe au lieu du Embedded gitlib.

Lancement d'une construction  

Lors du lancement d'un build sur le job Jenkins ainsi configuré, vous pouvez suivre l'opération de Clone du dépôt Git orchestré par Jenkins dans la sortie standard(icône SortieConsole). Le nom du dernier commit apparaît ici.

Building in workspace
C:\Users\paulc\.agilitest\work\jenkins\workspace\job\com.functional.repository-test\newJobJenkins
[…]
Fetching changes from the remote Git repository
>C:\Program Files\Git\bin\git.exe config remote.origin.url https://paul-chevalier@bitbucket.org/paul-chevalier/repository-test.git # timeout=10
Fetching upstream changes from
https://paul-chevalier@bitbucket.org/paul-chevalier/repository-test.git
[…]
>C:\Program Files\Git\bin\git.exe fetch --tags --force --progress --
https://paul-chevalier@bitbucket.org/paul-chevalier/repository-test.git +refs/heads/*:refs/remotes/origin/* # timeout=10
>C:\Program Files\Git\bin\git.exe rev-parse"refs/remotes/origin/master^{commit}" # timeout=10
Checking out Revision f167510d99abb5af2674db52227860cf423869fa(refs/remotes/origin/master)
>C:\Program Files\Git\bin\git.exe config core.sparsecheckout #timeout=10
>C:\Program Files\Git\bin\git.exe checkout -ff167510d99abb5af2674db52227860cf423869fa # timeout=10
Commit message: "Ajout de fichiers .copy manquants"
[…]

En outre, un nouveau menu Git apparaît sur la page Jenkins pour la construction (ici #5).  

A travers cet article et ses pré-requis, nous avons utilisé Git pour relier les postes de travail de l'ingénieur d'automatisation des tests qui utilisent Agilitest et le serveur Jenkins. Notre chaîne d'intégration continue est prête !

Vous avez encore besoin d'aide ?
Contacter le support