gmao/docs/DEPLOYMENT.md
2026-08-14 16:02:25 +00:00

67 lines
1.9 KiB
Markdown

# Developpement, production et versions
## Version courante
La source de verite est le fichier `VERSION`. Le projet suit le versionnement
semantique :
- `MAJEURE` : changement incompatible ou migration majeure ;
- `MINEURE` : fonctionnalite compatible ;
- `CORRECTIF` : correction compatible ;
- suffixe `-dev.N`, `-alpha.N` ou `-rc.N` avant une version stable.
La version est incluse dans le tag Docker, les labels OCI et la reponse
`GET /health/`.
## Developpement
Le code reste sur la machine et est monte dans le conteneur. Gunicorn surveille
les fichiers Python par interrogation periodique et recharge ses workers.
```powershell
docker compose up -d --build
```
Une modification Python, HTML, CSS ou JavaScript ne necessite pas de rebuild.
Une modification de `requirements.txt`, du `Dockerfile` ou des paquets systeme
necessite une reconstruction.
## Production
Le Compose principal n'utilise aucun volume de code. Seuls MariaDB, les
televersements, l'instance Flask, les donnees de fonctionnement et les
sauvegardes sont persistants.
Construire une version immuable :
```powershell
.\docker\build-release.ps1
```
Sous Debian :
```bash
./docker/build-release.sh
```
Deployer la version indiquee dans `VERSION` :
```powershell
$env:GMAO_VERSION = (Get-Content .\VERSION -Raw).Trim()
docker compose -f docker-compose.yml up -d
```
Ne jamais monter les sources ni activer `--reload` en production.
## Procedure de publication
1. Mettre a jour `VERSION`.
2. Completer `CHANGELOG.md`.
3. Executer `python -m pytest`.
4. Construire l'image avec `docker/build-release.ps1`.
5. Verifier `/health/` et sa cle `version`.
6. Creer un commit et un tag Git `gmao-v<version>`.
7. Conserver l'image versionnee ; ne pas deployer uniquement avec `latest`.
Pour une version stable, `build-release.ps1 -TagLatest` ajoute aussi le tag
`latest`. Le script refuse ce tag pour une preversion.