Depuis que Talend propose sa plateforme Cloud, le rythme des patches s’est intensifié. Pour répondre à ces challenges, il est recommandé de mettre en place une chaîne d’intégration continue.

Cet article vous présente les étapes pour y parvenir. Pour cela, nous utiliserons Talend Cloud Data Integration 7.3.1, AWS S3, Docker, ainsi que Gitlab CI pour l’orchestration.

Pour rappel, Talend propose une implémentation CI/CD basée sur l’approche zero install workflow où le Commandline est téléchargé et installé à la demande, lors du process de compilation. Cette approche repose notamment sur le système de provisionnement Eclipse P2.

Si vous souhaitez en savoir plus sur la vision du CI/CD de Talend, n’hésitez pas à consulter la documentation.

Talend CI Builder : Validation des jobs

Talend CI Builder est le premier élément de cette chaîne CI/CD. C’est grâce à ce plug-in Maven que nous serons en mesure de valider la compilation des jobs qui ont été développés. Pour cela, il est nécessaire de commencer par une génération des fichiers POM (fichier XML de configuration et de dépendances Maven) pour s’assurer de la cohérence des jobs à compiler.

Pour information, Talend CI Builder peut se télécharger dans la section Téléchargements de la Talend Management Console (TMC).

La commande generateAllPoms

L’étape de validation des jobs est réalisée par la commande generateAllPoms du CI Builder qui va regénérer l’ensemble des fichiers POM du projet Talend.

mvn org.talend.ci:builder-maven-plugin:7.3.1:generateAllPoms 
-s maven_settings.xml 
-Dlicense.path=license 
-Dpatch.path=https://exemple-adresse.cloudfront.net/patches/$PATCH
-f talend_test_project/poms 
-Dupdatesite.path=https://exemple-adresse.cloudfront.net/P2/7.3.1/
-e -X

Les paramètres importants de la commande :

  • -s : le fichier maven_settings.xml sur lequel doit s’appuyer le plug-in.
  • -Dlicense.path : chemin vers la licence Talend, sinon le CommandLine Talend ne se lancera pas.
  • -Dpatch.path : le chemin/lien permettant d’accéder ou télécharger l’archive du patch Talend.
  • -f : Chemin du dossier poms de votre projet Talend

Mise en place d’un site statique

Étant donné que nous mettons en place un processus basé sur le zero install workflow, nous allons avoir besoin de nous appuyer sur un site statique, nous permettant de récupérer les différentes dépendances, comme les patchs, la license, etc. Un bucket AWS S3 est donc mis en place pour pouvoir télécharger les différents fichiers nécessaires. C’est le paramètre -Dupdatesite.path qui recevra le lien https : -Dupdatesite.path=https://exemple-adresse.cloudfront.net.

Le stockage S3 est rendu accessible par une adresse web statique, en utilisant le service AWS Cloudfront.

Noter que pour Talend 8, cela ne s’applique pas puisque tout est accessible depuis https://update.talend.com/Studio/8/updates/.

Talend Cloud Publisher : Build and Publish

Passons à l’étape suivante qui se charge de la compilation du job et son déploiement dans la TMC. Pour cela, nous utiliserons le plug-in Maven Talend Cloud Publisher. Comme CI Builder, il est fourni par Talend.

Son activation se fait par l’ajout du paramètre de profil -Pcloud-publisher à votre commande de déploiement Maven.

La commande Maven Talend Cloud Publisher complète

mvn clean deploy
-s path_to/maven_settings.xml 
-f path_to_project/pom.xml 
-am 
-Dgeneration.type=local 
-Dlicense.path=path_to/license 
-Dpatch.path=https://exemple-adresse.cloudfront.net/patches/$PATCH 
-Dupdatesite.path=https://exemple-adresse.cloudfront.net/P2/7.3.1/
-pl path_to_job/job_to_publish_1.0 
-Pcloud-publisher 
-Dservice.url=https://adresse-talend-cloud.com 
-Dcloud.token=$TALEND_CLOUD_TOKEN 
-Dcloud.publisher.environment=DEV 
-Dcloud.publisher.workspace=CICD

