Agile Force One (A41): arquitectura para integración continua con Perforce
Para empresas que ya utilizan Perforce para sus desarrollos o para constitución de nuevos equipos, ds data systems pone a disposición de ellos la arquitectura A41 para desarrollo Agile basado en integración continua (CI). Esta arquitectura puede implantarse en las instalaciones del cliente o como SaaS en el Cloud de Amazon.
Perforce es una herramienta de control de versiones (Software Version Management) que se encarga de gestionar el código de los proyectos, organizarlo, versionarlo y documentar todas las modificaciones que sobre él se hacen. Permite la organización de los ficheros en bloques o paquetes llamados streams, mezclar código hecho por diferentes desarrolladores de forma sencilla, y volver a un estado anterior de buen funcionamiento del proyecto sin problemas. También ofrece la posibilidad de trabajar sin conexión y posteriormente unificar el código, además de contar con un sistema de control de acceso y seguridad mediante diferentes roles de usuarios. Cada fichero se encuentra guardado en el repositorio maestro que no pueden modificar los usuarios directamente, para que no se pierda o se elimine código.
Es un producto que se integra con diferentes sistemas y entornos de producción. Esto permite que el desarrollo de aplicaciones esté gestionado de forma completa por la herramienta Perforce, y sin necesidad de estar siempre controlado por el desarrollador.
A continuación se describen una serie de componentes y herramientas que forman una solución completa de desarrollo Agile con Perforce.
-
JIRA
Jira es una aplicación web para el seguimiento de errores y para la gestión de proyectos de desarrollo. También se utiliza en áreas no técnicas para la administración de tareas, gracias a sus funciones para la organización de flujos de trabajo.
Esta herramienta, combinada con Perforce, permite generar jobs en Perforce quecorresponden a las incidencias creadas en Jira, permitiendo a los desarrolladores enlazar trabajos de Perforce directamente con issues de Jira.
Esto convierte a Jira en una herramienta de notificación y control de los errores que actúa sobre Perforce, y por tanto, la comunicación y asignación de tareas entre los usuarios se hace de forma mucho más específica.
Cuando se crea un trabajo en Perforce procedente de Jira, éste tiene una serie de características que permiten determinar desde el usuario que lo ha creado, hasta el estado en el que se encuentra la incidencia. Por tanto, se consiguen unos datos concretos del problema y se puede proceder más fácilmente a su resolución. Se puede, además, asignar un tiempo para el tratamiento de la incidencia, qué persona o personas del equipo de desarrollo deben encargarse de ello y cómo es de crítico el asunto.
-
FISHEYE
Fisheye es una aplicación web para el control y visualización de repositorios. Permite ver cambios, revisiones, etiquetas y bifurcaciones; buscar trozos de código, archivos de texto, comentarios, autores y mucho más.
Si utilizamos Fisheye para visualizar los repositorios de Perforce, se obtiene una gran ventaja, ya que es muy fácil de integrar y permite visualizar todo el código, cómo ha cambiado, cuándo se ha cambiado y quién lo ha hecho. Por tanto, se consigue un seguimiento específico de los proyectos con un detalle minucioso de los cambios que se van haciendo.
Cuando se agrega el plugin de Perforce a Fisheye, después de una sencilla configuración, se puede empezar a añadir repositorios, asignar roles y buscar código.
-
JENKINS, ANT y ECLIPSE
Jenkins es una herramienta web de integración continua escrita en Java. Permite hacer construcciones (compilaciones y ejecución de tests) en cortos intervalos de tiempo de los proyectos para detectar fallos lo antes posible.
Ant es una herramienta de construcción y compilación de software en desarrollo. Normalmente se usa en proyectos Java para la automatización de las compilaciones; su funcionamiento se basa en archivos XML que especifican todas las tareas de construcción.
Eclipse es un entorno de desarrollo integrado (IDE) para aplicaciones de distintos tamaños. Es un editor de texto con resaltado de sintaxis, pero también permite la creación de proyectos, compilación en tiempo real y ejecuciones de pruebas unitarias o tests JUnit.
Perforce funciona con todas estas herramientas de desarrollo a la vez, uniéndolas e integrando sus tareas. Para que Jenkins funcione con Perforce, basta con agregar el plugin de Perforce a Jenkins. Así, al crear un nuevo proyecto en la aplicación de integración continua, permite seleccionar como repositorio de código el de Perforce. Jenkins se encarga de sincronizar todo el repositorio y de programar su compilación y construcción adecuándose a las necesidades del programador, ya sea que éste quiera hacer la construcción diariamente, cada semana, o cada vez que haya cambios en el código. Estos cambios, cuando se hace un build en Jenkins, aparecen reflejados en la Lista de Cambios, detallando quién los ha hecho y el comentario que se ha puesto al respecto.
Una vez creado ese nuevo proyecto en Jenkins, hay que asignarle un un compilador, la herramienta que se va a encargar de hacer el trabajo de construcción. Para esta tarea, Ant es el candidato adecuado, basta con instalar el plugin de Ant en Jenkins y seleccionarlo. Se pueden asignar directamente en las características del proyecto las tareas que se quieren ejecutar, como puedan ser compilación, creación de directorios, generación de los ejecutables, etc.
También se pueden ejecutar los test de la aplicación posteriormente a la construcción del proyecto, y generar, a través de estos, los resultados en un documento. Para proyectos de gran envergadura, esto es muy recomendable, ya que resta trabajo de prueba y evaluación a los desarrolladores.
Finalmente, para crear y estructurar el código, una buena opción es Eclipse. Se integra con Perforce mediante un plugin que se instalará en el propio entorno de desarrollo. Se puede crear un proyecto desde cero, modificar uno ya existente en Perforce, organizar las clases de la aplicación en paquetes y directorios, y probar y ejecutar las diferentes versiones del proyecto.
Además, Eclipse permite generar automáticamente el archivo XML que necesita Ant para construir el proyecto, con lo cual, basta con crear dicho archivo y alojarlo en el repositorio de Perforce para que el proyecto tenga una integración continua en Jenkins.
En definitiva, Perforce es una herramienta muy versátil que reduce el trabajo de organización del desarrollador, y permite que se enfoque en su tarea de generar código. La gestión de las versiones y construcción de ese código, la hace Perforce con una serie de herramientas integradas como las mencionadas anteriormente.
-
SWARM
Swarm proporciona una plataforma flexible para compartir código, que está basada e integrada perfectamente con Perforce. Las características sociales de Swarm permiten la compartición ágil de ideas, la colaboración sobre la marcha y la obtención parámetros acerca de la integración continua.
Actividad. Cada uno de los proyectos en Swarm tiene su activity stream. En ella se ve una descrición del proyecto, la lista de miembros y seguidores y un listado con las ramificaciones del proyecto.
Conversaciones en contexto. Los comentarios son la fuente principal de información en Swarm. Pueden realizarse sobre cualquier lista de cambio, revisión o línea de código.
Flujo de revisión de código. Asegura que el equipo va a colaborar mejor para entregas más rápidas mediante revisiones pre y post commit. Una vez solicitada una revisión, los revisores pueden marcar los cambios como que necesitan revisión, aprobados, rechazados o archivados.
Diferencias verticales o laterales. Cuando se revisa una lista de cambios o código, los ficheros se presentan como diferencias, mostrando los cambios. Se identifica por iconos si un fichero ha sido añadido, editado o borrado.
Cuadro de mando. Se muestra de manera global las actividades de revisión de los proyectos. Rápidamente se ve si un cambio ha pasado un test o no antes de entrar en detalles.
Seguimiento de incidencias. Los Jobs Perforce Jobs (e.g. errores, requisitos) pueden asignarse a un cambio o a una revisión.