TIBCO BusinessWorks 6 – Intégration continue avec Maven

TIBCO BW 6 Maven plugin Mavenisation Déploiement [miaffo.net]

Dans ce nouveau tutoriel consacré à TIBCO BusinessWorks 6 – Intégration continue, nous allons installer et configurer le plugin Maven pour BW6. Rappelons tout d’abord que ce plugin permet d’effectuer les tâches d’intégration continue sur TIBCO BusinessWorks 6.

Les composants utilisés dans ce tutoriel.

  • TIB_bwce-dev_2.3.3_linux26gl23_x86_64
  • apache-maven-3.5.4-bin
  • TIB_BW_Maven_Plugin_1.2.2

Agenda

  1. Introduction
  2. Téléchargement
  3. Installation et configuration
  4. Cas d’utilisation: POC Maven automatisation
  5. Conclusions

Introduction

Tout comme Jenkins, Maven est l’un des outils les plus utilisés pour effectuer les tâches liées à l’intégration continue. C’est un outil open source. Dans ce tutoriel, nous allons utiliser un plugin basé sur Maven pour automatiser les tâches de build. Le plugin est disponible depuis la sortie de TIBCO BW 6.3, cette première livraison était en version 1.0.0. Pour la mise à jour 6.5 de TIBCO BW6, une release du plugin est déjà disponible. Il s’agit de la version 2.0.0 qui est téléchargeable sur github.

Téléchargement

Pour télécharger la version 1.2.2 à utiliser dans ce tutoriel, il faut d’abord se rendre sur le site de dépôt en cliquant sur le lien TIBCO BW6 Maven Plugin. En suite, enregistrer l’archive dans un répertoire temporaire et finalement suivre les instructions d’installation et de configuration qui suivent. Pourquoi cette version ? Tout simplement pour sa compatibilité avec la version de TIBCO que nous allons utiliser ici.  Vous pouvez retrouver à la fin de ce tutoriel le tableau de compatibilité des versions.

Installation et configuration

Dans la suite du tutoriel nous allons installer l’archive à peine téléchargé.

OS: Linux Ubuntu

Pré-requis:

Maven installé
– Java installé

Ci dessous les étapes d’installation.

TIBCO BW 6 Maven plugin unzip [miaffo.net]

  • Ouvrir un terminal et exécuter le fichier install.sh (en cas de problème, vérifier les droit d’exécution du fichier ou faire un chmod +x)
  • Entrer le répertoire d’installation de Tibco (TibcoHome) lorsque cela est demandé. Dans mon cas, c’est /opt/tibco/bw
  • L’installation du plugin va poursuivre. S’il existe déjà un plugin maven pour BW6, alors la procédure d’installation va désinstaller cette version avant d’installer la nouvelle.

Il est temps de passer à l’action.

TIBCO BW 6 Maven plugin Installation [miaffo.net]

Durant la procédure d’installation, maven va mettre à jour son repo « .m2 » et le répertoire d’installation de TIBCO (Tibco home) avec divers plugin dont certains téléchargés depuis le répo central. Un message de succès va s’afficher à la fin de la procédure pour nous signaler que tout s’est bien passé. Dans tous les cas, il faudra redémarrer le studio pour la prise en compte des mises à jour avec ce nouveau plugin. Pour vérifier que l’installation s’est effectuée correctement, vous pouvez vérifier sur un des vos projets BW ou alors aller directement dans le use case suivant.

Cas d’utilisation: POC Maven automatisation

Ouvrez le studio de TIBCO et créez un projet assez basique. Il s’agit donc de créer un module projet et une application pour le module. Tout compte fait, tous les 2 modules sont créés en une seule étape. Comme sur la figure ci dessous, vérifiez si vous avez une nouvelle option « Generate POM for Application ». Cette option est visible en faisant un clic droit sur le module d’application comme ci dessous.

TIBCO BW 6 Maven plugin generate pom [miaffo.net]

Cliquez sur « Generate POM for Application » pour créer le pom de l’application. Cette action va en effet nous permettre de créer non seulement le pom du module, mais aussi un pom parent. Ce n’est pas tout. En réalité, on va faire plus que ça. On va utiliser ce plugin pour « maveniser » notre projet, et pour le déploiement dans notre environnement de développement ou d’intégration. Pourquoi ne pas l’utiliser pour déployer les archives en production. Si vous ne voulez pas configurer le informations de déploiement, alors ne sélectionnez pas « Deploy EAR to BW Administrator ».

Maven Configuration details for plugin Code for Apache Maven and TIBCO BusinessWorks [miaffo.net]

Si vous choisissez d’utiliser ce plugin pour déployer sur TEA, cliquez sur next pour configurer les paramètres de déploiement. Il faudrait comme cela semble évident avoir un environnement avec à minima un domaine, un appspace et un appnode.

