2016-02-15 4 views
5

La nostra organizzazione è relativamente nuova per Docker e Jenkins. Stiamo lavorando allo sviluppo della nostra pipeline CI dall'aggiornamento del codice sorgente (Java) all'applicazione in esecuzione.Il modo migliore per fare in modo che Jenkins "aggiorni" un container mobile in esecuzione quando l'immagine è stata aggiornata

Attualmente Jenkins sta utilizzando il plug-in Docker Builder e pubblicazione Cloudbees per aggiornare l'immagine dopo una build di successo. Semplicemente tira l'immagine di base (JBoss) e la aggiorna con il file WAR dell'applicazione appena creato (via Maven).

Stiamo utilizzando il passaggio di generazione "Invia comandi su SSH" a SSH nel server in cui il contenitore (attualmente in esecuzione) è attivo, arrestare il contenitore con l'ID immagine specificato e ri-tirare e successivamente eseguire il contenitore.

Tuttavia, so che ci deve essere un modo migliore, più elegante per farlo. Sorprendentemente, sto avendo problemi a trovare la documentazione su come farlo. Tutto il consiglio sarebbe apprezzato. Per favore mi faccia sapere.

risposta

1

Se si desidera utilizzare solo Docker, non c'è molto altro da fare. Usare Jenkins con Docker è già un buon passo avanti. Forse potresti docker stop anziché ssh shutdown ma questo non renderà le cose molto migliori.

Esistono strumenti come Openshift e Fabric8 che consentono di creare flussi di lavoro di CI e CD. Questo dovrebbe aiutare. Si noti, tuttavia, se si guarda più vicino a loro vedrete che molti di loro sono costruiti in cima a Kubernetes.

Se stai cercando un flusso di lavoro pronto per l'uso, prova Openshift. Dai un'occhiata al numero architecture overview. Ha una Jenkins plugin che ti semplifica la vita.

Se vuoi fare un passo avanti nello stesso tempo, crea il tuo flusso di lavoro, senza dubbio Kubernetes è la strada da percorrere. Mette solo tonnellate di facilità per costruire il tuo gruppo di contenitori senza imporvi alcun flusso di lavoro. Dai uno sguardo a this overview e allo getting started from CoreOS docs.