Le repository front-it est composé de plusieurs images docker qui sont déployables à l'aide d'un fichier docker-compose.yaml à la racine du repository.
⚠️ Pour lancer l'application en local voir la documentation sur l'environnement de développement
La procédure de déploiement consiste à build les images nécessaires au service docker sur la VM qui bénéficie d'une connexion à internet : la VM Lab (OV1-APP-LAB-DEV-003). Puis de déployer ces images sur une VM cible grâce au fichier docker-compose.yaml. Les images sont archivées sur un dépôt Nexus qui permet de transférer une image d'une VM à une autre.
Tables des matières
2 manière de build les images du repository :
Listes des images :
front/appfront/reverse-proxyfront/oauth2-proxy
Grâce au fichier .gitlab.yaml les images se build automatiquement dès lors qu'un commit est passé sur les branches suivantes du repository champollion/front-it et push les images sur le dépôt Nexus du projet Champollion.
- branch gitlab : dev => dossier nexus : champollion-dev
- branch gitlab : preprod => dossier nexus : champollion-preprod
Vous pouvez suivre le build dans l'onglet CI / CD > Pipelines du repository champollion/front-it.
🚨 Important : Pensez à mettre à jour la version du tag sur les variables des 3 images que vous modifiez pour ne pas écraser les images précédentes et conserver un historique (sauf en cas de correctif : on ne veut pas conserver des images qui ne fonctionnent pas).
Pour cela éditez les variables ..._IMAGE_TAG des fichiers présents sur le repository selon la branche sur laquelle vous faite le merge :
- dev :
env/.env.dev - preprod :
env/.env.preprod
Ces fichiers sont donc versionnés, ce qui permet d'avoir un historique des ajouts, suppressions et modifications des variables d'environnements.
⚠ Les variables qui ne peuvent être en clair (les mots de passe par exemple) sont commentées dans les fichiers d'env. Ces variables sont configurées sur le repository champollion/front-it dans Settings > CI / CD > Secret variables. Les valeurs de ces variables se trouvent dans la feuille front-it de l'excel environment_variables_cicd.xlxs dans l'espace Teams Champollion.
Comment cela marche t-il ?
Si vous explorez les configurations champollion/front-it, dans Settings > CI / CD, rendez vous dans l'onglet "runner settings".
Vous constaterez qu'une VM Runner est configurée et active (pastille verte). C'est cette VM qui écoute Gitlab et qui déclenche le build à chaque commit.
Si ce n'est pas le cas, faites la demande auprès de l'infogérance de l'infrastructure OVH en transmettant le "registration token" indiqué.
Le build manuel est à réaliser uniquement si l'implémentation du build automatique avec Gitlab n'est pas fonctionnelle. Pour rappel, le build doit être réalisé depuis la VM qui bénéficie d'une connexion à internet : la VM Lab (OV1-APP-LAB-DEV-003).
⚠️ L'étape de build n'est pas nécessaire si vous n'avez pas modifié le code de l'application que vous souhaitez déployer. Pour vérifier s'il faut build les images pour lancer le service docker, rendez vous sur le dépôt Nexus du projet Champollion* pour voir les images disponibles.
*Le nexus n'est accessible que depuis la PMAD.
-
Créez un fichier de variable d'environnement sur la base du fichier d'exemple en remplissant les valeurs des variables nécessaires au build
Les valeurs des variables se trouveront d'une part dans le dossier env et d'autre part pour la variables sensibles dans la feuille front-it de l'excel environment_variables_cicd.xlxs dans l'espace Teams Champollion.
🚨 Important : Pensez à mettre à jour la version du tag sur les variables des images pour ne pas écraser les images précédentes et conserver un historique (sauf en cas de correctif : on ne veut pas conserver des images qui ne fonctionnent pas).
-
Build et push les images sur les dépôt Nexus
⚠️ Le build va récupérer le code présent localement, vérifiez que vous êtes sur la bonne branche et le bon commit que vous souhaitez déployer !Placez-vous dans le dossier qui contient le fichier build.sh et exécuter le script build.sh en spécifiant avec l'argument -e le chemin vers le fichier d'environnement que vous venez de créer.
bash ./build.sh -p -e ENV_FILE_PATH -p
💡 L'argument -p permet de push les images sur le registry Nexus. Pour vérifier que vous avez bien push les images avec les nouveaus tags, rendez vous sur sur le dépôt Nexus du projet Champollion*
*Le nexus n'est accessible que depuis la PMAD.
2 manière de run les images du repository :
Listes des images :
front/appfront/reverse-proxyfront/oauth2-proxy
A venir
-
Connectez avec le compte dédié, sur la VM mentionné selon l'environnement en suivant le tableau suivant :
Compte Host Evironnement Excel des variables d'environnement Feuille de l'excel Fichier .env svc.champollion OV1-WEB-LAB-DEV-001 dev environnement_variables_dev.xlxs docker - api /exploit/svc.champollion/docker/.env svc.champollion OV1-WEB-INT-PRE-001 preprod environnement_variables_preprod.xlxs docker - api /exploit/svc.champollion/docker/.env -
Mettez à jour le fichier docker-compose.yaml sur la VM de déploiement si des modifications ont été faites sur ce fichier
-
Mettez à jour le fichier .env sur la VM de déploiement avec les variables d'environnement contenu dans l'excel mentionné dans le tableau précédent
-
Run les images grâce au fichier docker-compose.yaml
Spécifiez le chemin vers les fichier .env dans une variable
ENV_FILE_PATHavec le chemin mentionné dans le tableau précédent.ENV_FILE_PATH=/exploit/svc.champollion/docker/.env && \ docker compose --env-file $ENV_FILE_PATH down && \ docker compose --env-file $ENV_FILE_PATH up --detach
⚠️ Si vous avez effectué un correctif et build une image en gardant le même tag (cad en surchargeant l'image existante dans le Nexus), il faut préalablement supprimer localement l'image téléchargée pour aller récupérer la nouvelle image par la suite.# stop and rm containers ENV_FILE_PATH=/exploit/svc.champollion/docker/.env && \ docker compose --env-file $ENV_FILE_PATH down # check image ID docker images # rm image docker image rm <image_id> # run containers docker compose --env-file $ENV_FILE_PATH up --detach
-
Vérifiez que le status des containers est "up" avec la commande
docker ps
