Open qurben opened 4 years ago
Migraties doen:
Check eerst of op de huidige versie alle migraties netjes zijn uitgevoerd (php bin/console doctrine:migrations:up-to-date
) als dit niet het geval is is er iets mis en moet er iemand naar kijken.
Vraag aan nieuwe en aan de huidige versie wat de laatste migratie is (php bin/console doctrine:migrations:latest
) als hier een verschil tussen is moeten er blijkbaar migraties gerund worden. Zet dan de boel in onderhoudsmodus.
Check of de nieuwe versie zich bevindt in de lijst van de huidige versie, doe dan een rollback naar deze versie (php bin/console doctrine:migrations:migrate <versie>
)
Switch naar de nieuwe versie.
Als er net niet migraties gerund zijn doe dan nu migreren naar de laatste versie (php bin/console doctrine:migrations:migrate <versie>
)
Haal de boel uit onderhoudsmodus.
Symfony docs: https://symfony.com/doc/current/deployment.html#using-build-scripts-and-other-tools
https://deployer.org/ ziet er nice uit.
Sinds Symfony moet de cache opwarmen bij iedere nieuwe versie en dit moet eigenlijk op Syrinx gebeuren omdat het erg environment specifiek is. Hierdoor duurt deployen langer en is de stek langer offline. Dit kan beter.
De aanpak hier beschreven kan 'Atomaire' updates doen, oftewel in enkele milliseconden een nieuwe versie neerzetten.
Geïnspireerd door o.a.: https://modess.io/2015/01/29/atomic-deploy-for-php-applications/
Het idee is dat er een aantal mappen zijn op Syrinx
builds/
met submappen voor verschillende versies. Hier wordt alle code van een versie neergezet en de cache wordt opgewarmd. De huidige versie en twee of drie oudere versies staan hier.shared/
hier staat data die altijd beschikbaar moet zijn, foto's, wiki inhoud, sessies, oftewel dedata/
map en dehtdocs/wiki/data/
map, meuk inhtdocs/plaetjes/
enzo en alle.env.local
bestanden.latest/
een symlink naar de laatste versie in debuild/
map.Het deploy proces zou er dan als volgt uit zien
builds/<versie>
php bin/console doctrine:migrations:up-to-date
)latest/
symlink naar de nieuwe versieBij het teruggaan naar een oude versie moet er voor het terug gaan gecheckt worden of er migraties gerollbacked moeten worden.
De volgende dingen moeten nog gedaan worden / uitgezocht worden