Retour : Page Principale > sommaire méthodologie

Méthode de mise en ligne des applications (prod/test)

Que faire quand on a ajouté une fonctionnalité / résolu un bug dans un logiciel, et qu'on veut mettre à jour en ligne ?

0. Généralités

À de rares exceptions près, tous les logiciels (interfaces, scripts, services) sont en ligne en deux exemplaires.
  • une version de test pour l'intégration continue
  • une version de prod
Pour les flux de travail, se reporter à Flux de travail avec Git et Flux de travail avec SVN.

1. Les versions de test

https://beta.tela-botanica.org/appli:
http://www.tela-botanica.org/appli-test:
https://api-test.tela-botanica.org

Emplacements

services et scripts

interfaces

interfaces (ancienne installation <= 2017)


Déploiement

Les applications de test sont en intégration continue; elles sont toujours branchées sur le master (avec Git) ou le trunk (avec SVN).
Important : toujours exécuter les commandes des gestionnaires de versions avec l'utilisateur du compte système associé et non en root.

Avec Git

première installation
  • cloner le dépôt :
  • copier les fichier de configuration par défaut / remplir les fichiers de configuration nouvellement créés
  • installer les dépendances si besoin (lire chapitre 4 ci-dessous)
mise à jour
  • vérifier que tout est propre et qu'on est bien sur la branche master :
    • git status
  • si c'est pas propre essayer de comprendre pourquoi :
    • git diff lefichier/qui/a/change.php
  • nettoyer :
    • git checkout .
  • mettre à jour :
    • git pull

Avec SVN

première installation
  • checkouter le dépôt, sur le trunk :
  • copier les fichier de configuration par défaut / remplir les fichiers de configuration nouvellement créés
  • installer les dépendances si besoin (lire chapitre 4 ci-dessous)
mise à jour
  • vérifier que tout est propre :
    • svn status
  • vérifier qu'on est bien sur le trunk :
    • svn info
  • si c'est pas propre essayer de comprendre pourquoi :
    • svn diff lefichier/qui/a/change.php
  • nettoyer :
    • svn revert .
  • mettre à jour :
    • svn update

2. Les versions de prod

https://www.tela-botanica.org/appli:
https://api.tela-botanica.org

Emplacements

services et scripts

interfaces

interfaces (nouvelle installation >= 2017)


services et scripts

interfaces


Déploiement

Les applications de prod sont figées sur une release stable (sauf correction de bug urgente - hotfix); elles sont toujours branchées sur le dernier tag de release (avec Git) ou la dernière branche (avec SVN).
Important : toujours exécuter les commandes des gestionnaires de versions avec l'utilisateur du compte système associé et non en root.

Avec Git

première installation
  • cloner le dépôt :
  • basculer sur le tag de release le plus récent :
    • git checkout v1.2.3-mon-super-tag
  • copier les fichier de configuration par défaut / remplir les fichiers de configuration nouvellement créés
  • installer les dépendances si besoin (lire chapitre 4 ci-dessous)
mise à jour
  • vérifier que tout est propre :
    • git status
  • récupérer les infos à jour :
    • git fetch origin
  • basculer sur le tag de release le plus récent :
    • git checkout v1.2.4-mon-tag-encore-mieux

Avec SVN

première installation
mise à jour

3. Code compilé non versionné (CeL, DeL, CoeL)

Bennes-y tout là-bas d'dans !

Certaines applications sont écrites en langage compilé, et le résultat de la compilation n'est pas versionné. C'est le cas de CeL, DeL et CoeL, écrits en Java / GWT.

Pour mettre en ligne ces applis, il faut :
  • les compiler en local
  • les tester bien sûr
  • envoyer le code sur le serveur en SFTP (avec Filezilla par exemple) - en général le dossier war des applications GWT correspond au dossier appli sur le serveur.
Attention : prendre garde à ne pas écraser la config; normalement elle est dans un dossier séparé mais on ne sait jamais.

4. Dépendances

Certaines applications ont des dépendances gérées avec un système de paquets comme Composer, Bower ou npm. Le fichier README de ces applis est censé indiquer comment faire pour les installer, mais en gros c'est simple :
  • si un fichier composer.json est présent, faire un composer install
  • si un fichier package.json est présent, faire un npm install
  • si un fichier bower.json est présent, faire un bower install
Exception : le thème du nouveau site Web, qui utilise Webpack et SASS, nécessite un npm run build à chaque mise à jour.

5. Sécurité

Accès aux fichiers / dossiers sensibles

La création d'une copie locale d'un dépôt Git ou SVN sur le serveur ajoute un dossier .get ou .svn à la racine de la copie, qui contiennent des informations sensibles.
C'est aussi le cas pour les fichiers de configuration .ini et .json.
Il faut régler le serveur Web pour éviter l'accès en HTTP à ces fichiers et dossiers.

Apache

Ajouter dans un fichier .htaccess la ligne suivante
# Repourne une erreur 404 lors de l'accès aux dossiers .svn (éviter de savoir que le dossier existe)
RedirectMatch 404 /\\.svn(/|$)
RedirectMatch 404 /\\.git(/|$)
RedirectMatch 404 \\.ini$
RedirectMatch 404 \\config.json$


Nginx

location ~ "\.(svn|git|ht|hg|bzr|cvs)" {
  • return 404;
}
location ~ "\.ini$" {
  • return 404;
}
location ~ "config\.json$" {
  • return 404;
}