Jenkinsin taistelu ja GitLab CI/CD

Viimeisen vuosikymmenen aikana on edistytty merkittävästi jatkuvan integroinnin (Continuous Integration, CI) ja jatkuvan käyttöönoton (Continuous Delivery, CD) työkalujen kehittämisessä. Ohjelmistokehityksen ja -toiminnan integrointiteknologioiden kehitys (Development Operations, DevOps) on johtanut CI/CD-työkalujen kysynnän nopeaan kasvuun. Olemassa olevia ratkaisuja parannetaan jatkuvasti, yritetään pysyä ajan tasalla, niistä julkaistaan ​​uusia versioita, laadunvarmistusohjelmistojen (Quality Assurance, QA) maailmaan ilmestyy jatkuvasti monia uusia tuotteita. Kun valinnanvaraa on niin paljon, oikean työkalun valitseminen ei ole helppo tehtävä.

Jenkinsin taistelu ja GitLab CI/CD

Kaikkien olemassa olevien CI/CD-työkalujen joukossa on kaksi projektia, joihin kannattaa ehdottomasti kiinnittää huomiota sellaiselle, joka etsii jotain tältä alueelta. Puhumme Jenkinsistä ja GitLab CI / CD -työkalusta, joka on osa GitLab-alustaa. Jenkinsillä on enemmän kuin 16000 tähdet GitHubissa. GitLab-arkisto osoitteessa gitlab.com sai hieman enemmän pisteitä 2000 tähdet. Jos vertaamme arkistojen suosiota, käy ilmi, että Jenkins sai 8 kertaa enemmän tähtiä kuin alusta, joka sisältää GitLab CI / CD: n. Mutta kun valitset CI / CD-työkalua, tämä ei ole kaukana ainoasta indikaattorista, johon sinun tulisi kiinnittää huomiota. On monia muita, ja tämä selittää, miksi monissa vertailuissa Jenkins ja GitLab CI / CD ovat hyvin lähellä toisiaan.

Otetaan esimerkiksi tiedot G2-alustalta, joka kerää arvosteluja monenlaisista tuotteista ja käyttäjien niille antamista arvioista. Tässä on keskimääräinen arvosana Jenkins, 288 arvostelun perusteella, on 4,3 tähteä. voi voi GitLab on 270 arvostelua, tämän työkalun keskimääräinen arvosana on 4,4 tähteä. Emme erehdy sanoessaan, että Jenkins ja GitLab CI / CD kilpailevat keskenään tasa-arvoisin ehdoin. On mielenkiintoista huomata, että Jenkins-projekti ilmestyi vuonna 2011 ja siitä lähtien se on ollut testaajien suosikkityökalu. Mutta samaan aikaan vuonna 2014 käynnistetty GitLab CI / CD -projekti on saavuttanut erittäin korkean asemansa tämän alustan tarjoamien edistyneiden ominaisuuksien ansiosta.

Jos puhumme Jenkinsin suosiosta muihin vastaaviin alustoihin verrattuna, huomaamme, että julkaisimme artikkelin, jossa vertaillaan Travis CI- ja Jenkins-alustoja, järjestimme kyselyn. Siihen osallistui 85 käyttäjää. Vastaajia pyydettiin valitsemaan CI/CD-työkalu, josta he pitävät eniten. 79 % valitsi Jenkinsin, 5 % valitsi Travis CI:n ja 16 % ilmoitti pitävänsä parempana muita työkaluja.

Jenkinsin taistelu ja GitLab CI/CD
Äänestyksen tulokset

Muiden CI/CD-työkalujen joukossa mainittiin useimmiten GitLab CI/CD.

Jos olet tosissaan DevOpsiin, sinun on valittava huolellisesti sopivat työkalut ottaen huomioon projektin erityispiirteet, sen budjetti ja muut vaatimukset. Jotta voit tehdä oikean valinnan, aiomme tarkistaa Jenkinsin ja GitLab CI/CD:n. Tämä toivottavasti auttaa sinua tekemään oikean valinnan.

