continuous integration - integracion - ¿Crear una imagen de máquina virtual como un artefacto de integración continua?
la integración continua en la etapa de desarrollo de software implica (8)
Independientemente del software de VM (también puedo recomendar VirtualBox), creo que está viendo el siguiente escenario:
- La construcción está hecha
- CI lanza una máquina virtual (o siempre está ejecutándose)
- CI usa scp / sftp para cargar compilación en VM a través de la red
- CI usa el ssh (si está disponible en el sistema operativo objetivo que se ejecuta en la máquina virtual) u otro recurso de ejecución remota de comandos para activar la instalación en el entorno de máquina virtual
Actualmente estoy trabajando en un producto del lado del servidor que es un poco complejo de implementar en un nuevo servidor, lo que lo convierte en un candidato ideal para probar en una VM. Ya usamos Hudson como nuestro sistema de CI, y realmente me gustaría poder implementar una imagen de máquina virtual con el último y más grande software como artefacto de construcción.
Entonces, ¿cómo hace uno para hacer esto exactamente? ¿Qué software de VM se recomienda para este propósito? ¿Cuánto scripting necesita hacerse para lograr esto? ¿Hay algún problema en particular cuando se usa Windows 2003 Server como sistema operativo aquí?
VMWare Server es gratuito y un producto muy estable. También le brinda la capacidad de crear instantáneas de la división y reversión de VM a la versión anterior de su máquina virtual cuando sea necesario. Funcionará bien en Win 2003.
En términos de aprovisionamiento de nuevas divisiones de VM para sus compilaciones, puede simplemente copiar y pasar la carpeta que contiene los archivos de VMWare, cambiar el SID y el IP de la nueva máquina virtual y usted tiene una máquina nueva. Toma 15 minutos dependiendo del tamaño de su segmento VM. No se requiere scripting
Yo recomendaría VirtualBox . Es gratis y tiene una interfaz de programación bien definida, aunque no la he usado personalmente en situaciones de construcción automatizadas.
Si usa VirtualBox, querrá considerar ejecutarlo sin cabeza, ya que estará en su servidor. Normalmente, VirtualBox se ejecuta como una aplicación de escritorio, pero es posible iniciar máquinas virtuales desde la línea de comandos y acceder a la máquina virtual a través de RDP.
VBoxManage startvm "Windows 2003 Server" -type vrdp
Elegir VMWare actualmente NO es una mala opción.
Sin embargo, al igual que VMWare brinda soporte para el servidor VMWare, SUN brinda soporte para VirtualBOX.
Perdón por negarle a alguien una respuesta aceptada aquí, pero en base a más investigaciones (¡gracias a tus respuestas!), Encontré una mejor solución y quería resumir lo que encontré.
En primer lugar, tanto VirtualBox como VMWare Server son excelentes productos, y dado que ambos son gratuitos, vale la pena evaluarlos. Decidimos ir con VMWare Server, ya que es un producto más establecido y podemos obtener soporte para él si lo necesitamos. Esto es especialmente importante ya que también estamos considerando distribuir nuestro software a los clientes como una máquina virtual en lugar de una instalación especial del servidor, suponiendo que la sobrecarga del reproductor VMWare no sea demasiado alta. Además, hay una interfaz de scripts VMWare llamada VIX que se puede utilizar para instalar directamente los archivos en la máquina virtual sin necesidad de instalar SSH o SFTP, lo cual es una gran ventaja.
Por lo tanto, nuestra solución es básicamente la siguiente ... primero creamos una imagen VM "vanilla" con sistema operativo, nada más, y lo registramos en el repositorio. Luego, escribimos un script que actúa como nuestro instalador, colocando los artefactos creados por Hudson en la VM. Esta secuencia de comandos debe tener interfaces para copiar archivos directamente, a través de SFTP y a través de VIX. Esto nos permitirá continuar distribuyendo software directamente en la máquina de destino, o a través de una VM de nuestra elección. Esta imagen resultante se comprime y distribuye como artefacto del servidor de CI.
También puede realizar esta tarea utilizando VMWare Studio, que también es gratuito. El flujo de trabajo básico es el siguiente: 1. Cree un archivo XML que describa su máquina virtual 2. Use studio para crear el shell. 3. Use el servidor VMWare para aprovisionar la máquina virtual.
Estamos usando Jenkins + Vagrant + Chef para este escenario.
Entonces puedes hacer el siguiente proceso:
La versión controla su entorno de máquina virtual utilizando scripts de aprovisionamiento vagos (Chef o Puppet)
Construya su sistema usando Jenkins / Hudson
Ejecute su script Vagrant para recuperar la última versión estable de la salida de CI
Guarde el estado de la VM para reutilizar en el futuro.
Referencia:
vagrantup.com