Projet : Rhomeo
Client : CENRA
Licence : CeCILL version 2.1

Ce projet est une boite à outils pour le calcul d'indicateurs scientifiques portant sur la faune et la flore de zones humides. Le cadre d'application est défini par des protocoles standardisés, décrivant les relévés nécessaires pour les mesures à effectuer.

## Procédure pour la release :

La release du projet se fait en trois étapes :
 - tag des sources,
 - création des binaires,
 - déploiement des binaires.

### Tag des sources

Avant de faire la release, vérifiez bien que tous les travaux ont été rendus sur la branche principale.  
Clonez le projet, placez vous sur le commit sur lequel sera basé le tag.  
Ensuite, rendez-vous dans le dossier *build* à la racine du projet. A cet endroit vous trouverez un script *release.sh*. En éxecutant ce dernier avec les bons paramètres, un tag sera créé localement.  
Le script prends un argument obligatoire `-r` ou `--release-version`. C'est le numéro de version du projet pour la release (de la forme X.x). Le tag créé portera le même nom.
Il est possible de donner un deuxième argument, dans le cas où le tag est créé en bout de branche. Ce paramètre est `s` ou `--snapshot-version`. Il permet de rajouter un commit sur la branche actuelle. Ce commit modifiera la version du projet avec la valeur donnée pour l'argument. Cela permet de mettre à jour la version de développement après une release.
Une fois que vous avez vérifié que votre tag est bien formé, vous pouvez le pousser sur le serveur : `git push --tags`.

### Création des binaires

Une fois le tag créé, vous pouvez générez les paquets binaires nécessaires. Pour créer un paquet pour une plate-forme spécifique, vous devez appliquer la procédure suivante depuis cette même plate-forme. Selon l'OS, certains outils devront être installés au préalable. Voici la liste des systèmes supportés et les outils nécessaires :
 - Windows 7, 8 ou 10 : [InnoSetup 5](http://www.jrsoftware.org/isdl.php).
 - Linux : [Dpkg](https://wiki.debian.org/fr/dpkg) si vous voulez générer un paquet *.deb*. [RPM](http://rpm.org/) pour créer des paquets au format *.rpm*.
 - MacOS : Aucun logiciel suplémentaire.

Dans tous les cas, vous aurez également besoin des outils suivants :
 - [JDK 8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) update 131 ou supérieure,
 - [Apache maven](https://maven.apache.org/download.cgi) version 3.5.0 ou supérieure.

Une fois votre environnement configuré, ouvrez une invite de commande, puis placez-vous à la racine du projet. Commencez par récupérer le tag à déployer :
```sh
git checkout $TAG
```

Ensuite, éxecuter les commandes suivantes pour créer le paquet binaire pour votre plate-forme :
```sh
mvn clean install
cd desktop
mvn jfx:native
```

Cela doit générer le fichier d'installation du logiciel dédié à votre plate-forme dans le dossier *desktop/target/jfx/native*, depuis la racine du projet.

### Déploiement des binaires
Pour activer la détection de mise à jour via l'application Rhomeo, il faut publier les paquets précédemment générés.

Cela consiste en deux étapes :
 - Exposer chacun des fichiers d'installation via un lien de téléchargement http(s).
 - Préparer et publier le fichier de description de la mise à jour.

 Nous ne parlerons pas de la première étape ici, car les façons de procéder sont multiples, et dépendent des outils à disposition de l'administrateur.

Pour la deuxième étape, il faut créer un fichier JSON contenant les attributs suivants :
 - La version de l'application déployée,
 - La date de livraison de la mise à jour (au format ISO 8601 : zoned date time),
 - Une note de version, donnée sous forme de tableau de chaines de caractères,
 - Les URLs de téléchargement des paquets de chaque système d'exploitation cible,
 - Le hash MD5 pour chaque paquet d'installation, sous forme de texte hexa-décimal (Optionel).

Voici un exemple pour ce fichier :
```JSON
{
  "version":"X.x",
  "date":"2016-05-02T10:12:00 GMT+02:00",
  "releaseNote":[
    "Une fonctionnalité",
    "Une autre fonctionnalité"
  ],
  "win32":"http://server.com/dir/myPackage.exe",
  "win32MD5":"Hexadecimal-MD5",
  "macOS64":"http://server.com/dir/myPackage.dmg",
  "macOS64MD5":"Hexadecimal-MD5",
  "deb64":"http://server.com/dir/myPackage.deb",
  "deb64MD5":"Hexadecimal-MD5",
  "rpm64":"http://server.com/dir/myPackage.rpm",
  "rpm64MD5":"Hexadecimal-MD5"
}
```  
 Une fois que le paquet est prêt, il faut le déployer à l'adresse exacte à laquelle va se connecter la calculette Rhoméo pour vérifier ses mises à jour.
