Domanda

Attualmente sto lavorando a un prodotto lato server che è un po 'complesso da distribuire su un nuovo server, il che lo rende un candidato ideale per il test in una VM. Stiamo già utilizzando Hudson come nostro sistema CI e mi piacerebbe davvero poter distribuire un'immagine di macchina virtuale con l'ultimo e il più grande software come artefatto di build.

Quindi, come si fa a fare esattamente questo? Quale software VM è raccomandato a questo scopo? Quanto script deve essere fatto per raggiungere questo obiettivo? Ci sono problemi in particolare quando si utilizza Windows 2003 Server come sistema operativo qui?

È stato utile?

Soluzione

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

Innanzitutto, sia VirtualBox che VMWare Server sono ottimi prodotti e, poiché entrambi sono gratuiti, vale la pena valutarli ciascuno. Abbiamo deciso di utilizzare VMWare Server, dal momento che è un prodotto più consolidato e possiamo ottenere supporto per ciò di cui avremmo bisogno. Ciò è particolarmente importante poiché stiamo anche considerando di distribuire il nostro software ai client come VM anziché come installazione di un server speciale, supponendo che il sovraccarico di VMWare Player non sia troppo elevato. Inoltre, esiste una interfaccia di scripting VMWare chiamata VIX a cui è possibile utilizzare direttamente installa i file sulla VM senza bisogno di installare SSH o SFTP, il che è un grande vantaggio.

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

Altri suggerimenti

Indipendentemente dal software VM (posso consigliare anche VirtualBox) Penso che tu stia guardando il seguente scenario:

  1. La compilazione è terminata
  2. CI avvia la macchina virtuale (o è sempre in esecuzione)
  3. CI utilizza scp / sftp per caricare build nella VM tramite la rete
  4. CI utilizza ssh (se disponibile sul sistema operativo di destinazione in esecuzione nella VM) o altra funzione di esecuzione dei comandi remoti per avviare l'installazione nell'ambiente VM

VMWare Server è gratuito e un prodotto molto stabile. Ti dà anche la possibilità di creare istantanee della sezione VM e ripristinare la versione precedente della tua macchina virtuale quando necessario. Funzionerà bene su Win 2003.

In termini di provisioning di nuove sezioni VM per le build, è possibile semplicemente copiare e incollare la cartella che contiene i file VMWare, modificare il SID e l'IP della nuova VM e si dispone di una nuova macchina. Richiede 15 minuti a seconda della dimensione della sezione VM. Non sono richiesti script.

Se usi VirtualBox, ti consigliamo di eseguirlo senza testa, poiché sarà sul tuo server. Normalmente, VirtualBox funziona come un'app desktop, ma è possibile avviare VM dalla riga di comando e accedere alla macchina virtuale tramite RDP.

VBoxManage startvm "Windows 2003 Server" -type vrdp

Per questo scenario stiamo usando Jenkins + Vagrant + Chef.

Quindi puoi fare il seguente processo:

  • La versione controlla l'ambiente VM utilizzando script di provisioning vagabondi (Chef o Puppet)

  • Crea il tuo sistema utilizzando Jenkins / Hudson

  • Esegui il tuo script Vagrant per recuperare l'ultima versione stabile dall'output CI

  • Salva lo stato della VM per riutilizzarlo in futuro.

Riferimento:

vagrantup.com

Consiglierei VirtualBox . È gratuito e ha un'interfaccia di programmazione ben definita, anche se non l'ho usato personalmente in situazioni di build automatizzate.

La scelta di VMWare attualmente NON è una cattiva scelta.

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

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top