# 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`. 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.