In l'ultima dicada, avanzati significativi sò stati fatti in u sviluppu di arnesi per l'integrazione cuntinuu (Integrazione Continua, CI) è l'implementazione cuntinua (Consegna Continua, CD). U sviluppu di tecnulugia per integrà u sviluppu è u funziunamentu di u software (Operazioni di Sviluppu, DevOps) hà purtatu à un rapidu aumentu di a dumanda di strumenti CI / CD. Soluzioni esistenti sò constantemente migliurate, cercandu di seguità i tempi, i so novi versioni sò liberati, in u mondu di u software di assicuranza di qualità (Assicuranza di Qualità, QA), parechji prudutti novi sò sempre apparsu. Cù una tale ricchezza di scelta, sceglie u strumentu ghjustu ùn hè micca un compitu faciule.
Trà tutti l'arnesi CI / CD esistenti, ci sò dui prughjetti chì valenu a pena attente à qualchissia chì cerca qualcosa da questa zona. Parlemu di Jenkins è di l'utillita GitLab CI / CD, chì face parte di a piattaforma GitLab. Jenkins hà più di
Pigliate, per esempiu, i dati da a piattaforma G2, chì accumula recensioni di una larga varietà di prudutti è e valutazioni chì l'utilizatori li dani. Eccu a valutazione media
Se parlemu di a popularità di Jenkins in paragunà cù altre plataforme simili, avemu nutatu chì noi, avè publicatu un articulu paragunendu i plataformi Travis CI è Jenkins, organizemu una indagine. 85 utilizatori anu participatu à questu. I rispondenti sò stati dumandati à sceglie u strumentu CI/CD chì li piace u più. U 79% hà sceltu Jenkins, u 5% hà sceltu Travis CI, è u 16% hà indicatu chì preferanu altri strumenti.
I risultati di u sondaghju
Frà altri strumenti CI/CD, GitLab CI/CD hè statu citatu più spessu.
Sè vo site seriu nantu à DevOps, allora avete bisognu di selezziunà currettamente l'arnesi apprupriati, tenendu in contu e specificità di u prugettu, u so budgetu è altri esigenze. Per aiutà à fà a scelta bona, andemu à rivisione Jenkins è GitLab CI/CD. Spergu chì questu vi aiuterà à fà a scelta bona.
Introduzione à Jenkins
I sviluppatori di Jenkins anu creatu un altru prughjettu, Jenkins X, chì hè pensatu per travaglià in un ambiente Kubernetes. Jenkins X integra Helm, u servitore Jenkins CI/CD, Kubernetes, è altri strumenti per custruisce pipeline CI/CD chì seguitanu e migliori pratiche DevOps. Per esempiu, GitOps hè utilizatu quì.
Un pò aghjunghje à u tesoru di i vantaghji di Jenkins u fattu chì i so scripts sò assai ben strutturati, cumprendi, è faciuli di leghje. A squadra di Jenkins hà creatu circa 1000 plugins chì sò destinati à urganizà l'interazzione di Jenkins cù una larga varietà di tecnulugia. I scripts ponu utilizà sistemi di autentificazione, chì, per esempiu, vi permette di cunnette cù diversi sistemi chjusi.
Duranti u funziunamentu di u pipeline Jenkins, pudete osservà ciò chì succede à ogni passu, se certi fasi di u travagliu sò stati cumpleti cù successu o micca. Pudete vede tuttu questu, però, senza aduprà una certa interfaccia grafica, ma cù e capacità di u terminal.
Caratteristiche di Jenkins
Trà e caratteristiche ben cunnisciute di Jenkins sò facilità di setup, un altu livellu di automatizazione di diverse operazioni, è una documentazione eccellente. Se parlemu di risolve i travaglii di DevOps, allora Jenkins hè cunsideratu un strumentu assai affidabile, cù quale, in regula, ùn hà micca sensu di seguità attentamente tuttu u prucessu di prucessu di prughjettu. Questu ùn hè micca u casu cù l'altri strumenti CI / CD. Parlemu di alcune di e caratteristiche più impurtanti di Jenkins.
▍1. Supportu gratuitu, open source, multipiattaforma
Jenkins pò eseguisce nantu à e plataforme macOS, Windows è Linux. Puderà ancu funziunà in un ambiente Docker, chì vi permette di urganizà l'esekzione uniforme è rapida di i travaglii automatizati. Stu strumentu pò ancu esse esecutatu cum'è un servlet in cuntenituri attivati in Java cum'è Apache Tomcat è GlassFish. Installazione di Jenkins qualitativamente
▍2. Ecosistema di plugins sviluppatu
L'ecosistema di plugin Jenkins pare chì hè assai più maturu chì l'ecosistema di plugin di altri strumenti CI / CD. Ci sò attualmente più di 1500 plugins per Jenkins. Questi plugins sò destinati à risolve una larga gamma di tarei, cù u so aiutu pudete automatizà una varietà di prughjetti. A ricchezza di plugins gratuiti per sceglie significa chì sè vo site cù Jenkins, ùn avete micca bisognu di cumprà plugins pagati caru. Ci hè una pussibilità
▍3. Installazione è cunfigurazione faciule
Jenkins hè abbastanza faciule da stallà è cunfigurà. À u listessu tempu, u prucessu di aghjurnamentu di u sistema hè dinù assai còmuda. Quì, dinò, vale a pena menzionate a qualità di a ducumentazione, postu chì in questu pudete truvà risposte à una varietà di dumande riguardanti l'installazione è a cunfigurazione di Jenkins.
▍4. Cumunità amichevule
Comu digià dettu, Jenkins hè un prughjettu open source, l'ecosistema di quale include un gran numaru di plugins. Una grande cumunità di utilizatori è sviluppatori hà sviluppatu intornu à Jenkins per aiutà à sviluppà u prugettu. A cumunità hè unu di i fatturi chì guidanu u sviluppu di Jenkins.
▍5. Disponibilità di l'API REST
Mentre travaglia cù Jenkins, pudete aduprà l'API REST, chì espansione e capacità di u sistema. L'API per l'accessu remoto à u sistema hè presentata in trè versioni: XML, JSON cù supportu JSONP, Python.
▍6. Supportu per l'esekzione parallela di i travaglii
Jenkins supporta a parallelizazione di e attività DevOps. Pò esse facilmente integratu cù e strumenti pertinenti è riceve notificazioni nantu à i risultati di i travaglii. A prova di codice pò esse accelerata urganizendu una custruzione parallela di u prugettu utilizendu diverse macchine virtuali.
▍7. Supportu per u travagliu in ambienti distribuiti
Jenkins vi permette di urganizà custruzzioni distribuite cù parechje computer. Questa funzione hè applicabile in grandi prughjetti è usa un schema di travagliu, secondu chì ci hè un servitore Jenkins maestru è parechje macchine slave. Macchine slave ponu ancu esse aduprate in situazioni induve hè necessariu urganizà a prova di un prughjettu in diverse ambienti. Queste caratteristiche distinguenu Jenkins da altri prughjetti simili.
Introduzione à GitLab
GitLab CI/CD hè stata inizialmente liberata cum'è un prughjettu standalone, ma in u 2015 stu settore di strumenti hè stata integrata in GitLab 8.0. Un solu servitore GitLab CI/CD pò sustene più di 25000 XNUMX utilizatori. Basatu nantu à tali servitori, pudete creà sistemi chì sò assai dispunibili.
GitLab CI/CD è u prughjettu principale GitLab sò scritti in Ruby and Go. Sò liberati sottu a licenza MIT. GitLab CI/CD, in più di e funzioni abituale di l'utili CI/CD, sustene ancu e funzioni supplementari ligati, per esempiu, à a pianificazione di u travagliu.
L'integrazione di GitLab CI/CD in un prughjettu hè assai faciule. Quandu si usa GitLab CI/CD, u prucessu di trasfurmazioni di u codice di u prughjettu hè divisu in tappe, ognuna di e quali pò esse cumpostu di parechje attività realizate in un certu ordine. I travaglii ponu esse fine-tuned.
I travaglii ponu esse in parallelu. Dopu avè stabilitu a sequenza di tappe è tarei, a pipeline CI / CD hè pronta per andà. Pudete monitorà u so prugressu monitorendu u statutu di e attività. In u risultatu, l'usu di GitLab CI / CD hè assai còmuda, forse più còmuda di l'altri strumenti simili.
Funzioni di GitLab CI/CD è GitLab
GitLab CI/CD hè unu di i strumenti DevOps più populari. U prughjettu hè distinatu da una documentazione d'alta qualità, e so funziunalità sò faciuli è convenienti à aduprà. Se ùn site micca familiarizatu cù GitLab CI/CD, a seguente lista di e funzioni di sta strumentu vi darà una idea generale di ciò chì pudete aspittà da ellu. Hè da nutà chì assai di sti funziunalità sò in relazione cù a piattaforma GitLab stessu, in quale GitLab CI / CD hè integratu.
▍1. Popularità
GitLab CI/CD hè un strumentu relativamente novu chì hà trovu un usu generalizatu. GitLab CI/CD hè diventatu lentamente un strumentu CI/CD assai populari utilizatu per teste automatizati è implementazione di software. Hè simplice di stallà. Hè ancu un strumentu CI / CD gratuitu integratu in a piattaforma GitLab.
▍2. Supportu per e Pagine GitLab è Jekyll
Jekyll hè un generatore di situ staticu chì pò esse usatu in u sistema di Pagine GitLab per creà siti basati in repositori GitLab. U sistema piglia i materiali fonte è genera un situ staticu prontu basatu annantu à elli. Pudete cuntrullà l'apparenza è e caratteristiche di tali siti editendu u schedariu _config.yml
, usatu da Jekyll.
▍3. Capacità di pianificazione di prughjettu
Grazie à a capacità di pianificà e tappe di prughjetti, a cunvenzione di i prublemi di seguimentu è i so gruppi aumenta. Questu permette di gestisce l'urganizazione di u travagliu nantu à i prughjetti, pianificà a so implementazione in una data specifica.
▍4. Scala automatica di i corridori CI
Grazie à a scala automatica di i corridori rispunsevuli di eseguisce funzioni specifiche, pudete risparmià assai in u costu di l'affittu di capacità di u servitore. Questu hè assai impurtante, soprattuttu quandu si tratta di ambienti induve i prughjetti sò pruvati in parallelu. Inoltre, questu hè impurtante per i grandi prughjetti custituiti da parechji repositori.
▍5. Issue strumenti di seguimentu
E putenti capacità di seguimentu di prublemi di GitLab anu purtatu parechji prughjetti open source à aduprà a piattaforma. GitLab CI/CD permette teste parallele di diverse branche di codice. I risultati di a prova sò convenientemente analizati in l'interfaccia di u sistema. Questu distingue GitLab CI/CD da Jenkins.
▍6. Restrizzione di l'accessu à i repositori
A piattaforma GitLab supporta a restrizzione di l'accessu à i repositori. Per esempiu, quelli chì cullabureghjanu in un prughjettu in un repository ponu esse attribuiti permessi adatti à i so roli. Questu hè soprattuttu veru per i prughjetti corporativi.
▍7. Supportu attivu di a cumunità
Una cumunità attiva hà sviluppatu intornu à GitLab, chì cuntribuisce à u sviluppu di sta piattaforma è i so arnesi, in particulare, GitLab CI / CD. L'integrazione prufonda di GitLab CI/CD è GitLab, tra l'altri cose, facilita à truvà risposte à e dumande chì si sviluppanu quandu si travaglia cù GitLab CI/CD.
▍8. Supportu per diversi sistemi di cuntrollu di versione
GitLab CI/CD hè un sistema chì pò travaglià cù più di u codice allughjatu in i repositori GitLab. Per esempiu, u codice pò esse guardatu in un repository GitHub, è u pipeline CI / CD pò esse urganizatu nantu à a basa di GitLab cù GitLab CI / CD.
Comparazione di Jenkins è GitLab CI/CD
Jenkins è GitLab CI/CD sò assai boni strumenti, chì sò tutti dui capaci di fà chì u pipeline CI/CD scorra bè. Ma s'ellu si paragunate, si trova chì, ancu s'elli sò simili in parechje manere, si sferiscenu in certi modi.
Caratteristiche
Jenkins
GitLab CI/CD
Fonte aperta o fonte chjusa
fonte aperta
fonte aperta
rimarchevuli
Ubligatoriu.
Ùn hè micca necessariu perchè questu hè una funzione integrata di a piattaforma GitLab.
Funzioni uniche
Supportu di plugin.
Integrazione profonda in u sistema di cuntrollu di versione.
sustegnu
Ùn dispunibili.
Disponibile.
Stallazione è cunfigurazione
Difficultà ùn causanu micca
Difficultà ùn causanu micca
Auto-implementazione di u sistema
Questu hè l'unicu modu per utilizà u sistema.
Supportatu.
Creazione di pipeline CI/CD
Supportatu, utilizendu Jenkins Pipeline.
Supportatu.
Monitoraghju di u rendiment di l'applicazione
Ùn dispunibili.
Disponibile.
Ecosistema
Ci sò più di 1000 plugins.
U sistema hè sviluppatu in GitLab.
API
Supporta un sistema API avanzatu.
Offre una API per una integrazione più profonda in i prughjetti.
Supportu JavaScript
Disponibile.
Disponibile.
Integrazione cù altri strumenti
L'integrazione cù altre arnesi è piattaforme hè supportata (Slack, GitHub).
Parechji strumenti per integrazione cù sistemi di terzu, in particulare - cù GitHub è Kubernetes.
cuntrollu di qualità codice
Supportatu - utilizendu u plugin SonarQube è altri plugins.
Supportatu.
Differenze trà Jenkins è GitLab CI/CD
Dopu avè descrittu è paragunatu Jenkins è GitLab CI/CD, focalizemu nantu à e differenze trà questi strumenti DevOps. Sapendu sti diffirenzi vi aiuterà à capisce quelli chì preferisce unu di sti arnesi sopra à l'altru.
- GitLab CI/CD pò cuntrullà cumplettamente i repositori Git. Parlemu di a gestione di rami di repository è di alcune altre funziunalità. Ma Jenkins, ancu s'ellu pò travaglià cù repository, ùn dà micca u listessu livellu di cuntrollu nantu à elli cum'è GitLab CI / CD.
- Jenkins hè un prughjettu open source gratuitu. Quellu chì a sceglie u dispiega in modu indipendenti. È GitLab CI / CD hè inclusu in a piattaforma GitLab, questa hè una soluzione chiavi in mano.
- GitLab CI/CD supporta strumenti avanzati di gestione di u travagliu chì travaglianu à u livellu di u prugettu. Stu latu di Jenkins hè menu sviluppatu.
Jenkins è GitLab CI/CD: punti di forza è debule
Avà avete qualchì idea di Jenkins è GitLab CI/CD. Avà, per avè ancu megliu cunniscenza di sti arnesi, fighjemu un ochju à i so punti di forza è debule. Assumimu chì avete digià decisu quale strumentu avete bisognu. Spergu chì sta sezione vi permetterà di pruvà sè stessu.
▍I punti di forza di Jenkins
- Un gran numaru di plugins.
- Cuntrolu cumpletu nantu à a stallazione di l'arnesi.
- Debugging simplice di i corridori.
- Configurazione di nodi faciule.
- Implementazione di codice faciule.
- Moltu bonu sistema di gestione di credenziali.
- Flessibilità è versatilità.
- Supportu per diverse lingue di prugrammazione.
- U sistema hè comprensibile à un livellu intuitivu.
▍Debulezza di Jenkins
- I plugins ponu esse difficili d'utilizà.
- Quandu si usa Jenkins in picculi prughjetti, u tempu necessariu per cunfigurà sè stessu pò esse irragionevolmente grande.
- Mancanza di infurmazione generale analitica nantu à e catene CI/CD.
▍I punti di forza di GitLab CI/CD
- Bona integrazione cù Docker.
- Scala semplice di i corridori.
- Esecuzione parallela di i travaglii chì facenu parte di e tappe di u pipeline CI/CD.
- Utilizà u mudellu di gràficu aciclicu direttu quandu stabilisce relazioni di compiti.
- Altu livellu di scalabilità per via di a pussibilità di esecuzione parallela di corridori.
- Facilità di aghjunghje attività.
- Risoluzione simplice di cunflittu.
- Sistema di sicurezza affidabile.
▍Debulezza di GitLab CI/CD
- Per ogni compitu, avete bisognu di descriverà è caricate / scaricate artefatti.
- Ùn pudete micca pruvà i risultati di a fusione di rami prima ch'elli sò veramente uniti.
- Quandu si descrizanu e tappe di u pipeline CI / CD, ùn hè micca ancu pussibule di sceltu e tappe individuali in elli.
Risultati
Tanti Jenkins è GitLab CI / CD anu punti di forza è debule. A risposta à a quistione di ciò chì sceglie dipende di i bisogni è e caratteristiche di un prughjettu particulari. Ciascuna di l'arnesi CI / CD rivista oghje hà certe caratteristiche, ancu s'è sti arnesi sò stati creati per risolve u stessu prublema. À u listessu tempu, Jenkins hè un strumentu autonomu, è GitLab CI / CD hè parte di una piattaforma pensata per a cullaburazione nantu à u codice.
Quandu sceglite un sistema CI / CD, in più di e so capacità, vale a pena piglià in contu i costi chì ponu esse assuciati cun ellu, è ciò chì esattamente l'ingegneri DevOps chì sustenenu u prugettu sò abituati à travaglià.
Chì strumenti CI/CD aduprate?
Source: www.habr.com