La integración continua se ha consolidado en el desarrollo de software como un modelo imprescindible en la construcción de aplicaciones.
Y ello es principalmente debido a la serie de ventajas que ofrece respecto a métodos más tradicionales, de entre las que podríamos destacar:
No obstante, y a pesar de las herramientas disponibles, incluso de software libre, para llevar a cabo la integración continua, no es gratuito dar ese paso, y muchos menos mantenerlo.
En este caso, el mayor coste no es directamente el económico, sino el de la especialización, que repercute sobre el tiempo necesario tanto para el aprendizaje del dominio de las distintas herramientas que se deben utilizar, como el de la experiencia a la hora de resolver las incidencias más habituales, o dedicar lo necesario para el mantenimiento y actualizaciones que permitan disponer de una infraestructura estable y segura.
Así que hoy, damos un paso más allá en el fomento de la cultura DevOps, para hablar de ese trabajo tan fundamental como es el de mantener y configurar las herramientas necesarias para llevar a cabo la integración continua.
Las herramientas son necesarias son básicamente dos.
Principalmente, un servidor de automatización, que será el encargado de realizar las tareas necesarias para la compilación del proyecto.
Pero, además, y como hoy en día no es suficiente con desarrollar software, sino que hay que desarrollarlo con calidad, y en la integración continua también se incluyen las pruebas unitarias, cada vez es más importante complementarlo con una herramienta de análisis de código, que ayudará a asegurar que el producto se construye cumpliendo con los requisitos establecidos.
En primer lugar, como servidor para la integración contina, hablaremos de Jenkins, por la versatilidad que ofrece y la cantidad de plugins disponibles para obtener una configuración acorde a nuestras necesidades.
Mientras que la parte de inspección de código, tomaremos SonarQube como referencia.
Ya hemos hablado en varias ocasiones de Jenkins y obviamente de fundamental papel en la integración continua.
Pero el mayor aprovechamiento de esta herramienta, se obtiene principalmente por 3 elementos:
En este apartado de la configuración, es donde se debe definir los aspectos básicos de su instancia como, por ejemplo, la URL mediante la cual se podrá acceder a la herramienta.
Y también en este apartado será donde se debe especificar los datos relativos a la instancia de Sonarqube que tengamos disponible.
En la mayoría de situaciones, sobretodo si las herramientas pertenecen a una organización empresariales, también es imprescindible que se configure un token, necesario para poder conectar con la instancia de SonarQube sin necesidad de que sea pública y por lo tanto haya que poner en riesgo la seguridad.
Por otro lado, el resto de herramientas se configurarán en esta sección, y donde se debe prestar especial atención es en los apartados:
Una de las características más destacables de Jenkins es su gran cantidad de plugins disponibles que permiten ampliar su versatilidad
No solo es admirable el número de Jenkins plugins existentes, sino la facilidad para instalarlos.
Si bien es fácil su selección e instalación, siempre será necesario conocer el plugin, para poder validar su compatibilidad, tanto con la instancia de Jenkins, como con los proyectos que se integren en ella.
Además, para poder configurar las herramientas de la sección anteriormente presentada, es necesario en muchos casos instalar su respectivos plugins: como, por ejemplo, el Maven plugin o el SonarQube plugin.
Como decíamos antes, la integración continua, no se limita solo a compilar, en ella se incluyen también las pruebas unitarias, por lo que una herramienta de inspección de código se convierte en el complemento ideal.
Y cuando hablamos de SonarQube, no debemos hacer referencia simplemente a su instancia y su sonar scanner.
También es recomendable contar con sonarlint en los respectivos IDE’s de desarrollo del equipo, con lo que podremos evitar un buen número de evidencias lleguen al repositorio, por lo tanto, a su construcción en Jenkins.
Todo ello, teniendo siempre en mente el objetivo de contar con un código limpio y seguro.
En este caso, la configuración necesaria para la correcta sincronización Jenkins Sonar, pasa por las siguientes secciones:
Donde se deben establecer los parámetros de la instancia de SonarQube, necesarios como contábamos anteriormente para establecerlo en la instancia de Jenkins
Además, en este apartado es donde se especifican los distintos valores necesarios para el correcto análisis de código de un proyecto en función del lenguaje que utilice.
Por otro lado, SonarQube cuenta con un archivo llamado sonar properties, en el que se pueden establecer estos valores.
En este caso, también SonarQube cuenta con una amplia variedad de plugins que permiten ampliar sus funcionalidades y, como en el caso anterior, aunque su instalación es sencilla, es necesario asegurar la compatibilidad y escoger los adecuados para obtener los mejores resultados y mantener una instancia estable y segura.
Contáctanos y te guiaremos hacia la mejor implementación.