Fichier de versionning

programmation

Nous allons ici voir comment créer un fichier contenant les informations sur la version du site sur laquelle vous travaillez ou que vous consultez . Quel est l'intérêt ? Ils y en a plusieurs : pouvoir identifier simplement sur quel environnement vous êtes (prod, préprod, staging, dev), connaitre la version de la release déployée, la date de déploiement etc.

Créer le fichier

Pour ma part j’ai choisi d'écrire un contenu JSON, facile à lire et à exploiter par la suite.
Créons donc un fichier “version.txt” que nous plaçons à la racine du projet (le dossier qui est exposé aux visiteurs), je vous conseille même d’utiliser un nom de fichier qui sera unique, par exemple nomDeVotreBoite-version.txt.

Voici le contenu de mon fichier :

{ 
   Environment: "Prod", 
   Branch: "", 
   Tag: "2.0.2", 
   Git show: "commit 42fc8f52806011er98Hsd052c2fb084e8bfc55 Merge: 0365bd5 9ca069c Author: Severin Bruhat  Date: Tue Sep 26 17:34:16 2017 +0100 Merge branch 'release/2.0.2'", 
   Link: "https://bitbucket.org/compte/projet/commits/42fc8f52806011er98Hsd052c2fb084e8bfc55",
   Deployed at: "2017-09-27T09:59:18BST"
}

Bien sûr, libre a vous de mettre ce que vous souhaitez dans ce fichier.

Automatiser la création du fichier

Si vous utilisez un script de provisionnement, je vous propose d’automatiser la tâche pour qu'à chaque nouveau build, le fichier soit mis à jour.
J’utilise le script suivant:

#!/usr/bin/env bash
DIR="$(dirname "$0")/../"
cd $DIR

SHA=$(git rev-parse HEAD)
BRANCH=$(git symbolic-ref --short HEAD)
DATE=$(date +%FT%T%Z)
TAG=$(git describe --abbrev=0 --tags 2> /dev/null)
GITSHOW=$(git show -s --format=medium $SHA)
LINK="https://bitbucket.org/blonde/scottish-friendly-cms/commits/$SHA"

echo "{\"Branch\":\""$BRANCH"\", \"Tag\":\""$TAG"\", \"Git show\":\""$GITSHOW"\", \"Link\":\""$LINK"\", \"Deployed at\":\""$DATE"\"}"

C’est via ce fichier que le JSON est généré, libre à vous d’y insérer les données qui vous seront utiles.

Mon script de provisioning exécute ensuite ce script pour générer le fichier version.txt:

sh $DIR/provision/version.sh > $DIR/version.txt

Maintenant votre projet possède le fichier de versionning, lorsque vous visitez le site, vous pouvez le consulter à l’adresse http(s)://monsite.fr/version.txt.
Petit tips : utilisez le plugin JSONView pour visualiser ce fichier de façon plus compréhensible.

C’est pas mal, mais je vous propose d'améliorer ceci afin de pouvoir identifier vos environnements de façon visuelle.

Utiliser un user script

Un user script est simplement un fichier javascript que vous pouvez ajouter à une extension dans votre navigateur et qui va vous permettre de modifier le comportement et l’affichage de certaines pages. Pour ma part, j’utilise Tampermonkey. Installez-le et créez un nouveau script:

tampermonkey

Ajouter ce script:

Maintenant que cette extension est activée, le script va, sur toutes les pages visitées (tous les sites), chercher le fichier version.txt et l’afficher proprement dans un bandeau coloré:

versionVous remarquerez que le script contient des conditions afin de changer la couleur de fond en fonction de l'environnement (basé sur le nom de domaine).

Voilà c’est terminé, je teste ce système au boulot et le fais évoluer régulièrment, une chose intéressante serait par exemple de restreindre l'accès à ce fichier à certaines IP via une règle dans nginx. N'hésitez pas à me faire des retours afin de m’aider à l'améliorer.

Laisser un commentaire

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

*

code