Planifier l'exécution automatique des tests dans votre environnement de builds avec Talend CI Builder - 6.2

Talend Software Development Life Cycle Guide de bonnes pratiques

EnrichVersion
6.2
EnrichProdName
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Real-Time Big Data Platform
task
Administration et monitoring
Création et développement
Déploiement
EnrichPlatform
Studio Talend
Talend Administration Center
Talend Artifact Repository
Talend CommandLine
Talend Repository Manager

Talend CI Builder est un plugin Maven livré par Talend qui transforme les sources des Jobs Talend (stockés dans Subversion) en classes Java en utilisant l'application CommandLine, vous permettant d'exécuter vos tests dans l'usine de développement Java propre à votre entreprise.

L'exemple qui suit présente une façon d'automatiser les exécutions des tests en utilisant le CommandLine et le Talend CI Builder pour générer les sources, ainsi qu'un serveur Jenkins pour créer les builds en automatisant l'exécution de tous les Test cases, et pour déployer ceux-ci sur le référentiel d'artefacts Nexus. Le serveur Jenkins est également utilisé pour monitorer ces exécutions.

Exemple 3. Automatiser les exécutions des tests avec Talend CI Builder et Jenkins

Prérequis :

  • Vous avez préalablement créé des Jobs et des Test Cases dans votre projet Git ou SVN que vous souhaitez exécuter de façon automatique. Pour plus d'informations, consultez Concevoir les tests.

  • Les modules externes stockés dans Nexus qui sont nécessaires à l'exécution de vos Jobs ont été correctement installés dans ce projet et votre instance de Nexus est démarrée. Pour plus d'informations, consultez l'article How to install external modules in the Talend products (en anglais).

  • Vous avez une application CommandLine qui sera uniquement utilisée dans le cadre de l'Intégration Continue (ne peut être le même CommandLine que celui utilisé pour des actions génériques tels que la publication d'artefacts du Studio Talend à Talend Administration Center, la génération des tâches d'exécution dans Talend Administration Center, etc.).

  • Une version supérieure ou égale à Apache Maven 3 est installée sur votre machine. Pour plus d'informations, consultez le site Web d'Apache Maven.

  • Le serveur d'Intégration continue Jenkins est installé sur votre machine. Pour plus d'informations, consultez le site Web de Jenkins.

Pour résumer, pour reproduire cet exemple vous avez besoin des applications suivantes : CommandLine, un serveur d'Intégration continue (ici, Jenkins), Maven, Nexus et Talend CI Builder.

Installer Talend CI Builder

  1. Extrayez le fichier archive Talend-CI-Builder-VA.B.C.zip dans le répertoire de votre choix.

  2. Parcourez votre système jusqu'à ce répertoire d'installation et exécutez la commande suivante :

    mvn install:install-file -Dfile=ci.builder-<A.B.C>.jar -DpomFile=ci.builder-<A.B.C>.pom

    <A.B.C> correspond à la version du CI Builder.

Configurer le CommandLine

Pour télécharger tous les fichiers .jar nécessaires à l'exécution de vos Jobs, Routes et Tests, vous devez configurer le CommandLine pour se connecter au référentiel Nexus où sont stockés ces modules externes. Pour plus d'informations sur les modules externes, consultez le Guide de migration Talend.

Notez que cette configuration n'est pas nécessaire si vous utilisez Talend Administration Center et que vous l'avez configuré pour récupérer les modules externes de Nexus.

  1. Ouvrez le fichier suivant pour le modifier : <StudioPath>/configuration/config.ini

  2. Ajoutez ce qui suit à la fin du fichier :

    nexus.url=<http://localhost:8081/nexus>
    nexus.user=<username>
    nexus.password=<password>
    nexus.lib.repo=talend-custom-libs-release

    <http://localhost:8081/nexus> correspond à l'URL d'emplacement de votre Nexus, et <username>/<password> correspond à vos identifiants Nexus.

    Par défaut, seule la valeur de nexus.url est requise, les valeurs de nexus.user et nexus.password n'étant pas nécessaires pour télécharger les modules.

