documentation
Kohinos v3 Doc générée le commit 8d60b1904

Déploiement

Procédure de mise en production. L'objectif est zero-data-loss, jamais pendant le passage SEPA mensuel ou l'exécution SSA. Les migrations Doctrine doivent être réversibles (up et down testés).

Cycle de release

flowchart LR
  A["develop"] --> B["PR + revue"]
  B --> C["Merge main"]
  C --> D["Tag vX.Y.Z"]
  D --> E["CI Woodpecker
tests + assets-freshness"] E --> F["Déploiement
preprod"] F --> G["Validation
fonctionnelle"] G --> H["Déploiement
prod"]
Pipeline de release.

Procédure standard

# Sur le serveur cible, dans /var/www/kohinos
sudo -u www-data git fetch --tags
sudo -u www-data git checkout vX.Y.Z

# Dépendances figées
sudo -u www-data composer install --no-dev --optimize-autoloader

# Assets front : pré-compilés et versionnés dans public/build/ (+ public/sw.js).
# Aucune installation de Node/npm/yarn ni de build n'est requise sur le serveur.

# Migrations (toujours --no-interaction en CI/prod)
sudo -u www-data php bin/console doctrine:migrations:migrate \
    --env=prod --no-interaction --allow-no-migration

# Cache
sudo -u www-data php bin/console cache:clear --env=prod --no-debug
sudo -u www-data php bin/console cache:warmup --env=prod

# Recharger php-fpm pour purger l'opcache
sudo systemctl reload php8.4-fpm

Fenêtres interdites

⛔ Ne déployer JAMAIS pendant
  • Le passage SEPA mensuel : jour de prélèvement configuré (1–28) — voir Cron & commandes.
  • L'exécution SSA (commande kohinos:ssa:execute, généralement milieu de mois).
  • Le traitement des callbacks HelloAsso en cours (webhooks pending).

Bloquer la commande cron avant de toucher le code, la relancer après.

Vérifications post-déploiement

# Schéma DB en phase avec les mappings
php bin/console doctrine:schema:validate

# Soldes cohérents (somme débits = somme crédits)
php bin/console kohinos:accounts:check

# Routes répondent toutes
curl -fsS https://kohinos.example.org/ > /dev/null
curl -fsS https://kohinos.example.org/health > /dev/null

# Smoke test routes par rôle (cf. dev/tests.html)
python3 scripts/test-routes.py --only-errors

Rollback

  1. Revenir au tag précédent : git checkout vX.Y.(Z-1).
  2. Si la migration n'est pas réversible (rare, à signaler explicitement dans la PR), restaurer depuis le dump pré-déploiement.
  3. Sinon : php bin/console doctrine:migrations:migrate prev --env=prod --no-interaction.
  4. Vider le cache, recharger php-fpm.

Migrations Doctrine — règles

Sauvegarde pré-déploiement

# Dump complet juste avant déploiement
mysqldump --single-transaction --quick --routines kohinos \
    | gzip > /var/backups/kohinos/$(date +%F-%H%M)-pre-deploy.sql.gz

# Vérifier l'intégrité du dump (parse rapide)
zcat /var/backups/kohinos/<file>.sql.gz | head -50

Cycle de hotfix

  1. Brancher depuis le tag prod (vX.Y.Z), pas depuis main.
  2. Patch minimal, tests ciblés, CHANGELOG .md + _USER.md à jour.
  3. Tag vX.Y.(Z+1), déploiement direct, back-merge dans main.