Deployment details for Apache Maven and TIBCO BusinessWorks [miaffo.net]

Concrètement que s’est il passé au click de finish ?

Au départ, j’avais mon module Mavenisation et son module d’application Mavenisation.application. Lorsque j’ai cliqué sur « Generate POM for Application » il s’est produit ce qui suit:

  • création d’un module parent avec un pom
  • ajout d’un pom dans mom module Mavenisation
  • ajout d’un pom dans mon module d’application Mavenisation.application

TIBCO BW 6 Maven plugin Mavenisation [miaffo.net]

Faisons un Focus sur le pom du module d’application.

<!--?xml version="1.0" encoding="UTF-8"?-->
<project xsi:schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelversion>4.0.0</modelversion>
<parent>
<groupid>net.miaffo.tuto</groupid>
<artifactid>Mavenisation.application.parent</artifactid>
<version>1.0.0-SNAPSHOT</version>
<relativepath>../Mavenisation.application.parent</relativepath>
</parent>
<artifactid>Mavenisation.application</artifactid>
<packaging>bwear</packaging>
<properties>
<appspace>TestAS</appspace>
<keystorepath></keystorepath>
<profile>default.substvar</profile>
<backup>true</backup>
<truststorepath></truststorepath>
<domaindesc>mon domaine</domaindesc>
<agentport>8079</agentport>
<truststorepassword></truststorepassword>
<agentauth></agentauth>
<agenthost>ubuntu1</agenthost>
<httpport>9001</httpport>
<appnode>TestAN1-9001</appnode>
<osgiport>9002</osgiport>
<appspacedesc>mon appSpace</appspacedesc>
<redeploy>true</redeploy>
<keystorepassword></keystorepassword>
<backuplocation>/opt/backup</backuplocation>
<agentpassword></agentpassword>
<appnodedesc>mon appNode</appnodedesc>
<agentssl>false</agentssl>
<agentusername></agentusername>
<domain>dmiaffoDomain</domain>
<deploytoadmin>true</deploytoadmin>
</properties>
<build>
<plugins>
<plugin>
<groupid>com.tibco.plugins</groupid>
<artifactid>bw6-maven-plugin</artifactid>
<version>1.2.2</version>
<extensions>true</extensions>
<configuration>
<deploytoadmin>${deployToAdmin}</deploytoadmin>
<agenthost>${agentHost}</agenthost>
<agentport>${agentPort}</agentport>
<agentauth>${agentAuth}</agentauth>
<agentusername>${agentUsername}</agentusername>
<agentpassword>${agentPassword}</agentpassword>
<agentssl>${agentSSL}</agentssl>
<truststorepath>${truststorePath}</truststorepath>
<truststorepassword>${truststorePassword}</truststorepassword>
<keystorepath>${keystorePath}</keystorepath>
<keystorepassword>${keystorePassword}</keystorepassword>
<domain>${domain}</domain>
<domaindesc>${domainDesc}</domaindesc>
<appspace>${appSpace}</appspace>
<appspacedesc>${appSpaceDesc}</appspacedesc>
<appnode>${appNode}</appnode>
<appnodedesc>${appNodeDesc}</appnodedesc>
<osgiport>${osgiPort}</osgiport>
<httpport>${httpPort}</httpport>
<redeploy>${redeploy}</redeploy>
<backup>${backup}</backup>
<backuplocation>${backupLocation}</backuplocation>
<profile>${profile}</profile>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>DEFAULT</id>
<activation>
<activebydefault>true</activebydefault>
</activation>
<properties>
<profile>default.substvar</profile>
</properties>
</profile>
</profiles>
</project>

TIBCO BW 6 Maven plugin Mavenisation Déploiement [miaffo.net]

Conclusions

En conclusion, en exécutant mvn install, l’archive est créée et installée correctement sur TEA grâce au plugin Maven pour BW6.

Dans ce tutoriel, j’ai voulu vous montrer ce que l’on pouvait faire avec ce plugin. Dans la vraie vie, l’exécution des goals maven devra être effectuée à travers un composant comme jenkins car étant capable d’exécuter les instructions de façon autonome. A Jenkins, il faudrait ajouter un gestionnaire de code source et un dépôt d’archive comme nexus.