Configurer Jenkins

  1. Démarrez le serveur Jenkins.

  2. Avant de créer vos projets de build, vérifiez dans la configuration de Jenkins que :

    • les chemins d'accès aux répertoires d'installation de vos Jenkins, JDK (java 8 est requis), Git et Maven sont correctement définis.

    • les identifiants des comptes Subversion et ou Git sont définis et valides.

  3. Créez deux projets de build Jenkins:

    • un projet qui récupère les sources (potentiellement à chaque commit) et les convertit en classes Java avec Talend CI Builder, appelé BuildSources dans cet exemple. Ce projet appelle l'application CommandLine qui génère toutes les sources des Jobs et Tests créés dans votre projet.

    • un projet qui exécute tous les Test Cases en même temps, appelé RunTests dans cet exemple, qui est déclenché à la fin du projet de build BuildSources.

    • un projet qui déploie les Jobs sur le référentiel Nexus de votre choix, appelé DeployToNexus dans cet exemple, qui est déclenché à la fin du projet de build RunTests.

  4. Liez le projet Jenkins BuildSources au projet SVN ou Git dans lequel vous avez créé vos Test Cases (notez que plusieurs projets peuvent être ajoutés).

    SVN uniquement : Saisissez la branche que vous souhaitez récupérer (CI_PROJECT/trunk dans cet exemple) ainsi que le dossier racine où vous avez sauvegardé tous vos projets (ici projects) suivi par un dossier du même nom que le nom d'origine du projet (ici CI_PROJECT). Ainsi, le dossier workspace existant sera complètement répliqué et l'application CommandLine pourra se connecter directement au dossier défini (projects) pour trouver les projets.

    Ci-dessous un exemple pour un projet Git.

  5. Définissez le chemin d'accès vers le fichier .pom qui contient les instructions de build, et définissez les autres paramètres Maven nécessaires (informations d'exécution du plugin et paramètres nécessaires pour générer les sources).

    Le fichier .pom (appelé BuildJob_pom.xml dans cet exemple) peut ressembler à ce qui suit (notez que la version spécifiée doit être différente) :

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
    <groupId>org.talend</groupId>
    <artifactId>buildsources</artifactId>
    <version>0.1</version>
    <packaging>pom</packaging>
    <build>
        <plugins>
            <plugin>
                <groupId>org.talend</groupId>
                <artifactId>ci.builder</artifactId>
                <version>A.B.C</version>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    </project>

    Dans cet exemple, l'objectif d'exécution (goal) Maven est generate. Pour plus d'informations sur le cycle de vie Maven et les goals, consultez la documentation d'Apache Maven (en anglais).

    Le workspace correspond au dossier racine où tous vos projets ont été stockés, et le dossier target correspond au dossier où seront générées toutes les sources de votre projet (projectSources).

    Si votre projet est sous Git, vous devez spécifier le dossier dans lequel vos projets seront copiés (Use custom workspace) dans la partie Advanced de la zone Build. Ce chemin d'accès doit être le même que celui utilisé dans votre CommandLine (consultez Exécuter les Tests).

    Vous pouvez également copier un projet de votre référentiel en particulier en saisissant sont chemin dans Additional Behaviours > Sparse Checkout paths.

  6. Ajoutez une étape post-build afin que ce projet déclenche le projet suivant, appelé RunTests, qui exécutera tous les tests.

  7. Dans la configuration du projet RunTests, ajoutez une étape de build pour exécuter tous les tests disponibles dans les sources générées.

  8. Dans la configuration du projet DeployToNexus, ajoutez une étape de build pour déployer tous les Jobs dans le référentiel d'artefacts Nexus de votre choix.

    Pour que cette option Maven puisse fonctionner, vous devez ajoutez ce qui suit au fichier <user_home>/.m2/settings.xml :

    <servers>
                   <server>
                            <id>tac</id>
                            <username><Nexus_username></username>
                            <password><Nexus_password></password>
                    </server>
    </servers>

    <Nexus_username>/<Nexus_password> correspondent à vos identifiants Nexus.

Exécuter les Tests

  1. Assurez-vous que l'application CommandLine pointe vers le dossier workspace de Jenkins où les sources du projet sont stockées. Pour ce faire, modifiez le fichier .bat ou .sh du CommandLine pour changer la valeur du paramètre data.