Share:
Subscribe and receive the latest news directly in your email.

New technologies

Integration and continuous delivery

La integración continua consiste en la ejecución programada de procesos que revisan periódicamente los cambios realizados en el código de un proyecto a través del sistema de control de versiones (subversion, git, mercurial…) para proceder si es necesario a la compilación del código, la realización de las pruebas unitarias, cálculos de métricas de calidad,etc, . El objetivo final es monitorizar constantemente los proyectos de forma que cualquier incidencia (una actualización de código que impida la compilación, un test unitario que deja de funcionar, etc) sea detectada automáticamente lo antes posible y comunicada a los responsables para proceder a su resolución.

Las ventajas de utilizar herramientas de integración continua en los procesos de desarrollo de software y de supervisión de calidad son ciertamente importantes:

  • No hay que esperar a que alguien descubra que un test falla o que se ha realizado una subida incorrecta de código al sistema de control de versiones puesto que la integración continua hace esto por nosotros de forma automática.
  • Como consecuencia del punto anterior, los problemas se pueden afrontar de inmediato. Así evitamos sorpresas de última hora cuando se aproximan las fechas de entrega.
  • El origen de los problemas detectados es fácilmente identificable.
  • Tenemos siempre disponibles para consultar las métricas de calidad del proyecto debidamente actualizadas.
  • Se permite la trazabilidad de la evolución del código del proyecto. Esto nos proporciona un feedback muy valioso a la hora de mejorar nuestros procesos.
  • Se agiliza el proceso de desarrollo ya que se consiguen que algunas tareas se ejecuten de forma automática y cuando más nos convenga en función del proyecto. Esto libera a los desarrolladores de tener que realizar estas tareas o procesos manualmente y que a menudo suelen ser tediosos, como por ejemplo ejecutar y revisar los resultados de los tests unitarios.

Podemos dar un paso más, y además de llevar a cabo procesos de integración de continua realizar Continuous Deployment o Despliegue Continuo, que consiste en la publicación y entrega automática de nuevas versiones (ya sea en entornos de pruebas o , en raras ocasiones, directamente en producción) correspondientes a la última versión del código de la aplicación que haya superado satisfactoriamente las verificaciones que hayamos impuesto en el proceso de integración contínua. Así pues, complementar los procesos de integración continua con procesos de entrega continua aporta estas ventajas adicionales:

  • Anyone involved in the project but who is not a developer (testing team, sales, project managers, even clients) always has the latest version of the application ready to use or review.
  • The transition to production can be fully scheduled and unattended.
  • As with continuous integration, we continue to automate tasks and free the development team from performing them manually.

At Soltel IT Software, we utilize both continuous integration and continuous delivery within our software development and quality assurance processes, always tailored to the specific requirements and needs of each project and client. This practice is documented in our development processes, which comply with applicable regulations. ISO 15504 SPICE and are certified by AENOR.

The transition to production can be fully scheduled and unattended.

  proceso

For continuous integration and delivery, we have chosen to use the web application. Jenkins, a fork of Hudson (Open Source project started by Kohsuke Kawaguchi (at Sun Microsystems). This fork originated after Oracle's purchase of Sun and subsequent disputes between the Hudson and Oracle developer communities.

There are numerous reasons why we use and recommend this tool:

  • It is free software, so its use does not involve any licensing costs, although there are companies that offer support, the best known being CloudBees which tells a version Enterprise.
  • It provides out-of-the-box support for our main technology stack: Maven (and its plugins), Subversion, and Java.
  • Despite being a very powerful and configurable tool, the interface is simple and the application is easy to use. The learning curve is low for both users and administrators.
  • Es una herramienta muy popular, por lo que es fácil encontrar documentación y ayuda en la red.
  • Jenkins ofrece unas funcionalidades muy básicas pero está concebido para ser muy extensible mediante plugins que podemos instalar desde la misma aplicación. En la actualidad existen oficialmente más de 400 plugins disponibles, entre ellos los que nos permiten utilizar Jenkins con proyectos en otros lenguajes que no sean Java tales como PHP o Ruby.
  • Hay plugins que permiten realizar entrega continua. Por ejemplo nosotros usamos Deploy Plugin para realizar publicaciones automáticas de aplicaciones web en un Tomcat alojado en otra máquina y así tener siempre disponible la última versión estable de cada aplicación.
  • Se integra perfectamente con Sonar, herramienta que utilizamos para las métricas de calidad. También tiene soporte para Cobertura, PMD, Checkstyle…
  • Posee un sistema de gestión de roles y agrupación de proyectos que la hacen bastante escalable en función del número de proyectos y equipos de desarrollo existentes.
  • Los problemas detectados en la ejecución de cualquier tarea son notificados inmediatamente al equipo de desarrollo mediante correo electrónico, aunque también hay plugins que ofrecen otras opciones.
  • Disponemos de un histórico totalmente configurable tanto de las tareas ejecutadas como de los productos resultantes de las mismas. Esto nos permite seguir la evolución del proyecto y la posibilidad de recuperar versiones antiguas de los aplicativos en caso de que fuera necesario.

Nosotros usamos la instancia de Jenkins incluída en el ecosistema de desarrollo Clinker que además incluye Sonar, Redmine, Subversion…un producto excelente que también recomendamos.

Por último, y como curiosidad, aquí dejamos el enlace a la instancia de Jenkins utilizada para realizar las tareas de integración continua del propio Jenkins para que podáis ver su funcionamiento «en directo».

jenkins-pantalla-principal

Tags:
Qualitydespliegue continuoentrega continuajenkins

Other news