67 lines
1.9 KiB
Markdown
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.
|