¿Cómo combinar Vagrant con Jenkins para un Entorno de Integración Continua perfecto?


Tiene un proyecto que tiene algunos requisitos de 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 cajas a partir 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 te gustaría combinar estos dos mundos (Vagrant y Jenkins) para obtener el Entorno de Integración Continua perfecto. 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 proporcionado por Vagrant para construir periódicamente su proyecto en la parte superior de él. El software CI (Jenkins) construirá el Vagrant box para usted y construirá y probará su proyecto en la parte superior.

¿Cómo te gustaría configurar su entorno para lograr esto?

Author: Roberto Aloi, 2011-08-04

3 answers

Es una buena solución para build system, mi sugerencia:

  1. Su jenkins actual funciona como CI maestro (probablemente iniciado por el usuario jenkins)
  2. Crear otro usuario en la misma máquina u otra máquina para trabajar como modo esclavo jenkins
    • jenkins slave se puede invocar desde jenkins master, y puede usar diferentes usuarios como vagrant que tenían permiso y entorno para vagrant, por lo tanto, no interferirá con el servidor maestro jenkins original
    • crea tu base vagrant box, luego se puede reutilizar para acelerar su implementación
  3. La mayor parte de la información de instalación (paquetes) podría ser administrada por puppet (o chef) para ser cargada en su caja de vm.

Probablemente puedas echar un vistazo a veewee, que puede crear vagrant box al volar.

Aquí está el Hacer CI más fácil con Jenkins CI y Vagrant para mi guía para esta sugerencia.

 32
Author: Larry Cai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-13 00:24:28

Puedes probar el plugin Vagrant para Jenkins que actualmente soporta Jenkins CD 1.532.3

Puedes ver una demostración de este plugin corriendo en http://unethicalblogger.com/2012/03/13/vagrant-plugin-in-action.html

 12
Author: Christophe Furmaniak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-13 19:44:48

Personalmente, sugiero usar Hashicorp Packer para construir sus Vagrant boxes para desarrolladores, y luego usarlo 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 gire constantemente hacia arriba y hacia abajo, especialmente si desea una retroalimentación realmente rápida.

En un cliente anterior básicamente arrancamos las máquinas Vagrant una vez con el sistema, y luego ejecutamos Docker / virtualenv se construye 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.

Https://www.packer.io/docs/builders/openstack.html

 0
Author: dragon788,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-21 18:13:17