continuous integration machine Creare un'immagine della macchina virtuale come un artefatto di integrazione continua?




virtualbox windows 10 (7)

È anche possibile eseguire questa attività utilizzando VMWare Studio, che è anche gratuito. Il flusso di lavoro di base è questo: 1. Creare un file XML che descriva la macchina virtuale 2. Usare studio per creare la shell. 3. Utilizzare il server VMWare per eseguire il provisioning della macchina virtuale.

Attualmente sto lavorando a un prodotto server-side che è un po 'complesso da implementare su un nuovo server, il che lo rende un candidato ideale per la sperimentazione in una VM. Stiamo già utilizzando Hudson come nostro sistema di CI e mi piacerebbe davvero essere in grado di distribuire un'immagine di macchina virtuale con il software più recente e più grande come artefatto di costruzione.

Quindi, come si fa a fare esattamente questo? Quale software VM è raccomandato per questo scopo? Quanti script devono essere fatti per realizzare questo? Ci sono problemi in particolare quando usi Windows 2003 Server come sistema operativo qui?


Mi dispiace di negare a nessuno una risposta accettata qui, ma sulla base di ulteriori ricerche (grazie alle tue risposte!), Ho trovato una soluzione migliore e ho voluto riassumere ciò che ho trovato.

In primo luogo, sia VirtualBox che VMWare Server sono ottimi prodotti e, poiché entrambi sono gratuiti, ognuno merita di essere valutato. Abbiamo deciso di andare con VMWare Server, poiché è un prodotto più consolidato e possiamo ottenere supporto per questo se necessario. Ciò è particolarmente importante poiché stiamo considerando la possibilità di distribuire il nostro software ai client come VM invece di un'installazione server speciale, presupponendo che il sovraccarico di VMWare Player non sia troppo elevato. Inoltre, esiste un'interfaccia di scripting VMWare chiamata VIX che si può usare per installare direttamente i file sulla VM senza dover installare SSH o SFTP, il che è un grande vantaggio.

Quindi la nostra soluzione è fondamentalmente la seguente ... per prima cosa creiamo un'immagine VM "vanilla" con OS, nient'altro, e la controlliamo nel repository. Quindi, scriviamo uno script che funge da nostro programma di installazione, mettendo gli artefatti creati da Hudson sulla VM. Questo script dovrebbe avere interfacce per copiare i file direttamente, su SFTP e attraverso VIX. Ciò ci consentirà di continuare a distribuire il software direttamente sulla macchina di destinazione o tramite una VM di nostra scelta. L'immagine risultante viene quindi compressa e distribuita come artefatto del server CI.


Consiglierei VirtualBox . È gratuito e ha un'interfaccia di programmazione ben definita, sebbene non l'abbia mai usato personalmente in situazioni di build automatizzate.


Usiamo Jenkins + Vagrant + Chef per questo scenario.

Quindi puoi fare il seguente processo:

  • La versione controlla il tuo ambiente VM usando script di provisioning vagabondi (Chef o Puppet)

  • Costruisci il tuo sistema usando Jenkins / Hudson

  • Esegui il tuo script Vagrant per recuperare l'ultima versione stabile dall'output dell'elemento della configurazione

  • Salvare lo stato della macchina virtuale per riutilizzarlo in futuro.

Riferimento:

vagrantup.com


Indipendentemente dal software VM (posso consigliare anche VirtualBox), penso che stai guardando il seguente scenario:

  1. La costruzione è fatta
  2. CI avvia la macchina virtuale (o è sempre in esecuzione)
  3. CI usa scp / sftp per caricare build in VM sulla rete
  4. CI utilizza ssh (se disponibile sul SO di destinazione in esecuzione nella VM) o altra funzione di esecuzione dei comandi remota per attivare l'installazione nell'ambiente VM

Scegliere VMWare non è attualmente una scelta sbagliata.

Tuttavia, proprio come VMWare fornisce supporto per il server VMWare, SUN fornisce supporto per VirtualBOX.


Se usi VirtualBox, ti consigliamo di eseguirlo senza headless, dato che sarà sul tuo server. Normalmente, VirtualBox viene eseguito come app desktop, ma è possibile avviare le VM dalla riga di comando e accedere alla macchina virtuale su RDP.

VBoxManage startvm "Windows 2003 Server" -type vrdp