Johdatus Jenkinsiin

Jenkinsin taistelu ja GitLab CI/CD
Jenkins on tunnettu, joustava CI/CD-työkalu, joka on suunniteltu automatisoimaan monia ohjelmistoprojekteihin liittyviä tehtäviä. Jenkins on kirjoitettu kokonaan Java-kielellä ja julkaistu MIT-lisenssillä. Siinä on tehokas joukko ominaisuuksia, joiden tarkoituksena on automatisoida ohjelmistojen rakentamiseen, testaamiseen, käyttöönottoon, integrointiin ja julkaisuun liittyvät tehtävät. Tätä työkalua voidaan käyttää useissa käyttöjärjestelmissä. Näitä ovat macOS, Windows ja monet Linux-jakelut, kuten OpenSUSE, Ubuntu ja Red Hat. Jenkinsille on eri käyttöjärjestelmille suunniteltuja asennuspaketteja. Tämä työkalu voidaan asentaa Dockeriin ja mihin tahansa järjestelmään, jossa on JRE (Java Runtime Environment).

Jenkins-kehittäjät ovat luoneet toisen projektin, Jenkins X, joka on suunniteltu toimimaan Kubernetes-ympäristössä. Jenkins X integroi Helmin, Jenkins CI/CD Serverin, Kubernetesin ja muita työkaluja DevOpsin parhaiden käytäntöjen mukaisten CI/CD-putkien rakentamiseen. Täällä käytetään esimerkiksi GitOpsia.

Jenkinsin etujen joukkoon voidaan lisätä se tosiasia, että sen käsikirjoitukset ovat erittäin hyvin jäsenneltyjä, ymmärrettäviä ja helppolukuisia. Jenkins-tiimi on luonut noin 1000 laajennusta, joiden tarkoituksena on järjestää Jenkinsin vuorovaikutus monenlaisten teknologioiden kanssa. Skriptit voivat käyttää todennusjärjestelmiä, jotka mahdollistavat esimerkiksi yhteyden muodostamisen erilaisiin suljettuihin järjestelmiin.

Jenkins-putkilinjan käytön aikana voit seurata, mitä kussakin vaiheessa tapahtuu, onko tietyt työvaiheet suoritettu onnistuneesti vai ei. Voit katsoa kaiken tämän kuitenkin ilman tiettyä graafista käyttöliittymää, vaan käyttämällä päätelaitteen ominaisuuksia.

Jenkinsin ominaisuudet

Jenkinsin tunnettuja ominaisuuksia ovat asennuksen helppous, eri toimintojen korkea automatisointi ja erinomainen dokumentointi. Jos puhumme DevOps-tehtävien ratkaisemisesta, niin tässä Jenkinsiä pidetään erittäin luotettavana työkaluna, jonka avulla ei yleensä ole järkevää seurata tarkasti koko projektin käsittelyprosessia. Näin ei ole muiden CI/CD-työkalujen kohdalla. Puhutaanpa joistakin Jenkinsin tärkeimmistä ominaisuuksista.

▍1. Ilmainen, avoimen lähdekoodin, usean alustan tuki

Jenkins voi toimia macOS-, Windows- ja Linux-alustoilla. Se voi toimia myös Docker-ympäristössä, jonka avulla voit järjestää automatisoitujen tehtävien yhtenäisen ja nopean suorituksen. Tämä työkalu voi toimia myös servletinä Java-yhteensopivissa säilöissä, kuten Apache Tomcat ja GlassFish. Jenkinsin asennus laadukkaasti dokumentoitu.

▍2. Kehitetty laajennusekosysteemi

