1 Automatizar la gestiónIntegración Continua Septiembre 2014
2 Introducción Que mas puede aportarnos el entorno? Gestionar el proceso Nuestra solución Sistemas desplegados / configurados Detalle funcional Jira Detalle funcional Jenkins Detalle funcional Quality
3 Introducción
4 Introducción Definición (Wikipedia)Modelo informático que consiste en hacer integraciones automáticas de un proyecto lo más a menudo posible para así poder detectar fallos cuanto antes. Entendemos por integración la compilación y ejecución de pruebas de todo un proyecto. El proceso se ejecuta cada cierto tiempo, descargando las fuentes desde el control de versiones, compilándolo, ejecutando pruebas y generando informes. Se asocia a metodologías de desarrollo ágiles Las ventajas que se atribuye son: Los desarrolladores pueden detectar y solucionar problemas de integración de forma continua, evitando el caos de última hora cuando se acercan las fechas de entrega. Disponibilidad constante de una versión para pruebas, demos o lanzamientos anticipados. Ejecución inmediata de las pruebas unitarias. Monitorización continua de las métricas de calidad del proyecto.
5 Introducción Visión ClásicaTradicionalmente la integración continua se viene utilizando para automatizar ciertas tareas de verificación de la calidad del desarrollo. Facilita que las pruebas se hagan sobre entornos con el trabajo de todos integrado. La vienen aplicando equipos reducidos, que se provisionan de un entorno local de IC, en el que cada desarrollador es el responsable de crear sus tareas de integración y ejecutarlas a su criterio. No son numerosas las organizaciones que disponen de un entorno de Integración continua corporativo y menos las que estandarizan su uso. No es habitual que se delegue el ciclo completo que aporta la Integración Continua
6 Introducción Incorporar la Integración continua en el modelo de calidad Tenemos una metodología -> Tenemos unos procesos definidos. Tenemos un proceso -> Tenemos unas actividades asociadas. Tenemos Actividades -> Establezcamos los criterios de aceptación. Tenemos criterios de aceptación -> Establezcamos las validaciones y verificaciones del criterio de aceptación. Tenemos validaciones -> automaticemos las que sea posible automatizar. Esta es la base para poder implantar actividades de Integración continua en un equipo, área, organización. Normalizaremos los puntos de control en el ciclo de desarrollo y tendremos automatizado mucho trabajo de verificación. Podremos medir la calidad de los desarrollos en la organización de forma estandarizada.
7 Que mas puede aportarnos el entorno?
8 Que mas puede aportarnos el entorno?Actividades comunes Cuando pensamos en Integración continua, es habitual referirse a tareas del tipo: Recuperar código de un repositorio Verificar la calidad de código Validar las dependencias Compilar el código Desplegar en un entorno Ejecutar test unitarios y funcionales automáticos Informar del resultado 2.- Verificar dependencias 3.- Pruebas Compilación 4.- Empaquetar Y Etiquetar 5.- Desplegar 6.- Pruebas unitarias 7.- Pruebas Regresión 8.- Pruebas funcionales 1.- Análisis Código
9 Que mas puede aportarnos el entorno?Actividades del entorno de trabajo Podemos tener en cuenta también las actividades necesarias para que un miembro del equipo pueda trabajar: Establecer los permisos necesarios en los distintos sistemas Clonar la rama de trabajo en el repositorio Facilitar un entorno de trabajo individual Etiquetar en el repositorio Construir artefactos y publicarlos en un repositorio Chequear si una rama puede integrarse en otra Integrar ramas Cambiar de entorno Estas actividades son también automatizables a través de motores de integración continua
10 Gestionar el proceso
11 Gestionar el proceso Definir Metodología Definir el marco de trabajo:Roles Repositorio Entornos Políticas y requisitos de calidad Definir los flujos de trabajo para cada activo: Estados Transiciones Restricciones Roles
12 Gestionar el proceso Definir Work Flow
13 Gestionar el proceso Definir Actividades a realizar en cada transición
14 Gestionar el proceso Asociación Transiciones WorkFlow Story-Tareas CITransición Tarea CI Descripción Tarea CI Planning Issue Demo_Story_Planning Clonado de la rama principal, para el nuevo desarrollo del developer. El nombre de la nueva rama esta parametrizado, es la key de la issue Jira. Aprovisionamiento Cloud Founfry Deploy Demo_Story_Deploy Recogida de código fuente desde repositorio central (GIT) Compilación del código fuente (Maven) Resolución de dependencias desde repositorio de artefactos (Nexus) Deploy del artefacto al entorno (Cloud Founfry) Make Request Demo_Story_Make Request Recogida de código fuente desde repositorio central (GIT) Compilación del código fuente (Maven) Resolución de dependencias desde repositorio de artefactos (Nexus) Realización de Test Revisión de calidad de código estático (Sonar) Envío de notificaciones de problemas a desarrolladores (Correo) Envío de notificaciones de éxito a desarrollador y responsable de integración (Correo) Build Demo_Story_Build Recogida de código fuente desde repositorio central (GIT) Compilación del código fuente (Maven) Resolución de dependencias desde repositorio de artefactos (Nexus) Realización de Test Revisión de calidad de código estático (Sonar) Envío de notificaciones de problemas a desarrolladores (Correo)
15 Nuestra solución
16 Nuestra Solución Gestión del proceso: JIRALos procesos definidos en nuestra metología… … se trasladan a JIRA… … transformándolos en workflows para cada elemento
17 Nuestra Solución Automatización acciones: JENKINSLas actividades a ejecutar en las transiciones de los workflows… … se parametrizan en Jenkins
18 Nuestra Solución Transparente al usuario: Integración Jenkins en los workflows JIRA Estado 1 Estado 2 Estado 3 1- En el cambio de estado en JIRA Estado 1 Estado 2 Estado 3 2- Solicitar a Jenkins 3- Realizar acción sobre GIT 4- Recuperar Feedback desde JIRA 5- Validar la transición
19 Nuestra Solución Representación de la Plataforma
20 Sistemas desplegados / configurados
21 Sistemas desplegados / configuradosIdentificación de los elementos LDAP: Propuesta de grupos y su configuración para dar soporte al conjunto de Roles definidos en la plataforma PaaS: Preparar los scripts de despliegue sobre los entornos, aprovisionamiento y gestión de permisos GIT: Propuesta de trabajo con las distintas ramas para soportar la metodología definida por el cliente. Scripts para gestión de permisos, ramas, merges. Nexus: Repositorio de artefactos Jenkins: Planificador / motor IC Sonar: Estadísticas calidad proyectos Jira: Gestión de proyectos Test Link: Gestión de pruebas Herramientas Quality: Ecosistema de herramientas de automatización de pruebas sobre Jenkins.
22 Sistemas desplegados / configuradosFuncionalidad sobre Jira Vector Jenkins Plugin: Plugin desarrollado por Vector para dar soporte adHoc a la metodología definida por el cliente sobre JIRA y gestionar sistemas de la plataforma desde el propio JIRA. JIRA DVCS Connector: Conector DVCS para JIRA, vinculación de defectos con GitHub. Wallboard: Enriquecimiento Cuadros de mando. Jenkins Plugin for JIRA: Embeber cuadros de mando Jenkins en JIRA. JIRA Agile: Soporte a la gestión de proyectos Ágil. TM Project Templates: Plantillado de proyectos.
23 Sistemas desplegados / configuradosMódulos implementados en el Vector Jenkins Plugin Relación de módulos incluidos / desarrollados en el plugin AdHoc a la metodología del cliente desde Jenkins / Jira: jenkins-rest-resources siteService buildService vector-jenkins-plugin Web Resources jenkins-images applicationProperties Servicio VSF Jenkins build en proyectos Servicio de configuración del plugin Servicio VSF Jenkins ejecucion y creacion de tareas Build Jenkins Campos proyecto - acciones ao-module Active Objects service Ejecuta tarea Jenkins Crear tarea Jenkins Rest Servlet Filter
24 Detalle funcional Jira
25 Detalle funcional JiraJira: gestión de proyectos Implementa la metodología de trabajo del cliente mediante workFlows que controlan: Actividades del equipo de desarrollo y los sistemas implicados Procesos de desarrollo Gestión de permisos para las transiciones de estado de los workFlows Crea las tareas a planificar sobre los sistemas implicados de forma desatendida Ejecución de tareas / validaciones automáticas en las transiciones entre los estados definidos, sobre otros sistemas de la plataforma
26 Detalle funcional JiraWork Flow: Normal WorksFlows implementados: Normal: El flujo de trabajo normal será el que trae JIRA por defecto
27 Detalle funcional JiraWork Flow: estados y transiciones Estados y transiciones: Normal
28 Detalle funcional JiraWork Flow: Story WorksFlows implementados: Story: Flujo para trabajar con los ítems User Story, Improvement, Bug.
29 Detalle funcional JiraWork Flow: estados y transiciones Estados y transiciones: Story
30 Detalle funcional JiraWork Flow: Merge WorksFlows implementados: Merge: Flujo para trabajar con el ítem Integration
31 Detalle funcional JiraWork Flow: Estados y transiciones Estados y transiciones: Merge
32 Detalle funcional JiraTareas Jenkins Siempre que una transición en un workFlow de JIRA implique la ejecución de tareas automáticas, estas se generan de forma automática en Jenkins tal y como se haya definido desde JIRA. Hemos implementado las pantallas de JIRA que facilitan la administración y configuración inicial de los workflows. JIRA Jenkins
33 Detalle funcional Jenkins
34 Detalle funcional JenkinsDescripción funcional Jenkins Jenkins: Automatización de tareas / validaciones Planifica y ejecuta las tareas encomendadas desde las transiciones JIRA: Tareas parametrizadas Recupera desde JIRA los parámetros necesarios para planificar y configurar tareas Proporciona feedback sobre la tarea JIRA asociada Actúa sobre el workFlow JIRA que lo invocó provocando transiciones en función del resultado de las tareas ejecutadas.
35 Detalle funcional JenkinsDescripción funcional Jenkins Jenkins: Automatización de tareas / validaciones Para cada transición que lo requiera desde JIRA, hemos implementado las siguientes acciones y sus correspondientes plantillas que utilizará JIRA para crear las tareas necesarias para cada elemento: Flujo Transición Tarea Jenkins Descripción Tarea Jenkins Story Planning Issue Demo_Story_Planning Clonado de la rama principal, para el nuevo desarrollo del developer. El nombre de la nueva rama esta parametrizado, es la key de la issue Jira. Aprovisionamiento PaaS Deploy Demo_Story_Deploy Recogida de código fuente desde repositorio central (GIT) Compilación del código fuente (Maven) Resolución de dependencias desde repositorio de artefactos (Nexus) Deploy del artefacto al entorno (Paas)
36 Detalle funcional JenkinsDescripción funcional Jenkins Jenkins: Automatización de tareas / validaciones Flujo Transición Tarea Jenkins Descripción Tarea Jenkins Story Make Request Demo_Story_Make Request Recogida de código fuente desde repositorio central (GIT) Compilación del código fuente (Maven) Resolución de dependencias desde repositorio de artefactos (Nexus) Realización de Test Revisión de calidad de código estático (Sonar) Envío de notificaciones de problemas a desarrolladores (Correo) Envío de notificaciones de éxito a desarrollador y responsable de integración (Correo) Build Demo_Story_Build
37 Detalle funcional JenkinsDescripción funcional Jenkins Jenkins: Automatización de tareas / validaciones Flujo Transición Tarea Jenkins Descripción Tarea Jenkins Story OK Request Demo_Story_OK_Reque st Recogida de código fuente desde repositorio central (GIT) Compilación del código fuente (Maven) Resolución de dependencias desde repositorio de artefactos (Nexus) Despliegue artefacto generado al repositorio de artefactos (Nexus) Generación de tag Envío de notificaciones de problemas a desarrolladores (Correo) Start Integration Demo_Story_Merge Simulación de Integración de ramas (Merge) Merge Demo_Integration_Merge
38 Detalle funcional Quality
39 Detalle funcional qualityDescripción funcional Quality Herramientas de QUALITY Para dar soporte a la documentación y gestión de las pruebas funcionales manuales o automáticas desplegar la solución testLink Para dar soporte a la ejecución de pruebas automáticas incluimos los plugins necesarios sobre la plataforma: Jenkins: Jmeter: Performance Plugin Jenkins: JUnit: Performance Plugin Jenkins: Selenium: Selenium Plugin
40 Detalle funcional qualityDescripción funcional Quality Herramientas de QUALITY Para recoger el histórico de ejecución de las pruebas automáticas sobre el repositorio de pruebas TestLink, desplegar: Jenkins: TestLink Plugin Para trazar las incidencias asociadas a los casos de prueba en TestLink con JIRA, desplegar: TestLink: AddIn TestLink para Jira
41