3.8 KiB
gitploy
Outillage git minimal pour fluidifier un déploiement rolling release : une branche de développement, des branches d'environnement, et deux sous-commandes git transactionnelles et sûres.
git deploy <remote> <branche> -m "message" # livrer le dev vers un environnement
git hotfix <remote> <branche> -m "message" # corriger un environnement puis rapatrier dans le dev
Modèle de branches
- Une branche de dev (par défaut
master) : là où tu travailles et intègres. - Des branches de déploiement (
prod,stage, …) : une par environnement. - Tout passe par un remote (ex.
gitea) qui déclenche le déploiement serveur.
git deploy fait avancer une branche d'environnement au niveau du dev (merge).
git hotfix permet de corriger un environnement sans changer de branche à la
main, puis rapatrie automatiquement le correctif dans le dev.
Installation
En submodule (recommandé)
# dans le dépôt qui doit déployer
git submodule add https://figureslibres.io/gitea/bachir/gitploy.git gitploy
git submodule update --init
gitploy/setup
En dépôt autonome
git clone gitea-figureslibres.io:bachir/gitploy.git
cd gitploy && ./setup # configure le dépôt parent courant
setup installe des alias git locaux (git deploy, git hotfix) pointant
vers les scripts — aucune modification du PATH. git n'exécutant jamais une
config versionnée tout seul (par sécurité), cette étape unique est nécessaire.
Configuration
Stockée dans git config (aucun fichier .env) :
| Clé | Défaut | Rôle |
|---|---|---|
deploy.source |
master |
Branche de développement |
deploy.push |
false |
Autorise le push réel (sinon simulation locale) |
git config deploy.source master
git config deploy.push true # activer le push réel quand tu es prêt
Tant que deploy.push est false, rien n'est poussé : tu peux tout tester
en local, les scripts affichent le push qu'ils auraient fait.
Utilisation
Déployer le dev vers un environnement
# tu es sur master
git deploy gitea prod -m "ajout du bloc contact"
- commit sur
master(message obligatoire s'il y a des modifs) ; - merge
master→prod; - push atomique (dernière étape) ;
- retour sur
master.
Corriger un environnement (hotfix)
# tu es sur master, tu écris le correctif (sans committer)
git hotfix gitea prod -m "fix: lien du menu"
- met tes modifs de côté (stash) ;
- bascule sur
prod, applique et committe le correctif ; - rapatrie le correctif dans
master(merge) ; - push atomique puis retour sur
master.
Résultat : le correctif est sur prod et sur master, sans embarquer les
features non livrées de master.
Sûreté
- Confirmation : un
git status+ le plan d'action, avec validation[O/n]. - Transactionnel : toutes les mutations locales d'abord ; en cas d'échec (conflit, etc.), l'arbre est restauré à l'identique (refs, branche courante, modifs en cours) et rien n'est poussé.
- Push en dernier, atomique (
--atomic, tout ou rien), jamais forcé, précédé d'un--dry-run. - Garde-fous : remote et branche existants, cible ≠ branche de dev, bonne branche de départ, aucun merge/rebase en cours.
Complétion (optionnelle)
Complète le remote puis la branche, lus en direct depuis le dépôt :
# dans ~/.bashrc
source /chemin/vers/gitploy/deploy-completion.bash
Fichiers
| Fichier | Rôle |
|---|---|
git-deploy |
Sous-commande git deploy |
git-hotfix |
Sous-commande git hotfix |
_deploy_lib.sh |
Helpers partagés (config, garde-fous, confirmation) |
deploy-completion.bash |
Complétion bash |
setup |
Installe les alias git (sans PATH) |