Phing permite definir un archivo XML con una serie de tareas que se ejecutarán (targets) para, por ejemplo, ejecutar comandos svn, creación-destrucción-cambio de directorios y archivos, permisos, o ejecución de las pruebas unitarias, y un largo etc. En este caso, aprovechamos las funcionalidades de Phing para gestionar los cambios en la Base de Datos.
En la siguiente lista se muestra el listado de tareas ya definidas y se explica su funcionalidad:
El fichero build.xml tiene predefinidas 3 valores variables necesarios para su correcto funcionamiento:
$ phing db-change -De=development -Dk=/remoteKlear -Da=../admin/application
Es lo que Phing define como una “Tarea Opcional”.
Nos permite tener una serie de deltas de la base de datos (en ficheros numerados) que dbDeploy se encargará de ejecutar en orden. DbDeploy guarda la versión de la BBDD (último delta ejecutado) en una tabla para saber cuales son los cambios que debe ejecutar.
Los cambios realizados los va guardando en un fichero dentro del directorio deploy/scripts/ (definido en el build.xml)
Es lo que usan nuestras tareas “init” y “migrate”
phing
|-- build.xml
|-- deltas <- Directorio con ficheros delta
| |-- 001-Initial-KlearInterval-Tables.sql
| `-- 002-Add-Body-To-Subsections.sql
|-- deploy
| `-- scripts
| |-- deploy-201303141301.sql
| |-- undo-201303121235.sql
|-- predeploy.sql <- SQL con la estructura de la tabla del Changelog