Prima di tutto, ad oggi, GitLab Community Edition può essere completamente interoperabile con Jenkins. Nessuna domanda.
Di seguito, do un feedback su un'esperienza di successo che combina Jenkins e GitLab CI. Discuterò anche se dovresti usare entrambi o solo uno di essi, e per quale motivo.
Spero che questo ti dia informazioni di qualità sui tuoi progetti.
Punti di forza di GitLab CI e Jenkins
GitLab CI
GitLab CI è naturalmente integrato in GitLab SCM. È possibile creare pipeline utilizzando i gitlab-ci.yml
file e manipolarli tramite un'interfaccia grafica.
Queste pipeline come codice possono ovviamente essere archiviate nella base di codice, applicando la pratica "tutto come codice" (accesso, controllo delle versioni, riproducibilità, riusabilità, ecc.).
GitLab CI è un ottimo strumento di gestione visiva:
- tutti i membri dei team (inclusi quelli non tecnici) hanno accesso rapido e semplice allo stato del ciclo di vita delle applicazioni.
- pertanto può essere utilizzato come dashboard interattivo e operativo per la gestione delle versioni.
Jenkins
Jenkins è un ottimo strumento di costruzione. La sua forza è nei suoi numerosi plugin. In particolare, ho avuto una grande fortuna nell'uso dei plugin di interfaccia tra Jenkins e altri strumenti CI o CD. Questa è sempre un'opzione migliore rispetto a riqualificare (possibilmente male) un'interfaccia di dialogo tra due componenti.
Pipeline come codice è disponibile anche tramite groovy
script.
Utilizzando GitLab CI e Jenkins insieme
All'inizio potrebbe sembrare un po 'ridondante, ma la combinazione di GitLab CI e Jenkins è piuttosto potente.
- GitLab CI orchestra condutture (catene, condutture, monitor ...) e si può beneficiare della sua interfaccia grafica integrata in GitLab
- Jenkins esegue il lavoro e facilita il dialogo con strumenti di terze parti.
Un altro vantaggio di questo design è di avere un accoppiamento libero tra gli strumenti:
- potremmo sostituire qualsiasi componente dello stabilimento di produzione senza dover rielaborare l'intero processo CI / CD
- potremmo avere un ambiente di costruzione eterogeneo, combinando (forse diversi) Jenkins, TeamCity, tu lo chiami, e avere ancora un singolo strumento di monitoraggio.
Il compromesso
Bene, ovviamente, c'è un prezzo da pagare per questo progetto: l'installazione iniziale è ingombrante e devi avere un livello minimo di comprensione di molti strumenti.
Per questo motivo, a meno che non raccomandi un simile set-up
- hai molti strumenti di terze parti da gestire. Questo è quando Jenkins è molto utile con i suoi numerosi plugin.
- devi avere a che fare con applicazioni complesse con tecnologie eterogenee, ognuna con un ambiente di build diverso e avere comunque un'interfaccia utente unificata per la gestione del ciclo di vita delle applicazioni.
Se non ti trovi in nessuna di queste situazioni, probabilmente stai meglio con solo una delle due, ma non entrambe.
Se dovessi sceglierne uno
Sia GitLab CI che Jenkins hanno pro e contro. Entrambi sono strumenti potenti. Quindi quale scegliere?
risposta 1
Scegli quello in cui il tuo team (o qualcuno vicino) ha già un certo livello di competenza.
Risposta 2
Se sei una matricola completa nelle tecnologie CI, basta sceglierne una e iniziare.
- Se stai usando GitLab e hai un talento per tutto come codice, ha senso scegliere GitLab CI.
- Se devi dialogare con molti altri strumenti CI / CD o hai assolutamente bisogno di quella GUI per creare i tuoi lavori, scegli Jenkins.
Quelli di voi che usano GitLab e non sono sicuri che continueranno a farlo, devono comunque tenere presente che, avendo scelto GitLab CI, ciò significherebbe eliminare tutti i gasdotti CI / CD.
La parola finale è: l'equilibrio si inclina un po 'verso Jenkins a causa dei suoi numerosi plugin, ma è probabile che GitLab CI colmerà rapidamente il divario.