Integración continua con PHP (I)

Para una empresa que tiene en el Desarrollo de Software una parte importante del núcleo de su negocio disponer de todas las herramientas necesarias para facilitar el desarrollo (IDE´s, licencias de software, entornos de preproducción, etc) de su actividad supone una ventaja respecto a sus competidores.

Hoy vamos a comenzar con el primero de una serie de posts cuyo objetivo final es conseguir configurar un sistema de integración continua para proyectos ejecutados con tecnología PHP. Un entorno de integración continua es una de esas herramientas que facilitan y mejoran todo el ciclo de vida de un producto software.

Un sistema de integración continua está compuesto por una serie de piezas que dispuestas de una cierta forma permitirán realizar integraciones automáticas frecuentes del proyecto, con todas las ventajas que ello supone. Estas piezas que necesitamos son, como mínimo:

  • Sistema de control de versiones (SVN).
  • Sistema de construcción de proyectos (Phing).
  • Servidor de integración continua (Xinc).

En este primer post solo vamos a cubrir las dos primeras partes del sistema de integración continua: sistema de control de versiones y sistema de construcción de proyectos. Para el sistema de control de versiones vamos a utilizar Subversion y como sistema de construcción de proyectos vamos a usar Phing.

Como supongo que todos conocemos lo que es un sistema de control de versiones como Subversion hablemos de Phing. Phing es un sistema de construcción de proyectos basado en Apache Ant que permite automatizar, a través de la descripción en un fichero XML, tareas como: ejecución de pruebas de unitarias, generación de documentación, comprobación de estándares de codificación, generación de “distribuibles”, etc.

Lo primero que haremos será llevar a cabo la instalación del sistema de control de versiones para ello podemos seguir los pasos de pasos de la siguiente guía.

Una vez instalado el sistema de control de versiones pasaremos a instalar Phing, (suponiendo que tenemos ya tenemos instalado PHP) para ello seguiremos los siguientes pasos:

  • apt-get install php5-dev, con este paquete podremos instalar phpize que nos facilitará la instalación de Xdebug.
  • apt-get install pear, PEAR es un sistema de distribución de componentes PHP.
  • pear channel-discover pear.phing.info
  • pear install -a phing/phing, con la opción -a haremos que se descarguen todas las dependencias de Phing.
  • pear install VersionControl_SVN-0.3.1, debemos instalar este paquete porque la configuración por defecto de Pear siempre instala la versión “estable” y para trabajar con phing necesitamos esta versión alpha.

Bien, ya tenemos instalado nuestro sistema de construcción de proyectos, ahora veamos cómo funciona. Para comenzar, una prueba simple (más adelante lo complicaremos más). Supongamos, para no ser demasiado simplista, que estamos desarrollando un proyecto con Drupal y lo tenemos versionado, un nuevo recurso se incorpora al proyecto para poder comenzar a desarrollar lo único que tendrá que hacer es instalar Phing y tras descargar el fichero build.xml

<?xml version="1.0"?>
<project name="drupal" default="dev" basedir=".">
    <target name="dev" depends="checkout"/>
    <svncheckout
       svnpath="/usr/bin/svn"
       username="usuario"
       password="contraseña"
       repositoryurl="http://localhost/svn/portal-drupal/trunk/"
       todir="/home/user/workspace/Test"/>
</project>

Tras hacer esto ya tendrá disponible el entorno de desarrollo listo para comenzar con actividad.

Aunque se presentado un ejemplo muy simple las posibilidades de Phing son, como hemos comentado antes, muy ampllias y las iremos descubriendo en sucesivos posts.

La función de un buen software es hacer que lo complejo aparente ser simple. Grady Booch

Anuncios

10 Responses to Integración continua con PHP (I)

  1. Hola Ángel:

    Muy interesantes las herramientas que comentas. Te animo que pases por:
    http://groups.google.com/group/ecosistemas-software

    y compartas con nosotros tus experiencias sobre el ecosistema software sobre el que estás trabajando.

    Un saludo

  2. Ángel Cristóbal Lázaro Ríos dice:

    Hola Manu,

    ¡¡¡Por supuesto que lo haré!!!, será un placer y un honor poder compartir con vosotros todo lo que estoy aprendiendo.

    Muchas gracias por la invitación.

    Un saludo.

  3. Hola Ángel,

    Muy interesante.
    Actualmente me interesa bastante conocer nuevos mecanismos que apoyen al seguramiento de la calidad en proyectos cuyo marco tecnológico es PHP, por lo que seguiré esta serie de posts muy de cerca 😉

    Un saludo.

  4. Ángel Cristóbal Lázaro Ríos dice:

    Gracias Antonio,

    Espero que cuando hayamos acabado te pueda ser de alguna utilidad.

    Un saludo.

  5. leonardo dice:

    Felicitaciones por tan excelente aporte, espero eso si, que cuando vayas a instalar symfony, si lo haces por PEAR, no te vaya a poner problema de dependencias, ya que uno de sus ORM, Propel, usa ping y me han pasado varios problemas de dependencias.
    Seria muy bueno tratar el tema de las dependencias entre los diferentes elementos del desarrollo en tu investigación sobre integracion continua.

  6. Ana dice:

    Buenas , he tratado de montar un entorno de CI para PHP , pero no logro integrar las herrmientas Xinc, PHPUnit,Phing, sabes que sucede en estos casos???

    • Ángel Cristóbal Lázaro Ríos dice:

      Hola Ana la verdad que pueden ser muchas cosas, podrías ser un poco más más espcífica.

  7. Ana dice:

    Es algo como que el error que da es que xinc no carga el plugin de phing para que este se levante en el apache, es decir no encuentra la dirección donde está instalado phing.

    saludos

  8. Zaida dice:

    Hola Angel C. Lázaro, soy estudiantes de 5to año lo cual estoy realizando mi tesis de diploma sobre CI y por lo que he visto usted tiene dominio sobre el tema y quisiera que me ayudara a responder una encuesta, por aqui se me hace muy difícil a que usted me la responda. Necesito que me escriba a mi correo electrónico para ponernos en contacto y explicarle sobre mi propuesta de solución. Cuento con su ayuda.

    Saludos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: