Come combinare Vagrant con Jenkins per un perfetto ambiente di integrazione continua?


86

Hai un progetto che ha alcuni requisiti SW da eseguire (ad esempio: una versione specifica di Apache, una versione di PHP, un'istanza di un database MySQL e un paio di altri software).

Hai già scoperto Vagrant , quindi il tuo ambiente virtuale è tutto configurato. È possibile creare scatole dai file di configurazione e dai libri di cucina.

Hai anche compreso i vantaggi di un sistema di integrazione continua come Jenkins .

Ora vorresti combinare questi due mondi (Vagrant e Jenkins) per ottenere il perfetto Ambiente di integrazione continua. Per essere più precisi, non vorresti installare il SW richiesto dal tuo progetto sulla macchina che esegue Jenkins, ma ti piacerebbe utilizzare l'ambiente virtuale fornito da Vagrant per costruire periodicamente il tuo progetto sopra di esso. Il software CI (Jenkins) costruirà la scatola Vagrant per te e costruirà e testerà il tuo progetto sopra di essa.

Come configureresti il ​​tuo ambiente per raggiungere questo obiettivo?


4
Inoltre, la tua configurazione Jenkins è una scatola Vagrant, quindi puoi eseguire questo ambiente CI su più piattaforme, poiché ci sono molte differenze tra di loro.
Stephan Eggermont

1
Hai creato un tale ambiente? La combinazione di Docker e Jenkins è già ben nota, tuttavia, non sarà sufficiente per gli ambienti Windows, nel qual caso l'unica buona opzione, IMO, è Vagrant + Jenkins. Ci sono alcuni aspetti da considerare, ad esempio abbiamo davvero bisogno di schiavi e in quali contesti o potremmo usare un singolo server per creare un ambiente di build vagabondo per progetto su richiesta (in molte aziende solo pochi progetti sono costantemente in costruzione, la maggior parte è raramente costruita), o dovremmo usarlo sopra il sistema di deduplicazione per ridurre l'ingombro del disco.
Majkinetor

Risposte:


36

è una buona soluzione per il sistema di compilazione, il mio suggerimento:

  1. Il tuo jenkins attuale funziona come CI principale (probabilmente avviato dall'utente jenkins)
  2. Crea un altro utente nella stessa macchina o in un'altra macchina per lavorare come modalità slave jenkins
    • jenkins slave può essere invocato dal jenkins master e può utilizzare utenti diversi come vagrant che aveva il permesso e l'ambiente per vagrant, quindi non interferirà con il server master jenkins originale
    • crea la tua scatola vagabonda di base, quindi può essere riutilizzata per accelerare la tua distribuzione
  3. La maggior parte delle informazioni di installazione (pacchetti) potrebbero essere gestite da puppet (o chef) per essere caricate nella propria macchina virtuale.

Probabilmente puoi dare un'occhiata a veewee , che può creare scatole vagabonde al volo.

Ecco il Make CI più facile con Jenkins CI e Vagrant per la mia linea guida per questo suggerimento.


1
Il tuo link è purtroppo interrotto
gogo_gorilla

3
Nel caso qualcuno sia interessato al collegamento interrotto, ecco una copia di Rendi CI più facile con Jenkins CI e Vagrant
Gilberto Treviño

12

Potresti provare il plugin Vagrant per Jenkins che attualmente supporta Jenkins CD 1.532.3

Puoi vedere una demo di questo plugin in esecuzione su http://unethicalblogger.com/2012/03/13/vagrant-plugin-in-action.html


7
questo plugin non supporta Jenkins sopra 1.490, quindi questa è una grande limitazione :-(
kenyee

non supporta anche il vagabondo che corre sugli schiavi :(
Christophe Furmaniak

1
Sì, ma poi devi gestire da solo tutto il ciclo di vita della VM (crea, distruggi o no alla fine del lavoro, ...). L'idea alla base del plug-in è che il plug-in lo faccia per te e quindi puoi concentrarti sul tuo scopo principale: utilizzare una VM come contenitore isolato.
Christophe Furmaniak

2
Il plug-in citato presenta problemi, che non sono ancora stati risolti ( issues.jenkins-ci.org/browse/JENKINS-26326 ) e lo sviluppo si è interrotto un anno fa. Non lo consiglierei.
Ross Ivantsiv

1
L'esecuzione dell'istanza vagabonda su richiesta per eseguire la build sembra la cosa giusta da fare. Se questo plugin continua a non funzionare?
Atifm

1

Personalmente suggerirei di utilizzare Hashicorp Packer per creare le tue scatole Vagrant per gli sviluppatori, quindi usarlo per produrre anche un'immagine Docker o AWS o OpenStack che puoi eseguire sul tuo sistema CI. Vagrant è uno strumento fantastico, ma il sovraccarico delle VM può essere un po 'alto per un sistema CI per farle costantemente girare su e giù, soprattutto se si desidera un feedback molto veloce.

In un ex client abbiamo praticamente avviato le macchine Vagrant una volta con il sistema, quindi abbiamo eseguito le build Docker / virtualenv all'interno di quelle VM e le abbiamo periodicamente distrutte quando si verificava un aggiornamento importante o un problema con l'ambiente che non si comportava correttamente.

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


Se posso chiedere, hai eseguito jenkins come utente separato? Se è così, come sei riuscito a fornire l'accesso al vagabondo ?? Grazie
Jaswanth Manigundan

Finché vagrant è installato normalmente, viene inserito nel percorso di sistema. Le scatole stesse vengono normalmente caricate nella directory home dell'utente corrente ma è possibile sovrascrivere la home vagabonda con una variabile d'ambiente. Abbiamo combinato tutti questi, oltre a rendere il box pull con una versione specifica parte del processo di compilazione in modo che fosse memorizzato nella cache una volta e poi riutilizzato.
dragon788
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.