Auto updaten
Voor mijn PHP programma ben ik bezig om een OTAP-straat in te richten.
Nu wil ik graag dat een beheerder per omgeving vanuit de interface kan zien of er een update is, en dat die maar op 1 knop hoeft te drukken om het geïnstalleerd te krijgen. Een beetje zoals bij Wordpress, maar dan ook met de mogelijkheid om te downgraden als iets toch niet helemaal blijkt te werken.
Als ik rondkijk op het internet kom ik wel wat tegen:
- https://github.com/ozzi-/php-app-updater
- https://github.com/VisualAppeal/PHP-Auto-Update
- https://stackoverflow.com/questions/825787/how-to-automate-migration-schema-and-data-for-php-mysql-application
- https://stackoverflow.com/questions/4804779/how-to-compare-data-between-two-databases-in-postgresql
Maar nu zit ik met het volgende: als de versie van het database schema wijzigt, wat doe je dan?
Hoort iedere update bijvoorbeeld SQL statements te hebben om het schema te upgraden / downgraden?
Is het gebruikelijk om hiervoor een tweede referentieschema te hebben, waardoor je automatisch SQL commando's kunt genereren om te upgraden / downgraden?
Is er een tool voor in PHP?
Ben benieuwd naar jullie mening of ervaring.
https://laravel.com/docs/5.7/migrations#migration-structure ?
Er zijn ook stand-alone varianten (niet gebonden aan Laravel), en uiteraard kun je ook zelf iets bakken.
Dit ken je: Er zijn ook stand-alone varianten (niet gebonden aan Laravel), en uiteraard kun je ook zelf iets bakken.
Zelf iets bakken is wat ik ook wil, maar ik wil niet helemaal vanaf 0 beginnen. Als ik kijk hoe ik de updates nu elke keer handigmatig doe, dan kan de PHP code gewoon over de oude heen, en spaar ik altijd alle SQL commando's die leiden naar het nieuwe schema. Updates zijn handmatig, dus ik gooi de applicatie 5 minuten dicht op een tijd dat het uitkomt (meestal 's nachts), kopieer de PHP bestanden, voer de commando's uit in een SQL client.
Dat proces is niet goed over te dragen, dus ik dacht als ik nou eens versies aanbied op een server, met daarbij het complete schema, maar ik ben er nog niet uit omdat een schema diff in PHP bouwen voor Postgres best wel veel werk is, en ik mis dan nog de data conversies en afhankelijkheden (bv. meerdere tabellen die dezelfde SEQUENCE delen).
Dus ik denk dat mijn eis van downgraden onrealistisch is, misschien moet ik eerst maar eens mijn huidige werkwijze automatiseren. Maar het idee van een referentieschema klinkt wel aanlokkelijk omdat je dan het schema kunt zelftesten, of het gebruikte schema nog wel klopt. Aan de andere kant heb je daar ook weer tools voor als DBeaver :)