Jenkinsin laajennusekosysteemi näyttää olevan paljon kypsempi kuin muiden CI/CD-työkalujen laajennusekosysteemit. Jenkinsille on tällä hetkellä yli 1500 laajennusta. Nämä laajennukset on tarkoitettu monenlaisten tehtävien ratkaisemiseen, ja niiden avulla voit automatisoida erilaisia ​​​​projekteja. Valittavana on runsaasti ilmaisia ​​laajennuksia, joten jos käytät Jenkinsiä, sinun ei tarvitse ostaa kalliita maksullisia laajennuksia. Mahdollisuus on olemassa liittäminen Jenkins monilla DevOps-työkaluilla.

▍3. Helppo asennus ja asennus

Jenkins on melko helppo asentaa ja määrittää. Samaan aikaan järjestelmän päivitysprosessi on myös erittäin kätevä. Tässä on jälleen syytä mainita dokumentaation laatu, koska siitä löydät vastauksia moniin Jenkinsin asentamiseen ja konfigurointiin liittyviin kysymyksiin.

▍4. Ystävällinen yhteisö

Kuten jo mainittiin, Jenkins on avoimen lähdekoodin projekti, jonka ekosysteemi sisältää valtavan määrän laajennuksia. Jenkinsin ympärille on kehittynyt suuri käyttäjien ja kehittäjien yhteisö auttamaan projektin kehittämisessä. Yhteisö on yksi Jenkinsin kehitystä ohjaavista tekijöistä.

▍5. REST API:n saatavuus

Jenkinsin kanssa työskennellessäsi voit käyttää REST API:ta, joka laajentaa järjestelmän ominaisuuksia. Sovellusliittymä järjestelmän etäkäyttöä varten on esitetty kolmessa versiossa: XML, JSON JSONP-tuella, Python. Täällä Dokumentaatiosivu, joka sisältää tietoja Jenkins REST API:n kanssa työskentelystä.

▍6. Tuki tehtävien rinnakkaiseen suorittamiseen

Jenkins tukee DevOps-tehtävien rinnastamista. Se voidaan helposti integroida asiaankuuluviin työkaluihin ja vastaanottaa ilmoituksia tehtävien tuloksista. Kooditestausta voidaan nopeuttaa järjestämällä projektin rinnakkaisrakennus eri virtuaalikoneita käyttäen.

▍7. Tuki työskentelyyn hajautetuissa ympäristöissä

Jenkinsin avulla voit järjestää hajautettuja koontiversioita useiden tietokoneiden avulla. Tämä ominaisuus soveltuu suuriin projekteihin ja käyttää työkaaviota, jonka mukaan on yksi Jenkins-pääpalvelin ja useita orjakoneita. Orjakoneita voidaan käyttää myös tilanteissa, joissa on tarpeen järjestää projektin testaus eri ympäristöissä. Nämä ominaisuudet erottavat Jenkinsin muista vastaavista projekteista.

Johdatus GitLabiin

Jenkinsin taistelu ja GitLab CI/CD
GitLab CI / CD voidaan kutsua yhdeksi uusimmista ja rakastetuimmista DevOps-työkaluista. Tämä ilmainen avoimen lähdekoodin työkalu on sisäänrakennettu GitLab-versionhallintajärjestelmään. GitLab-alustalla on yhteisöversio, se tukee arkiston hallintaa, ongelmanseurantatyökaluja, koodintarkistusorganisaatiota, dokumentaatiosuuntautuneita mekanismeja. Yritykset voivat asentaa GitLabin paikallisesti yhdistämällä sen Active Directoryyn ja LDAP-palvelimiin turvallista käyttäjien valtuutusta ja todennusta varten.

Täällä Opetusvideo, jonka avulla opit luomaan CI/CD-putkistoja GitLabin CI/CD-ominaisuuksien avulla.

GitLab CI/CD julkaistiin alun perin erillisenä projektina, mutta vuonna 2015 tämä työkalusarja integroitiin GitLab 8.0:aan. Yksi GitLab CI/CD -palvelin voi tukea yli 25000 XNUMX käyttäjää. Tällaisten palvelimien perusteella voit luoda järjestelmiä, jotka ovat erittäin saatavilla.

