Hier mal ein Beispiel für einen (via shell script) automatisierten build bei einer PHP, Symfony 1.4 Anwendung mit GIT zur Versionskontrolle.
#wipe old version of build db mysql -uUSER -pPW drop build-db
#wipe the build workspace rm -rf ./build-workspace
#checkout the sourcecode git clone git@my-domain.com:my-repository ./build-workspace
cd build-workspace
#(re)configure database for build server php ./symfony configure:database "mysql:host=build-db-server;dbname=build-server-sql-user"
#(re)build db php ./symfony doctrine:build-db
der Einfachkeit halber liegt der zu migrierende sql dump schon im repository.
Könnte man natürlich auch jetzt von remote holen.
#import some test data mysql -uUSER -pPW --force database_name < data/sql/some_data_to_migrate.sql
hier sollte keine Handarbeit mehr nötig sein,
da man ja alle DB Änderungen per doctrine migrations gemacht hat.
Im Gegensatz zu schema Änderungen bleibt man so abwärtskompatibel zu Vorgängerversionen.
#migrate the test data / db if necessary php ./symfony doctrine:migrate
zum guten Schluss alles testen
#run test, save results as xml php ./symfony test:all -xml=path/to/results.xml
Es lohnt sich in mehrfacher Hinsicht wirklich das komplette Projekt inkl. DB automatisiert von 0 installierbar zu machen.
Auch wenn es vielleicht erstmal nur auf ein paar Instanzen laufen soll.
Man kann erstens bei verteiltem Arbeiten schnell mal eine weitere Arbeitskopie auf einem anderen Rechner erstellen.
Zweitens kann man relativ einfach ein continuous integration setup auf die Beine stellen und sofort ruhiger schlafen ;)
Außerdem kann man ständig die Migration von aktuellen Live Daten, oder einer Vorgängerversion in die Entwicklungsversion testen.
“Continuous Migration” ;)