Upgrade Frappe 15 → 16
Piano
- Salvare database, file del site e configurazione.
- Aggiornare il runtime a Python 3.14, Node 24, MariaDB 11.8 e Redis 8.8.
- Ricreare il virtualenv Bench con Python 3.14.
- Portare Frappe su
version-16, aggiornare requisiti e asset. - Eseguire patch, migrazioni e verifiche applicative.
- Promuovere lo stesso artifact da
devastaginge poi amain.
Sviluppo con bench persistente
Prima di aggiornare:
bash
make backup
docker compose -f deploy/compose/development.yml --env-file .env stop frappeAvviare temporaneamente l’immagine aggiornata e migrare il bench:
bash
docker compose -f deploy/compose/development.yml --env-file .env run --rm --entrypoint bash frappe
cd /home/frappe/data/frappe-bench
bench migrate-env /usr/local/bin/python3.14
bench switch-to-branch version-16 frappe --upgrade
bench update --requirements
bench build --apps frappe,ez_factoryos
bench --site factory.local migrate
exit
docker compose -f deploy/compose/development.yml --env-file .env up -dStaging e produzione
Le immagini server sono immutabili e contengono già Frappe 16. Il servizio configurator aggiorna configurazione, asset e schema prima dell’avvio di backend, websocket, worker e scheduler.
La promozione resta:
text
dev → staging → mainSu main il workflow verifica che l’albero Git coincida con staging e promuove il tag OCI staging a main senza rebuild.
Verifica
bash
bench version
bench --site factory.local migrate
bench --site factory.local run-tests --app ez_factoryos
python --version
node --version
docker compose -f deploy/compose/development.yml --env-file .env psAtteso:
- Frappe sul branch
version-16 - Python 3.14.x
- Node 24.x
- servizi healthy
- login Desk raggiungibile su
/desk - worker, scheduler, websocket e generazione PDF operativi
Rollback
- Fermare lo stack senza eliminare volumi.
- Ripristinare l’immagine/tag precedente.
- Ripristinare il backup database e i file del site.
- Ripristinare il bench Python 3.11/Frappe 15 solo insieme al relativo database.
Non riutilizzare un database già migrato a Frappe 16 con un’immagine Frappe 15. Non eliminare volumi e non eseguire reset del database durante il rollback.