La commande utilise donc le plug-in Maven Talend Cloud Publisher, en précisant d’utiliser :

  • un patch Talend (-Dpatch.path)
  • le Talend Cloud (-Dservice.url)
  • le token pour l’authentification à la plateforme TMC (-Dcloud.token)
  • l’environnement choisi pour le dépôt de l’artifact sur la TMC (-Dcloud.publisher.environment)
  • l’espace de travail choisi (-Dcloud.publisher.workspace)

Automatisation du processus par Gitlab CI

Savoir déployer en utilisant le les plug-ins Maven Talend CI, c’est bien.
Automatiser les déploiements avec un orchestrateur comme Gitlab CI ou Jenkins, c’est mieux!

Maintenant que les commandes Maven sont prêtes, il ne reste plus qu’à mettre en place ça dans un orchestrateur de pipeline. Nous utiliserons dans notre cas : Gitlab CI. Ce pipeline est définit par un fichier YAML, spécifiant les différentes étapes, les différentes commandes réalisées.

Utilisation d’une image Docker

Afin de pallier à un problème connu de Talend 7.3.1, le pipeline utilise une image Docker rassemblant directement l’ensemble des librairies Java utilisées par le projet Talend (dossier M2 + librairies custom), mais également un Apache Maven pour réaliser les commandes.

Le fichier YAML .gitlab-ci.yml du projet Talend

Un projet Gitlab doit contenir un fichier YAML .gitlab-ci.yml à la racine pour utiliser les fonctionnalités CI. Ce dernier représente le pipeline qui sera chargé de réaliser l’étape du Build.

Quel est le contenu d’un fichier YAML?

build-and-publish-job:
  stage: Build
  image: cr.gitlab.com/talend/cicd/customized-m2
  script:
        - |
        mvn org.talend.ci:builder-maven-plugin:7.3.1:generateAllPoms 
        -s maven_settings.xml 
        -Dlicense.path=license 
        -Dpatch.path=https://exemple-adresse.cloudfront.net/patches/$PATCH 
        -Dstudio.error.on.component.missing=false 
        -f nom_de_votre_projet/poms/pom.xml
        -Dupdatesite.path=https://exemple-adresse.cloudfront.net/P2/7.3.1/
        -e -X  
        mvn clean deploy
        -s path_to/maven_settings.xml 
        -f path_to_project/pom.xml 
        -am 
        -Dgeneration.type=local 
        -Dlicense.path=path_to/license 
        -Dpatch.path=https://exemple-adresse.cloudfront.net/patches/$PATCH 
        -Dupdatesite.path=https://exemple-adresse.cloudfront.net/P2/7.3.1/
        -pl path_to_job/job_to_publish_1.0 
        -Pcloud-publisher 
        -Dstudio.error.on.component.missing=false 
        -Dservice.url=https://adresse-talend-cloud.com 
        -Dcloud.token=$TALEND_CLOUD_TOKEN
        -Dcloud.publisher.environment=DEV 
        -Dcloud.publisher.workspace=CICD

Les deux commandes Maven vont être executées par le pipeline, en utilisant l’image Docker citée plus haut. Il faut noter que le pipeline peut utiliser des variables, et de ce fait, recevoir des paramètres et s’adapter en fonction ce qu’il reçoit :

C’est le cas pour la variable $PATCH, qui lorsque le pipeline est lancé, doit être surchargée d’une valeur (exemple : Patch_20220708_R2022-07_v1-7.3.1.zip)

Quel est le résultat d’un lancement du pipeline?

Exemple de résultat d’un pipeline

Le pipeline s’est réalisé avec succès, et le job choisi a été publié sur Talend Cloud, dans l’environnement DEV, et l’espace de travail CICD.

Valeur ajoutée apportée

Capacité d’intégration, livraison et déploiement continue

Grâce à ce processus d’installation en partant de zéro, nous sommes capables de déployer sur une architecture automatisée : un workflow CICD indépendant, paramétré.

Cela permet ainsi de supprimer des actions répétitives comme :

  • Générer et publier un artifact automatiquement
  • Vérifier le bon fonctionnement d’un patch

1 comment on “Mettre en place un processus automatisé d’intégration continue avec Talend

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *