Es gibt unterschiedliche Möglichkeiten ein automatisiertes SQL Depoyment durchzuführen. SQL Files sind hier eine Option. Dabei kann man dann alle zugehörigen SQL Files in einen Release Folder ablegen und manuell ausführen. Das ist leider keine sehr elegante Lösung, da man hier nicht ohne weiteres zurück rollen kann. Man kann also so gesehen nur nach vorne gehen und hat zudem das Risiko SQL-Statements, die nur einmal ausgeführt werden sollen öfter auszuführen.
SQL Files in Folder mit Bash Script ausführen
1 2 3 4 5 6 7 8 9 |
#!/bin/bash sqlfiles=(*.sql) for i in "${sqlfiles[@]}" do if grep -q PROCEDURE "$i"; then echo $i mysql -h127.0.0.1 -udbuser -pdbpass exactag < $i fi done |
Damit man nicht manuell alle SQL Files einzeln ausführen muß kann man ein Bash-Script nutzen. Das führt dann dann alle SQL Files automatisiert aus. Das oben abgebildete Bash-Script kann das auf eine einfache und unsichere Art tun. Es leider nötig Username und Passwort für die DB mit abzuspeichern. Allerdings erfüllt das Bash-Script seinen Zweck. Es interiert im aktuellen Folder über alle SQL Files und führt diese mit dem MYSQL-Command aus.
Professionells Webdevelopment und Deployment mit Migrationen
Eine zuverlässige und sichere Lösung bieten Migration Tools, wie Phinx. Hier ist es möglich neue Änderungen einfach automatisiert durchzuführen. Dadurch behält man zu jedem Zeitpunkt die Kontrolle über den aktuellen DB Status. Damit ist es einfach und übersichtlich einen Rollback durchzuführen. Zudem wird verhindert, das SQL-Files doppelt ausgeführt werden. DB Migrations gibt es auch Out-Of-The-Box in vielen PHP-Frameworks. Hier kann man das Doctrine Migrations Bundle in Symfony und die Database Migrations im Laravel Projekt sehr empfehlen. Beim Refactoring von Legacy Code Anwendungen bietet sich Phinx sehr gut an, da es autark neben dem bestehenden Projekt mit Composer einfach hinzugefügt werden kann.
Unterstützung beim Web zu Continuous Integration
Wir haben uns seit langen auf automatisiertes Deployment und Continuous Integration spezialisiert. In den jüngsten Kunden-Projekten haben wir es erfolgreich eingeführt. Dieses Angebot werden wir in den nächsten Monaten gezielt ausbauen. Hier werden wir unter anderem fertige Codeception-Tests für allgemeine Tests und Screenshots in unterschiedlichen Display Auflösungen anbieten. Ein aktuelles Angebot gibt es dazu hier. Build Pipelines für PHP-Projekte.