GitLab CI/CD ja pääprojekti GitLab on kirjoitettu Ruby and Go -kielellä. Ne julkaistaan ​​MIT-lisenssillä. GitLab CI/CD tukee CI/CD-työkalujen tavanomaisten ominaisuuksien lisäksi myös lisäominaisuuksia, jotka liittyvät esimerkiksi työaikataulutukseen.

GitLab CI/CD:n integrointi projektiin on erittäin helppoa. GitLab CI/CD:tä käytettäessä projektikoodin käsittelyprosessi on jaettu vaiheisiin, joista jokainen voi koostua useista tietyssä järjestyksessä suoritettavista tehtävistä. Tehtäviä voidaan hienosäätää.

Tehtävät voivat toimia rinnakkain. Kun vaiheiden ja tehtävien järjestys on määritetty, CI/CD-liukuhihna on valmis käytettäväksi. Voit seurata sen edistymistä seuraamalla tehtävien tilaa. Tämän seurauksena GitLab CI / CD:n käyttö on erittäin kätevää, ehkä kätevämpää kuin muut vastaavat työkalut.

GitLab CI/CD:n ja GitLabin ominaisuudet

GitLab CI/CD on yksi suosituimmista DevOps-työkaluista. Projekti erottuu laadukkaasta dokumentaatiosta, sen ominaisuudet ovat helppoja ja käteviä käyttää. Jos et ole vielä tutustunut GitLab CI/CD:hen, seuraava luettelo tämän työkalun ominaisuuksista antaa sinulle yleiskuvan siitä, mitä voit odottaa siltä. On huomattava, että monet näistä ominaisuuksista liittyvät itse GitLab-alustaan, johon GitLab CI / CD on integroitu.

▍1. Suosio

GitLab CI/CD on suhteellisen uusi työkalu, joka on löytänyt laajan käytön. GitLab CI/CD:stä on vähitellen tullut erittäin suosittu CI/CD-työkalu, jota käytetään automaattiseen testaukseen ja ohjelmistojen käyttöönottoon. Sen asentaminen on helppoa. Se on myös ilmainen GitLab-alustaan ​​sisäänrakennettu CI/CD-työkalu.

▍2. Tuki GitLab Pagesille ja Jekyllille

Jekyll on staattinen sivustogeneraattori, jota voidaan käyttää GitLab Pages -järjestelmässä sivustojen luomiseen GitLab-tietovarastoihin perustuen. Järjestelmä ottaa lähdemateriaalit ja luo niiden pohjalta valmiin staattisen sivuston. Voit hallita tällaisten sivustojen ulkoasua ja ominaisuuksia muokkaamalla tiedostoa _config.yml, jota käyttää Jekyll.

▍3. Projektisuunnittelun valmiudet

Hankkeiden vaiheiden suunnittelukyvyn ansiosta ongelmien ja niiden ryhmien jäljityksen mukavuus lisääntyy. Tämän avulla voit hallita projektityön organisointia, suunnitella niiden toteuttamista tiettynä päivänä.

▍4. CI-juoksien automaattinen skaalaus

Tiettyjen tehtävien suorittamisesta vastaavien juoksijoiden automaattisen skaalauksen ansiosta voit säästää paljon palvelinkapasiteetin vuokrauskustannuksissa. Tämä on erittäin tärkeää, varsinkin kun on kyse ympäristöistä, joissa projekteja testataan rinnakkain. Lisäksi tämä on tärkeää suurille projekteille, jotka koostuvat useista arkistoista.

▍5. Ongelmanseurantatyökalut

GitLabin tehokkaat ongelmanseurantaominaisuudet ovat saaneet monia avoimen lähdekoodin projekteja käyttämään alustaa. GitLab CI/CD mahdollistaa eri koodihaarojen rinnakkaistestauksen. Testitulokset analysoidaan kätevästi järjestelmän käyttöliittymässä. Tämä erottaa GitLab CI/CD:n Jenkinsistä.

