Como usar el Deployment Module en el cakephp para agilizar el desarrollo.
Written by: daniel
April 23, 2008
El año pasado creamos bastantes componentes de código abierto, que aunque no se vean de cara al cliente, te hacen el desarrollo menos pesado. Entre ellos, mi favorito que sin duda es el Deployment Module o sea el módulo de publicación.
En la empresa normalmente trabajamos de la siguiente manera:
- todo el código está en nuestro servidor svn
- cada desarrollador tiene su copia privada y un servidor web local donde hace el desarrollo
- hay un servidor de prueba donde ponemos los progresos de la aplicacion “para que el cliente lo vea”
- finalmente hay un servidor de producción donde se aloja la aplicación cuando ya está lista para la publicación
Cuando trabajas con mucha gente, un servidor de gestión de código como svn es indispensable para evitar los problemas tipo sobreescribir el código por otra persona y en fin, controlar las versiones. Pero a la hora de trabajar con un servidor ftp externo, te encuentras constantemente con la situación en que tienes que pensar qué archivos has actualizado en el svn y cuales tienes que subir al ftp. Esto huele al hacer el doble trabajo y yo personalmente lo encuentro bastante engorroso.
Así que este módulo nos da una posible solución a este problema.
La idea original es de Felix Geisendörfer, nosotros modificamos un poco su código y le añadimos una interfaz web, para hacer el tema más fácil.
Instalación
antes de empezar
- debes tener instalado el cliente svn en el ordenador donde se ejecutará este módulo
- configura en tu php.ini: output_buffering = Off
así podrás ver línea por línea, como se actualizan los archivos
- Descarga la última versión del módulo aquí: http://anon:anon@websvn.devayd.com/wsvn/public/modules/deploy/trunk/?op=dl&rev=0&isdir=1
y cópialo a la carpeta APP de tu proyecto. - edita el archivo APP/controllers/depoy_controller.php
- para cada servidor ftp que quieras manejar (por ejemplo el de desarrollo y el de produccion), vas añadiendo entradas en la tabla: ’server_1′, ’server_2′, etc.$this->ftpServers=array(
’server_1′=>array(
’svn_file’=>”/app/webroot/revision.txt”,
‘base_path’=>”ftp_path”,
‘timeout’=>30,
‘port’=>21,
‘password’=>”ftp_password”,
‘login’=>”ftp_user”,
‘connect’=>”ftp_connect”,
‘host’=>”ftp_host”),
); - b) configura los datos de tú servidor svn:
$this->svnConfig['url']=”svn_host”;
$this->svnConfig['login']=’svn_user’;
$this->svnConfig['password']=’svn_password’;
$this->svnConfig['path']= ’svn_path’;svn_path es la ruta dónde está tu proyecto en el servidor svn.
- para cada servidor ftp que quieras manejar (por ejemplo el de desarrollo y el de produccion), vas añadiendo entradas en la tabla: ’server_1′, ’server_2′, etc.$this->ftpServers=array(
- en los servidores ftp tienes que crear el archivo /app/webroot/revision.txt con la revisión 0
- El archivo revision.txt debe estar disponible tb via www http://tuproyecto.com/revision.txt ya que el módulo compara las versiones ftp y svn conectándose via http. en los proyectos nuevos, antes de que los .htaccess hagan bien el redireccionamiento puede que tengas que crear una copia del archivo en la carpeta base del servidor ftp.
si usas linux quizás puede usar un script como éste para automatizar la configuración
Como usarlo
La actualización es fácil:
- los cambios que hagas en el proyecto los subes al svn (check in…)
- luego abres la página en tu servidor local /admin/deploy
- seleccionas el ftp que quieres usar y le das “update”
- ahora verás como se suben los archivos al ftp
listo ![]()

Posted in


