continuous integration - sonar - ¿Cómo combinar Vagrant con Jenkins para el perfecto entorno de integración continua?
jenkins significado (3)
Usted tiene un proyecto que tiene algunos requisitos SW para ejecutar (por ejemplo: una versión específica de Apache, una versión de PHP, una instancia de una base de datos MySQL y un par de otras piezas de software).
Ya ha descubierto Vagrant , por lo que su entorno virtual está configurado. Puede crear cuadros de sus archivos de configuración y libros de cocina.
También ha entendido las ventajas de un sistema de Integración Continua como Jenkins .
Ahora le gustaría combinar estos dos mundos (Vagrant y Jenkins) para obtener el perfecto entorno de integración continua. Para ser más específico, le gustaría no instalar el SW requerido por su proyecto en la máquina que ejecuta Jenkins, pero le gustaría usar el entorno virtual provisto por Vagrant para construir su proyecto periódicamente en la parte superior. El software de CI (Jenkins) construirá la caja Vagrant para usted y creará y probará su proyecto en la parte superior.
¿Cómo configuraría su entorno para lograr esto?
Personalmente, sugiero usar Hashicorp Packer para construir sus cajas Vagrant para desarrolladores, y luego usarlo también para generar una imagen Docker o AWS o OpenStack que pueda ejecutar en su sistema CI. Vagrant es una herramienta increíble, pero la sobrecarga de las máquinas virtuales puede ser un poco alta para que un sistema de CI las haga girar constantemente hacia arriba y hacia abajo, especialmente si desea retroalimentación realmente rápida.
En un cliente anterior básicamente arrancamos las máquinas Vagrant una vez con el sistema, y luego ejecutamos las compilaciones Docker / virtualenv dentro de esas máquinas virtuales y las destruimos periódicamente cuando hubo una actualización importante o un problema con el entorno que no se comportaba correctamente.
Puede probar el complemento Vagrant para Jenkins que actualmente es compatible con Jenkins CD 1.532.3
Puede ver una demostración de este complemento ejecutándose en http://unethicalblogger.com/2012/03/13/vagrant-plugin-in-action.html
es una buena solución para el sistema de compilación, mi sugerencia:
- Su jenkins actual funciona como CI maestro (probablemente iniciado por el usuario jenkins)
- Crear otro usuario en la misma máquina u otra máquina para trabajar como modo esclavo Jenkins
- jenkins slave puede ser invocado desde jenkins master, y puede usar diferente usuario como vagabundo que tenga permiso y entorno para vagabundo, por lo tanto no interferirá con el servidor maestro jenkins original.
- crea tu caja de vagabundo base, luego se puede reutilizar para acelerar tu despliegue
- La mayor parte de la información de instalación (paquetes) podría ser administrada por un títere (o chef) para que se cargue en su caja de vm.
Probablemente puedas echar un vistazo a veewee , que puede crear una caja vagabunda sobre la marcha.
Aquí está el Make CI easy con Jenkins CI y Vagrant para mi guía para esta sugerencia.