▍6. Arkistoihin pääsyn rajoittaminen

GitLab-alusta tukee arkistoihin pääsyn rajoittamista. Esimerkiksi niille, jotka tekevät yhteistyötä projektissa arkistossa, voidaan määrittää heidän rooliinsa vastaavat käyttöoikeudet. Tämä pätee erityisesti yritysprojekteihin.

▍7. Aktiivinen yhteisön tuki

GitLabin ympärille on kehittynyt aktiivinen yhteisö, joka osallistuu tämän alustan ja sen työkalujen, erityisesti GitLab CI / CD:n, kehittämiseen. GitLab CI/CD:n ja GitLabin syvä integrointi muun muassa helpottaa vastausten löytämistä GitLab CI/CD:n kanssa työskennellessä herääviin kysymyksiin.

▍8. Tuki erilaisille versionhallintajärjestelmille

GitLab CI/CD on järjestelmä, joka voi toimia muutakin kuin vain GitLab-tietovarastoissa isännöidyn koodin kanssa. Esimerkiksi koodi voidaan tallentaa GitHub-arkistoon ja CI/CD-putki voidaan järjestää GitLabin pohjalta GitLab CI / CD:n avulla.

Jenkinsin ja GitLab CI/CD:n vertailu

Jenkins ja GitLab CI/CD ovat erittäin hyviä työkaluja, jotka molemmat pystyvät saamaan CI/CD-putkilinjan toimimaan kitkattomasti. Mutta jos niitä verrataan, käy ilmi, että vaikka ne ovat monella tapaa samankaltaisia, ne eroavat toisistaan ​​jollakin tavalla.

Karakterisointi
Jenkins
GitLab CI / CD

Avoin lähde tai suljettu lähde
avoin lähdekoodi
avoin lähdekoodi

Asennus
Vaaditaan.
Ei vaadita, koska tämä on GitLab-alustan sisäänrakennettu ominaisuus.

Ainutlaatuiset ominaisuudet
Plugin tuki.
Syvä integrointi versionhallintajärjestelmään.

Tukea
Puuttuu.
Saatavilla.

Asennus ja konfigurointi
Vaikeudet eivät aiheuta
Vaikeudet eivät aiheuta

Järjestelmän omatoiminen käyttöönotto
Tämä on ainoa tapa käyttää järjestelmää.
Tuettu.

CI/CD-putkien luominen
Tuettu käyttämällä Jenkins Pipelinea.
Tuettu.

Sovelluksen suorituskyvyn seuranta
Puuttuu.
Saatavilla.

ekosysteemi
Laajennuksia on yli 1000.
Järjestelmää kehitetään GitLabissa.

API
Tukee kehittynyttä API-järjestelmää.
Tarjoaa APIn syvempään integrointiin projekteihin.

JavaScript-tuki
Saatavilla.
Saatavilla.

Integrointi muihin työkaluihin
Integrointi muihin työkaluihin ja alustoihin on tuettu (Slack, GitHub).
Monet työkalut integrointiin kolmannen osapuolen järjestelmiin, erityisesti - GitHubin ja Kubernetesin kanssa.

Koodin laadunvalvonta
Tuettu - käyttämällä SonarQube-laajennusta ja muita laajennuksia.
Tuettu.

Erot Jenkinsin ja GitLab CI/CD:n välillä

Kun on kuvattu ja vertailtu Jenkinsiä ja GitLab CI/CD:tä, keskitytään näiden DevOps-työkalujen välisiin eroihin. Näiden erojen tunteminen auttaa sinua ymmärtämään niitä, jotka pitävät jompaakumpaa näistä työkaluista toistensa sijaan.

  • GitLab CI/CD voi hallita täysin Git-varastoja. Puhumme arkiston haarojen hallinnasta ja joistakin muista ominaisuuksista. Mutta vaikka Jenkins voi työskennellä arkistojen kanssa, se ei anna niitä samalla tasolla kuin GitLab CI / CD.
  • Jenkins on ilmainen avoimen lähdekoodin projekti. Sen valitseja ottaa sen käyttöön itsenäisesti. Ja GitLab CI / CD sisältyy GitLab-alustaan, tämä on avaimet käteen -ratkaisu.
  • GitLab CI/CD tukee edistyneitä tehtävänhallintatyökaluja, jotka toimivat projektitasolla. Tämä Jenkinsin puoli on vähemmän kehittynyt.

