symfony 1.4 – automatisierte builds

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” ;)