2 15 Déploiement et co
Eragon edited this page 2024-03-14 14:35:26 +01:00

TL;DR

featuredevpreprodmaster

On commence par faire une branche dédiée au truc sur lequel on travaille. Ensuite quand ça fonctionne à peu près chez soi, on merge sur dev. On fait tester aux autres devs, etc. Quand c'est pas trop mal, on merge sur preprod. On teste en profondeur sur le serveur de test. Si tout va bien, on merge preprod sur master.

Attention, dès que le git push origin preprod|master est lancé, le déploiement est automatique sur les instances concernées !

Actuellement, seul le serveur de préprod est disponible à l'adresse https://v5.planet-casio.com

On fait bien attention à tester avant de pousser en ligne !

Fonctionnement

Lorsqu'un git push est effectué, l'utilisateur forgejo du VPS appelle le crochet de post-transaction. forgejo se connecte alors en ssh sur les comptes pc et pc-dev et exécute les scripts de déploiement ~/deployment.sh.

#!/bin/bash

# Deployment script. Git pull the branch preprod

logfile=$HOME/deployment.log

echo "=== Started deployment ($(date '+%Y-%m-%d %H:%M:%S')) ===" >> $logfile
cd $HOME/www >> $logfile 2>&1
git pull origin preprod >> $logfile 2>&1
make get-extra >> $logfile 2>&1
flask db upgrade >> $logfile 2>&1
./master.py update-all >> $logfile 2>&1
flask crontab add >> $logfile 2>&1
sudo systemctl reload uwsgi@pc-dev >> $logfile 2>&1
echo -e "=== Ended deployment ===\n" >> $logfile

exit 0

Droits et clés ssh

  • La clé publique de forgejo doit figurer dans le fichier .ssh/authorized_keys de chaque utilisateur ayant un script de déploiement ;
  • la clé publique des utilisateurs de déploiement doit être référencée dans les clés de déploiement des dépôts ;
  • le fichier deployment.sh doit être marqué comme exécutable pour son propriétaire.