Jenkins ja GitLab CI/CD: vahvuudet ja heikkoudet

Nyt sinulla on käsitys Jenkinsistä ja GitLab CI/CD:stä. Katsotaanpa nyt niiden vahvuuksia ja heikkouksia, jotta tutustuisit näihin työkaluihin entistä paremmin. Oletamme, että olet jo päättänyt, minkä työkalun tarvitset. Toivottavasti tämän osion avulla voit testata itseäsi.

▍Jenkinsin vahvuudet

  • Suuri määrä laajennuksia.
  • Täysi hallinta työkalun asennuksesta.
  • Yksinkertainen juoksijoiden virheenkorjaus.
  • Helppo solmun asennus.
  • Helppo koodin käyttöönotto.
  • Erittäin hyvä tunnistetietojen hallintajärjestelmä.
  • Joustavuutta ja monipuolisuutta.
  • Tuki eri ohjelmointikielille.
  • Järjestelmä on ymmärrettävä intuitiivisella tasolla.

▍Jenkinsin heikkoudet

  • Lisäosien käyttö voi olla hankalaa.
  • Kun Jenkinsiä käytetään pienissä projekteissa, sen itse määrittämiseen tarvittava aika voi olla kohtuuttoman pitkä.
  • Yleisten analyyttisten tietojen puute CI/CD-ketjuista.

▍GitLab CI/CD:n vahvuudet

  • Hyvä integraatio Dockerin kanssa.
  • Yksinkertainen juoksijoiden skaalaus.
  • CI/CD-liukuhihnan vaiheisiin kuuluvien tehtävien rinnakkainen suoritus.
  • Ohjatun asyklisen graafimallin käyttäminen tehtäväsuhteita määritettäessä.
  • Korkea skaalautuvuus, koska juoksuja voidaan suorittaa rinnakkain.
  • Tehtävien lisäämisen helppous.
  • Yksinkertainen konfliktien ratkaisu.
  • Luotettava turvajärjestelmä.

▍GitLab CI/CD:n heikkoudet

  • Jokaista tehtävää varten sinun on kuvattava ja lähetettävä / ladattava esineitä.
  • Et voi testata haarojen yhdistämisen tuloksia ennen kuin ne on yhdistetty.
  • CI/CD-liukuhihnan vaiheita kuvattaessa ei ole vielä mahdollista erottaa niistä yksittäisiä vaiheita.

Tulokset

Sekä Jenkinsillä että GitLab CI/CD:llä on vahvuuksia ja heikkouksia. Vastaus kysymykseen siitä, mitä valita, riippuu tietyn projektin tarpeista ja ominaisuuksista. Jokaisella tänään arvioidulla CI/CD-työkalulla on tiettyjä ominaisuuksia, vaikka nämä työkalut luotiin ratkaisemaan sama ongelma. Samaan aikaan Jenkins on itsenäinen työkalu, ja GitLab CI / CD on osa alustaa, joka on suunniteltu yhteistyöhön koodin parissa.

CI / CD-järjestelmää valittaessa kannattaa sen ominaisuuksien lisäksi ottaa huomioon siihen mahdollisesti liittyvät kustannukset ja mitä tarkalleen ottaen projektia tukevat DevOps-insinöörit ovat tottuneet työskentelemään.

Mitä CI/CD-työkaluja käytät?

Jenkinsin taistelu ja GitLab CI/CD

Jenkinsin taistelu ja GitLab CI/CD

Lähde: will.com

Lisää kommentti