[INFO] Scanning for projects...
[INFO] Starting Maven Build for BW6 Project.................................
[INFO] Checking for In-Project JAR dependencies if any and Pushing them to Local Maven Repository
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] Mavenisation.application.parent
[INFO] Mavenisation
[INFO] Mavenisation.application
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Mavenisation.application.parent 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ Mavenisation.application.parent ---
[INFO] Installing /home/dmiaffo/workspace/Mavenisation.application.parent/pom.xml to /root/.m2/repository/net/miaffo/tuto/Mavenisation.application.parent/1.0.0-SNAPSHOT/Mavenisation.application.parent-1.0.0-SNAPSHOT.pom
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Mavenisation 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ Mavenisation ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/dmiaffo/workspace/Mavenisation/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ Mavenisation ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ Mavenisation ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/dmiaffo/workspace/Mavenisation/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ Mavenisation ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.22.0:test (default-test) @ Mavenisation ---
[INFO]
[INFO] --- bw6-maven-plugin:1.2.2:bwmodule (default-bwmodule) @ Mavenisation ---
[INFO] Module Packager Mojo started for Module Mavenisation ...
[INFO] Updated the Manifest version
[INFO] The OSGi verion is 1.0.0.201808261525 for Maven version of 1.0.0.qualifier
[INFO] Removing the externals entries if any.
[INFO] Created Plugin JAR with name /home/dmiaffo/workspace/Mavenisation/target/Mavenisation_1.0.0.201808261525.jar
[INFO] Adding Maven Dependencies to the Plugin JAR file
[INFO] Creating the Plugin JAR file
[INFO] Building jar: /home/dmiaffo/workspace/Mavenisation/target/Mavenisation_1.0.0.201808261525.jar
[INFO] BW Module Packager Mojo finished execution.
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ Mavenisation ---
[INFO] Installing /home/dmiaffo/workspace/Mavenisation/target/Mavenisation_1.0.0.201808261525.jar to /root/.m2/repository/net/miaffo/tuto/Mavenisation/1.0.0-SNAPSHOT/Mavenisation-1.0.0-SNAPSHOT.jar
[INFO] Installing /home/dmiaffo/workspace/Mavenisation/pom.xml to /root/.m2/repository/net/miaffo/tuto/Mavenisation/1.0.0-SNAPSHOT/Mavenisation-1.0.0-SNAPSHOT.pom
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Mavenisation.application 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ Mavenisation.application ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/dmiaffo/workspace/Mavenisation.application/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ Mavenisation.application ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ Mavenisation.application ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/dmiaffo/workspace/Mavenisation.application/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ Mavenisation.application ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.22.0:test (default-test) @ Mavenisation.application ---
[INFO]
[INFO] --- bw6-maven-plugin:1.2.2:bwear (default-bwear) @ Mavenisation.application ---
[INFO] BWEARPackager Mojo started ...
[INFO] Updated the Manifest version
[INFO] The OSGi verion is 1.0.0.201808261525 for Maven version of 1.0.0.qualifier
[INFO] Adding Modules to the EAR file
[INFO] Adding Module JAR with name Mavenisation_1.0.0.201808261525.jar with version 1.0.0.qualifier
[INFO] Adding EAR Information to the EAR File
[INFO] Manifest updated with Version 1.0.0.201808261525
[INFO] The EAR file name for Application is /home/dmiaffo/workspace/Mavenisation.application/target/Mavenisation.application_1.0.0.ear
[INFO] Building jar: /home/dmiaffo/workspace/Mavenisation.application/target/Mavenisation.application_1.0.0.ear
[INFO] BWEARPackager Mojo finished execution
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ Mavenisation.application ---
[INFO] Installing /home/dmiaffo/workspace/Mavenisation.application/target/Mavenisation.application_1.0.0.ear to /root/.m2/repository/net/miaffo/tuto/Mavenisation.application/1.0.0-SNAPSHOT/Mavenisation.application-1.0.0-SNAPSHOT.ear
[INFO] Installing /home/dmiaffo/workspace/Mavenisation.application/pom.xml to /root/.m2/repository/net/miaffo/tuto/Mavenisation.application/1.0.0-SNAPSHOT/Mavenisation.application-1.0.0-SNAPSHOT.pom
[INFO]
[INFO] --- bw6-maven-plugin:1.2.2:bwinstall (default-bwinstall) @ Mavenisation.application ---
[INFO] BWEAR Installer Mojo started ...
[INFO] No Deployment Config File set. Reading the deployment Properties from POM File.
[INFO] Connected to BWAgent. Agents found.
[INFO] Agent Name ubuntu1
[INFO] Domain exists with Name dmiaffoDomain
[INFO] AppSpace exists with Name TestAS in Domain dmiaffoDomain
[INFO] AppNode exists with Name TestAN1 -9001 in Domain dmiaffoDomain and in AppSpace TestAS
[INFO] AppNode HTTP Port  9001. AppNode OSGi Port 9002
[INFO] AppSpace is Running.
[INFO] domain dmiaffoDomain earName Mavenisation.application_1.0.0.ear Ear file to be uploaded /home/dmiaffo/workspace/Mavenisation.application/target/Mavenisation.application_1.0.0.ear
[INFO] Generating backup ear file for application Mavenisation.application
[INFO] Downloaded successfully at: /opt/20180826-152503/Mavenisation.application_1.0.0.ear
[INFO] Generating backup substvar file for profile default.substvar
[INFO] Downloaded successfully at: /opt/20180826-152503/default.substvar
[INFO] Application exists with name Mavenisation.application. Undeploying the Application as Redeploy flag is true.
[INFO] Uploading the Archive file Mavenisation.application_1.0.0.ear
[INFO] Deploying the Application with name Mavenisation.application with Profile default.substvar
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Mavenisation.application.parent .................... SUCCESS [  0.251 s]
[INFO] Mavenisation ....................................... SUCCESS [  1.560 s]
[INFO] Mavenisation.application ........................... SUCCESS [  4.716 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.911 s
[INFO] Finished at: 2018-08-26T15:25:07+02:00
[INFO] Final Memory: 18M/60M
[INFO] ------------------------------------------------------------------------

Matrice de compatibilité des versions du Plugin Maven et TIBCO Businessworks 6

Maven Plugin Version BusinessWorks Version
v 2.0.0 BW 6.5.0 , BWCE 2.4.0
v 1.3.1 BW 6.4.2 , BWCE 2.3.4
v 1.2.2 BW 6.3.4 to BW 6.4.1 , BWCE 2.3.0 to BWCE 2.3.3

Références:

[1] – https://github.com/TIBCOSoftware/bw6-plugin-maven/releases

[2] – https://www.tibco.com/resources/datasheet/tibco-businessworks-container-edition

Dernière mise à jour: dimanche 10/01/2019 21:45

Dieudonné MIAFFO

11 commentaires

  1. ckar Répondre

    Whaaa super article merci beaucoup. C’est du super bon travail sauf que tout le monde s’en branle vu que c’est un produit de merde.

    • bdelbos Répondre

      Cette remarque n’est absolument pas constructive. Pourquoi ? Il a ses défauts, mais là n’est pas le sujet.

    • virelo Répondre

      Haha ! Absolument !
      C’est surement un bon article (même si tu devrais réencoder ton pom.xml et pas copier avec les &) mais c’est grave un produit de merde.
      Le combo stabilité, plus performance pourrie c’est simplement un viol. Passez votre chemin les ingénieurs EAI/ESB/SOA. Ouvrez les yeux sur d’autres technologies.
      Que ce soit en .NET, en Java avec l’écosystème Spring ou dans n’importe quelle techno vous arriverez plus rapidement et plus efficacement qu’en utilisant des technologies dépassés, sur des formats privés, avec des moteurs non open source et tout buggé.

      • DMI Auteur de l’articleRépondre

        Bonjour virelo,
        Sur le coup des & dans le pom.xml t’as certainement raison. Pour le produit, il faut bien faire la part des choses selon moi.

        Le choix d’un produit est pour répondre à un besoin précis. Aujourd’hui les entreprises font le choix de la techno qui leur permet de couvrir leur
        besoin. Que ce soit en open ou propriétaire, il faut rester concentré sur la couverture des besoins en ayant en esprit bien évidement le coût de la solution.
        D’ailleurs sur le choix d’une solution, je conseille de lire le livre que j’ai écrit sur ce sujet « https://miaffo.net/12-questions-a-se-poser-pour-choisir-une-solution-esb/ ».

        Est ce que TIBCO est la meilleure solution ESB sur le marché ? La réponse n’est pas forcément OUI. Le problème aujourd’hui est que les entreprises
        ne choisissent pas une solution en ayant fait une étude sur le choix de la solution. Il peut donc arriver que l’outil peut importe l’éditeur ne soit pas adapté au contexte de l’entreprise.

        Pour la comparaison entre les langage .NET, Java … et une solution ESB, ça peut pas se faire. Les solutions adressées ne sont pas le même.
        Avec .NET, Java, je peux très bien développer et exposer simplement des web services. Pourrais je faire de même dans les traitements ETL ?
        Avec quel temps de delivery ? Pareil, Talend par exemple pourrait mieux adresser cette question que TIBCO. Donc une fois de plus il faut rester concentré sur sa couverture des besoins.

        Au plaisir.

        • virelo Répondre

          « Not committing your entire career to one specific tool enables you to be more objective about its strengths, its limitations, and its future potential. »

          Rien de plus à rajouter.

  2. DMI Auteur de l’articleRépondre

    C’est un produit qui fait ce qu’il doit faire s’il est utilisé à bonne escient. En tout cas, il fait mieux que les concurrents. Son seul défaut peut être le coût de mise en œuvre et peut être le manque de consultants qualifiés.

    • DMI Auteur de l’articleRépondre

      C’est toujours un plaisir de partager le savoir.
      A très bientôt sur miaffo.net Rolph

Laisser un commentaire

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