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

6 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.

  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 *