Dans ce guide, nous allons expliquer comment utiliser un projet provenant d'un dépôt Git comme source de projet Agilitest pour exécuter des tâches Jenkins. A chaque build, Jenkins va d'abord effectuer le clonage du dépôt Git, puis exécuter les scripts ATS configurés dans la suite de tests, et enfin générer les rapports éventuels.
Préparation du projet Agilitest
Pour les besoins de ce guide, le dépôt Git est hébergé sur Bitbucket et a été initialisé avec un nouveau projet Agilitest vide en suivant les étapes de la documentation. Mise en place d'un dépôt Git hébergé sur Bitbucket pour les projets Agilitest.
Ensuite, le projet Agilitest (ici, repository-test) a vécu au fil des commits, avec l'accumulation de scripts ATS , 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 accordéon"Explorateur de projets").

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 tests souhaitée dans la zone "Liste des suites".

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

Avant de lancer le build, il est essentiel de préparer le projet Agilitest à supporter les opérations de Push et de Fetch qui seront effectuées respectivement par le client Git et le serveur Jenkins. L'opération par défaut de Git est de ne pas synchroniser les dossiers vides, pourtant certains d'entre eux sont essentiels à Agilitest. Une solution 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.
- .ats.gitkeep
- ./target/classes/assets/resources/lang/.gitkeep
- ./target/classes/assets/resources/certs/.gitkeep
- ./target/classes/assets/resources/images/.gitkeep
- ./target/classes/assets/data/.gitkeep
- ./target/report/.gitkeep
- ./libs/.gitkeep
- ./src/main/java/.gitkeep
- ./src/main/scripts/.gitkeep
- .ats.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 plugin plugin Git. Ensuite, l'exécutable git.exe doit être configuré dans l'interface Jenkins Manage Jenkins > Global Tool Configuration > Git > Path to Git executable. Dans ce cas, nous avons défini C:\NProgram Files\NGit\Nbin\Ngit.exe.

Voyons à quoi ressemble le job Jenkins nouvellement créé dans le projet de référentiel de test depuis le back-office web.

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, de sorte que 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 de l'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 Clonage du dépôt Git orchestré par Jenkins dans la sortie standard(icôneConsole Output). 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"
[…]
De plus, un nouveau menu Git apparaît sur la page Jenkins pour la construction (ici #5).

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