Ahora que SonarQube puede escanear nuestros diversos proyectos para producir informes de calidad de código (consulte el artículo sobre SonarQube ), es interesante automatizar el proceso, y aquí es donde continúa una herramienta de integración a medida que interviene Jenkins.
SonarQube, como hemos visto, es muy interesante para escanear nuestros proyectos y encontrar errores.
O formas de codificación que no se corresponden con los estándares. Por otro lado, a menos que lo programe a intervalos regulares (a través de un shell, por ejemplo, en crontab), no se iniciará por sí mismo. Es una pena lanzar un análisis si no se ha realizado ninguna modificación en el código, y es una pena que el código se haya modificado durante varios días sin ejecutar un análisis. Aquí es donde Jenkins es interesante. Porque puede conectarse a una herramienta de administración de fuentes (Git, SVN) y ver si se han realizado cambios. Si detecta alguno, puede lanzar una «compilación» que podrá lanzar una cierta cantidad de acciones.
Instalación de Jenkins
Instalar Jenkins es bastante simple. La instalación completa se describe en este blog
En resumen, simplemente ejecute estas cuatro líneas para instalar Jenkins:
wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add - sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ & amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp; amp; amp; amp; amp; gt; /etc/apt/sources.list.d/jenkins.list' sudo apt-get update sudo apt-get install jenkins
Una vez instalado Jenkins, es posible a través de la «Gestión de complementos» de la administración enriquecerlo. En nuestro caso, agregamos los siguientes complementos:
- Complemento Git
- Complemento SonarQube
Ahora estamos listos para comenzar a crear proyectos.
crear un proyecto
Opciones de proyecto
Para crear un proyecto, simplemente haga clic en «Nuevo elemento» en la página de inicio de Jenkins. Tendrás la siguiente pantalla:
En el marco de un proyecto PHP, es necesario elegir el proyecto de estilo libre que será totalmente configurable.
Una vez definido el nombre y el tipo de proyecto, se entra en la configuración fina. El primer bloque se refiere a las opciones del proyecto:
Además de la descripción, puede establecer una serie de cosas. Como, por ejemplo, tener una eliminación automática de compilaciones antiguas. Tenga en cuenta que en el universo de Jenkins, la compilación es la operación que consiste en iniciar el proyecto, realizar todos los pasos que ha definido para él e informar el estado de la compilación. Depende de usted según el peso de las compilaciones antiguas y el historial que desee conservar. En cualquier caso, puede ser interesante activar esta opción para evitar tener un abultamiento del espacio de almacenamiento con builds de una época lejana. También puede establecer la política de retención de artefactos. Estos son archivos y datos generados por la compilación que Jenkins puede almacenar o no.
Gestión de código fuente
Aquí estamos en el corazón del proceso de integración continua y la razón por la que instalamos Jenkins además de SonarQube. Puede conectarse a un administrador de código fuente para ver si el código ha cambiado. Si es así, se conectará al repositorio para repatriar el código fuente en un directorio de trabajo y lanzará una compilación. En nuestro caso, se conectará a un repositorio de Git (con el complemento instalado):
Tendrás que ingresar la url del repositorio de Git, elegir las credenciales que te permitirán conectarte a él (se habrán ingresado previamente en la sección dedicada de la administración, para Git es posible ingresar la clave ssh) y la rama a escanear. En un proceso de integración continua en modo GitFlow (ver el artículo sobre Git y SourceTree en este blog ), lo ideal es conectarse a la rama de desarrollo para tener una retroalimentación del análisis antes del margen con la rama maestra. También es posible conectarlo a una característica específica.
Una vez que se han establecido los parámetros de conexión del repositorio, debe especificar qué desencadena la compilación y la frecuencia de la búsqueda:
En este ejemplo, la compilación se desencadena mediante un escaneo de la herramienta de administración de código (si se detecta una modificación, se inicia la compilación). Él revisa cada media hora. La sintaxis H/30 le da flexibilidad a Jenkins para que pueda administrar mejor la carga si es necesario lanzar varias compilaciones.
Lanzar un análisis de SonarQube
Ahora que hemos definido nuestro proyecto y lo que desencadena la compilación, debemos decirle a Jenkins qué hacer durante esta compilación. En nuestro caso, queremos que ejecute un análisis con SonarQube. A medida que nuestro complemento esté instalado, podremos solicitarlo a través del botón «Agregar un paso a la compilación». En las opciones encontraremos «Lanzar un análisis independiente de SonarQube». Simplemente complete la «ruta a las propiedades del proyecto» (el archivo sonar-project.properties descrito más detalladamente en el artículo sobre SonarQube ):
Resultado de una compilación
En la casa de Jenkins, tendrás un resumen de todos tus proyectos, con cada uno de ellos una línea parecida a esta:
Tiene una bola de color que indica el estado de la compilación, un símbolo meteorológico para brindar una descripción general de la última compilación, el nombre del proyecto, la fecha de lanzamiento de la última compilación, la fecha de la última falla, la duración de la última compilación y la posibilidad de iniciar una compilación manualmente.
Al ingresar a un proyecto, podrá tener el historial de construcción. Al ingresar una compilación podrá tener un detalle completo. En particular, una salida de la consola que detalla todo lo que sucedió durante la compilación:
proyectos PHP
Por ahora, usamos principalmente Jenkins para ejecutar un análisis de SonarQube, también estoy configurando un lanzamiento de un análisis de código muerto independiente con PHPDCD , así como una generación de documentación con PHPDocumentor porque eso es suficiente por el momento para nuestras necesidades.
Tenga en cuenta que existen «plantillas» de PHP para Jenkins que usan Ant o Phing. Permiten proporcionar un script para el lanzamiento de diferentes herramientas (PHPUnit, PHPDox, PHPMD, PHP_CodeSniffer). Puede encontrar más detalles al respecto siguiendo este enlace o este enlace .
Sin duda tendré la oportunidad de hablar sobre Jenkins y la integración continua a medida que la usamos.