Ce gabarit est un modèle de projet Gradle pour la construction d'une application Adélia Cloud sous la forme d'un fichier au format WAR.
Cette construction impose que les objets Adélia faisant partie de cette application soient regroupés sous la forme d'artéfacts produits par un projet Adélia build.
De plus, ce gabarit permet, via le plugin Gretty (https://github.com/akhikhl/gretty), d'exécuter l'application Adélia Cloud sous Tomcat et d'exécuter des tests d'intégration.
Ces tests doivent être définis dans un autre projet Gradle.
Création d'un projet Adélia Cloud build
La création du projet s'obtient en décompressant le fichier %ADELIWS%\Build\templates\adelia cloud application.zip : le répertoire adelia cloud application obtenu peut être déplacé et renommé à volonté.
Le poste de construction de l'application Adélia Cloud et le poste de build Adélia peuvent être deux postes différents.
↑ Haut de page
Configuration d'un projet Adélia Cloud build
Après avoir créé un projet, il est nécessaire de le configurer avant de pouvoir l'exécuter. La configuration et l'initialisation d'un projet de build se basent sur les paramètres renseignés dans le fichier gradle.properties, à savoir :
Paramètres généraux
adeliaVersion (obligatoire)
Chaîne alphanumérique représentant le numéro de version du runtime Adélia inclus dans le WAR de l'application Adélia Cloud.
Cette version de runtime doit être supérieure ou égale à celle utilisée par le poste de build Adélia pour générer les artéfacts.
version (obligatoire)
Chaîne alphanumérique représentant le numéro de version de l'application. Chaque artéfact construit aura le même numéro de version. On distingue plusieurs types de version :
-
Les versions release (ou finales) représentant les versions officielles de l'application (ex : 1.0.0),
Les versions snapshot (ou instantanées) représentant les versions en cours de développement de l'application (ex : 1.0.1-SNAPSHOT),
Les versions pré-release (ou release-candidate) représentant les versions candidates à être les versions finales (ex : 1.0.1-RC01).
group (obligatoire)
Chaîne alphanumérique représentant l'identifiant du groupe ou de l'organisation à l'origine du projet. La valeur suit les mêmes règles de nommage que les packages Java (ex : com.hardis), et on choisit généralement comme valeur le nom du top package du projet.
appWarName (optionnel)
Chaîne alphanumérique représentant le nom du fichier WAR produit. Par défaut, ce fichier a pour nom <nom du répertoire du projet>-<valeur du paramètre version>.war.
Si ce paramètre est renseigné alors le fichier aura pour nom <valeur du paramètre appWarName>-<valeur du paramètre version>.war.
↑ Haut de page
Paramètres Gretty
Gretty (http://akhikhl.github.io/gretty-doc/index.html) est un plugin Gradle permettant d'exécuter des applications Cloud au sein de conteneurs de servlets J2EE intégrés. Gretty supporte Jetty en version 7, 8 et 9 et Tomcat en version 7 et 8.
Par défaut, les versions exactes de Tomcat utilisées sont 7.0.78 et 8.0.44, mais il est possible de changer ces numéros de version. La configuration de Gretty (http://akhikhl.github.io/gretty-doc/Gretty-configuration.html) et la configuration de l'exécution de l'application Cloud doivent se faire principalement dans le fichier build.gradle du projet (dans ce gabarit, le conteneur de servlet paramétré est Tomcat 8).
Pour rappel : une application Adélia Cloud est compatible avec Tomcat en version 8.0.3 minimum.
tomcat8Version (optionnel)
Chaîne alphanumérique représentant le numéro de version du Tomcat 8 à utiliser (https://archive.apache.org/dist/tomcat/tomcat-8/).
Assurez-vous que le changement de valeur de version reste en cohérence avec la valeur du paramètre tomcat8ServletApiVersion.
tomcat8ServletApiVersion (optionnel)
Chaîne alphanumérique représentant le numéro de version de la spécification de l'API Servlet utilisée par l'implémentation du Tomcat défini par tomcat8Version. Cette valeur est donnée dans le tableau disponible à l'adresse suivante : https://tomcat.apache.org/whichversion.html.
↑ Haut de page
Paramètres d'exécution des tests d'intégration
Il est possible d'exécuter les tests d'intégration sur l'application Cloud après le démarrage de Tomcat. Ces tests doivent être définis sous la forme d'un projet Gradle, qui sera exécuté une fois l'application Cloud démarrée. Pour plus de détails, consultez la page d'aide sur la construction de tests d'intégration.
pathToIntegrationTestBuildFile (optionnel)
Définit le chemin (absolu ou relatif par rapport au répertoire du projet Adélia Cloud build) du fichier build.gradle qui déclare les tests à exécuter.
↑ Haut de page
Paramètres des gestionnaires de référentiels
L'utilisation des référentiels d'artéfacts lors de l'exécution d'un build Adélia Cloud se fait lors des phases suivantes :
Dans la phase de création du fichier WAR, le build utilise un référentiel pour télécharger (référentiel de download) les artéfacts nécessaires à la construction de l'artéfact de l'application Cloud. Ces artéfacts sont :
les artéfacts du runtime Adélia nécessaires à l'exécution d'une application Adélia Cloud,
vos propres artéfacts d'objets Adélia composant l'application Cloud : ceux-ci sont issus de l'exécution d'un projet Adélia build.
Dans la phase finale de stockage de l'artéfact construit, il est possible de définir un référentiel pour transférer (référentiel d'upload) cet artéfact versionné. En fonction du type de version (release ou snapshot), il est possible de définir le référentiel associé.
downloadArtifactsReleaseRepo (obligatoire)
URL d'accès au référentiel de download des artéfacts dépendants nécessaires au build. Ce référentiel doit permettre d'accéder :
-
aux artéfacts du référentiel Hardis (runtime Adélia Cloud),
à vos propres artéfacts d'objets Adélia composant votre application Cloud. Ces artéfacts sont ceux en version release si vous buildez votre application Cloud en version release.
Par défaut, et uniquement à titre d'exemple, la valeur de ce paramètre est l'URL du référentiel est fourni par Hardis.
A la place, dans votre Nexus, il faut créer votre propre référentiel privé pour qu'il soit un regroupement du référentiel Hardis et de votre référentiel privé en version release. En fonction de votre propre configuration du Nexus utilisé pour vos projets Adélia build, il s'agit soit du référentiel crée par défaut par Nexus et nommé "Releases", soit un autre référentiel "hosted repository" ayant une "Repository policy" à Release et créée par vos soins).
Pour cela, après connexion à votre Nexus, à partir de la vue "Repositories", il faut ajouter un nouveau référentiel défini comme groupe des référentiels décrits plus haut :
-
- Ouvrez la fenêtre de définition d'un référentiel via la commande "Add repository group",
- A partir de la section "Available Repositories", ajoutez, dans la section "Ordered Group Repositories", le référentiel privé qui est proxy du référentiel Hardis ainsi que le référentiel privé hosted qui sert de stockage à vos artéfacts en version release.
Pour finir, remplacez la valeur du paramètre downloadArtifcatsReleaseRepo par l'URL "Repository Path" du référentiel de groupe nouvellement créée.
downloadArtifactsReleaseRepo.username / downloadArtifactsReleaseRepo.password (optionnels)
Définit le profil utilisateur et le mot de passe utilisés pour la connexion au référentiel de download.
Par défaut et à titre d'exemple, ces identifiants sont ceux du référentiel de download Hardis, mais il faut les remplacer par ceux de votre propre référentiel privé de groupe (cf. downloadArtifactsReleaseRepo ci-dessus). Comme on accède à ce référentiel en lecture seule, Nexus autorise une connexion anonyme : dans ce cas, laissez les champs "username" et "password" non renseignés.
downloadArtifactsSnapshotRepo (optionnel)
URL d'accès au référentiel de download des artéfacts dépendants nécessaires au build. Ce référentiel doit permettre d'accéder :
-
aux artéfacts du référentiel Hardis (runtime Adélia Cloud). Ces artéfacts ne sont disponibles qu'en version release,
à vos propres artéfacts d'objets Adélia composant votre application Cloud. Ces artéfacts sont ceux de la version snapshot si vous construisez votre application Cloud en version snapshot.
Dans votre Nexus, il faut créer votre propre référentiel privé pour qu'il soit un regroupement du référentiel Hardis et de votre référentiel privé en version snapshot. En fonction de votre propre configuration du Nexus utilisé pour vos projets Adélia build, il s'agit soit du référentiel crée par défaut par Nexus et nommé "Snapshots", soit un autre référentiel "hosted repository" ayant une "Repository policy" à Snapshot et créée par vos soins).
Pour cela, après connexion à votre Nexus, à partir de la vue "Repositories", il faut ajouter un nouveau référentiel défini comme groupe des référentiels décrits plus haut :
-
Ouvrez la fenêtre de définition d'un référentiel via la commande "Add repository group",
A partir de la section "Available Repositories", ajoutez dans la section "Ordered Group Repositories" le référentiel privé qui est proxy du référentiel Hardis ainsi que le référentiel privé hosted qui sert de stockage à vos artéfacts en version snapshot.
Pour finir, remplacez la valeur du paramètre downloadArtifcatsSnapshotRepo par l'URL "Repository Path" du référentiel de groupe nouvellement créée.
downloadArtifactsSnapshotRepo.username / downloadArtifactsSnapshotRepo.password (optionnels)
Définit le profil utilisateur et le mot de passe utilisés pour la connexion au référentiel de download. Ce profil doit permettre d'accéder à votre propre référentiel privé de groupe (cf. downloadArtifactsSnapshotRepo ci-dessus). Comme ce référentiel est accédé en lecture seule, Nexus autorise une connexion anonyme : dans ce cas, laissez les champs "username" et "password" non renseignés.
uploadArchivesReleaseRepo (optionnel)
URL d'accès au référentiel d'upload utilisé pour le stockage de l'artéfact WAR construit avec une version release. Ce référentiel permettra de mettre à disposition les artéfacts en version finale.
uploadArchivesReleaseRepo.username / uploadArchivesReleaseRepo.password (optionnels)
Définit le profil utilisateur et le mot de passe utilisés pour la connexion au référentiel d'upload des artéfacts en version release.
Par défaut, Nexus permet d'utiliser le profil deployment (username et password fixés à la valeur "deployment").
uploadArchivesSnapshotRepo (optionnel)
URL d'accès au référentiel d'upload utilisé pour le stockage de l'artéfact WAR construit avec une version snapshot. Ce référentiel permettra de mettre à disposition les artéfacts en cours de développement.
uploadArchivesReleaseRepo.username / uploadArchivesReleaseRepo.password (optionnels)
Définit le profil utilisateur et le mot de passe utilisés pour la connexion au référentiel d'upload des artéfacts en version snapshot.
Par défaut, Nexus permet d'utiliser le profil deployment (username et password fixés à la valeur "deployment").
↑ Haut de page
Configuration des composants de l'application Adelia Cloud à builder
Ces composants sont les artéfacts d'objets Adélia issus de l'exécution d'un projet Adélia build.
Il est nécessaire de les déclarer dans le projet Adélia Cloud build pour qu'ils soient ajoutés dans le WAR produit.
Pour cela :
ouvrez le fichier build.gradle avec un éditeur texte, puis,
dans la section "dependencies" (Declare your artifacts needed to build the cloud application here), déclarez vos artéfacts.
Artéfacts de type Cloud / Pojo
Ces artéfacts doivent être déclarés en insérant l'instruction suivante :
runtime group:'<nom du groupe de l'artéfact>', name : '<nom du fichier de l'artéfact sans la version>', version: '<numéro de version de l'artéfact>'
Exemple de déclaration d'artéfact issu d'un build par domaine :
Pour l'artéfact de type Cloud dont le nom de fichier est myapp-app_area_1_cloud-1.1.0-SNAPSHOT.jar, il faut saisir runtime group:'my.company', name : 'myapp-app_area_1_cloud', version: '1.1.0-SNAPSHOT'.
La valeur de group est celle du paramètre "group" dans le fichier gradle.properties du projet Adélia build ayant construit l'artéfact.
Exemple de déclaration d'artéfact issu d'un build par composant :
Pour l'artéfact de type Cloud dont le nom de fichier est prefix_compo_1_cloud-1.1.0-SNAPSHOT.jar, il faut saisir runtime group:'my.company', name : 'prefix_compo_1_cloud', version: '1.1.0-SNAPSHOT'.
La valeur de group est celle du paramètre "groupId" du composant dont est issu l'artéfact.
Artéfacts de type XXServer / CrystalReportsCloud
Ces artéfacts ne font pas partie du WAR produit. Si vous devez exécuter des tests d'intégration sur une application Adélia Cloud qui contient ces composants, vous devez les déployer à la main avant leur exécution.
Fichiers de paramétrage de l'application Adélia Cloud à builder
Par défaut, un certain nombre de fichiers de configuration sont livrés avec ce gabarit. Ces fichiers sont décrits dans le tableau suivant :
Nom du fichier |
Chemin dans le site Web (dans l'arborescence du site créé par Adélia Cloud via l'option "Créer/Actualiser le site") |
Chemin dans le projet Adelia Cloud build |
apiva.properties |
<web-app>\WEB-INF\classes\apiva.properties |
<projet cloud build>\src\main\resources\apiva.properties |
axis2.xml |
<web-app>\Axis2\conf\axis2.xml |
<projet cloud build>\src\main\webapp\Axis2\conf\axis2.xml |
beans.xml |
<web-app>\WEB-INF\conf\beans.xml |
<projet cloud build>\src\main\webapp\WEB-INF\conf\beans.xml |
CfgConfiguration.properties |
<web-app>\WEB-INF\classes\CfgConfiguration.properties |
<projet cloud build>\src\main\resources\CfgConfiguration.properties |
desktop.properties |
<web-app>\WEB-INF\conf\desktop.properties |
<projet cloud build>\src\main\webapp\WEB-INF\conf\desktop.properties |
ehcache.xml |
<web-app>\WEB-INF\conf\ehcache.xml |
<projet cloud build>\src\main\webapp\WEB-INF\conf\ehcache.xml |
favicon.ico |
<web-app>\favicon.ico |
<projet cloud build>\src\main\webapp\favicon.ico |
fontMapping.properties |
<web-app>\WEB-INF\conf\fontMapping.properties |
<projet cloud build>\src\main\webapp\WEB-INF\conf\fontMapping.properties |
index.jsp |
<web-app>\index.jsp |
<projet cloud build>\src\main\webapp\index.jsp |
log4j.lcf |
<web-app>\WEB-INF\conf\log4j.lcf |
<projet cloud build>\src\main\webapp\WEB-INF\conf\log4j.lcf |
logout.jsp |
<web-app>\logout.jsp |
<projet cloud build>\src\main\webapp\logout.jsp |
themes.properties |
<web-app>\WEB-INF\conf\themes.properties |
<projet cloud build>\src\main\webapp\WEB-INF\conf\themes.properties |
wagon.key |
<web-app>\WEB-INF\conf\wagon.key |
<projet cloud build>\src\main\webapp\WEB-INF\conf\wagon.key |
wagon.xml |
<web-app>\WEB-INF\conf\wagon.xml |
<projet cloud build>\src\main\webapp\WEB-INF\conf\wagon.xml |
web.xml |
<web-app>\WEB-INF\web.xml |
<projet cloud build>\src\main\webapp\WEB-INF\web.xml |
wicfgvla.ini |
<web-app>\WEB-INF\conf\wicfgvla.ini |
<projet cloud build>\src\main\webapp\WEB-INF\conf\wicfgvla.ini |
Il se peut qu'un certain nombre de ces fichiers aient été modifiés par l'utilisateur lors de la phase de développement de l'application Adélia Web. Il est alors nécessaire de propager les modifications des fichiers du site de l'application Web vers les fichiers du projet Adélia Web build. Cette propagation peut se faire soit manuellement, soit automatiquement via la tâche Gradle copyWebappConfigurationFilesFromAdeliaCloudsite.
↑ Haut de page
Exécution d'un projet Adelia Cloud build
Liste des tâches Gradle du build Adélia Cloud
copyWebappConfigurationFilesFromAdeliaCloudsite
Tâche de copie des fichiers de configuration (cf. tableau 1 ci-dessus) à partir d'un site d'une application Adélia Cloud. Le chemin du site doit être défini en fixant une valeur au paramètre pathToAdeliaCloudsite présent dans le fichier gradle.properties.
L'ensemble des fichiers de configuration dans le répertoire du projet Adélia Cloud build sont remplacés par ceux présents dans le répertoire pathToAdeliaCloudsite.
Cette tâche doit être appelée avant la tâche build.
build
Tâche de construction de l'artéfact WAR. Celui-ci est placé dans le sous-répertoire build\libs du projet de build.
clean
Tâche permettant de supprimer les objets créés lors de l'exécution de la tâche build (le sous-répertoire build est supprimé).
appRunWar (tâche Gretty)
Démarre le conteneur de servlet paramétré (par défaut Tomcat 8) ainsi que l'application Adélia Cloud. Appuyez sur une touche dans la fenêtre de commande DOS qui a exécuté cette tâche pour arrêter le conteneur de servlet (cf. http://akhikhl.github.io/gretty-doc/Gretty-tasks.html).
appStartWar (tâche Gretty)
Démarre le conteneur de servlet paramétré (par défaut Tomcat 8) ainsi que l'application Adélia Cloud. Dans ce cas, la tâche appStop doit être exécutée pour arrêter le conteneur de servlet (cf. http://akhikhl.github.io/gretty-doc/Gretty-tasks.html).
farmIntegrationTest (tâche Gretty)
Déclenche l'exécution des tests d'intégration (si le paramètre pathToIntegrationTestBuildFile est renseigné).
Cette tâche est issue du plugin Gretty : le conteneur de servlets paramétré (par défaut Tomcat 8) est démarré ainsi que l'application Adélia Cloud, puis les tests d'intégration sont exécutés, et enfin le conteneur de servlet est arrêté.
Si l'artéfact WAR n'existe pas à l'appel de la tâche farmIntegrationTest, celui-ci est créé avant l'exécution de cette tâche.
uploadArchives
Cette tâche permet de transférer l'artéfact construit dans le référentiel d'upload.
Il est nécessaire de renseigner la clé uploadArchivesReleaseRepo ou uploadArchivesSnapshotRepo en fonction du type de version de l'artéfact.