Blog

CircleCI vs. Google Cloud Build

DEC 13, 2018

Näin valitset sinulle sopivan CI/CD-työkalun: lue blogimme CircleCI:n ja Google Cloud Buildin vertailusta

Sami Alajrami

Sami is a DevOps consultant in our Oslo office. He comes from Palestine and has a PhD in Computing Science from Newcastle University. Sami’s previous work focused on cloud-based software development, model-based engineering, and safety-critical systems. He’s also an INTJ.

Projektiisi sopivan CI/CD-työkalun valinta voi olla hankalaa. Tässä artikkelissa vertailemme kahta hallinnoitua CI/CD-palvelua: CircleCI:tä ja Google Cloud Buildia. Sami Alajrami arvioi tämän kiinnostavan CI/CD-kamppailun.

Aiemmin jatkuvan integraation käyttöönotto tiimissä edellytti CI/CD-palvelimen, kuten Jenkinsin tai TeamCityn, asentamista ja hallinnointia. Muutamassa vuodessa itse ylläpidettävien CI/CD-palvelinten hallinnan haasteet ovat johtaneet hallinnoitujen CI/CD-ratkaisujen yleistymiseen.

Hallinnoitujen CI/CD-palvelujen tarjoajat poistavat operatiivisen ylläpidon taakan, jotta tiimisi voi keskittyä kehittämäänsä ohjelmistoon. Näiden ratkaisujen ominaisuudet ja hinnoittelumallit kuitenkin vaihtelevat, eivätkä ne aina vastaa projektiesi tarpeisiin. Siksi saatat joutua käyttämään itse ylläpidettävää ratkaisua kaikissa projekteissasi tai osassa niistä. Lisäksi eri hallinnoiduilla CI/CD-palveluntarjoajilla on omat vahvuutensa ja heikkoutensa. Yhtä kaikille sopivaa ratkaisua ei ole.

Voit lukea lisää itse ylläpidettyjen ja hallinnoitujen CI/CD-ratkaisujen eroista täältä.

Vertailu

Asiakas pyysi meitä hiljattain arvioimaan kahta hallinnoitua CI/CD-palvelua: CircleCI:tä ja Google Cloud Buildia (GCB), jotta he voisivat valita tarpeisiinsa parhaiten sopivan vaihtoehdon. Tässä artikkelissa tiivistämme havaintomme.

Vertailimme palveluita rakentamalla saman asiakasprojektin molemmilla CI/CD-palveluilla ja vertaamalla niitä tämän projektin näkökulmasta. Kyseessä on avoimen lähdekoodin monorepo Kotlin -sovellus, joka on rakennettu Gradlella. Vaikka vertailu tehtiin asiakaskohtaisen projektin yhteydessä, tulokset ovat varsin yleispäteviä. Vertailimme kahta palvelua seuraavien tekijöiden perusteella:

Käyttöliittymän kypsyys

Voittaja: CircleCI

CircleCI on ollut markkinoilla jo pitkään, joten sen käyttöliittymiä on ehditty kehittää. Niiden avulla pääset helposti käsiksi buildeihin ja työnkulkuihin sekä tarkastelemaan build-tehtävien yksittäisten vaiheiden lokeja. GCB:n on panostettava enemmän käyttöliittymäänsä.

Virheenkorjaustuki

Voittaja: CircleCI

Projektin alussa työnkuluissasi ja skripteissäsi on todennäköisesti virheitä, ja ne epäonnistuvat useita kertoja ennen kuin saat ne viimeisteltyä. Tällaisissa tilanteissa työnkulkujen ja tehtävien virheenkorjausmahdollisuudet ovat ratkaisevan tärkeitä. CircleCI:ssä voit suorittaa tehtävän uudelleen SSH-yhteydellä. Voit siis muodostaa SSH-yhteyden käynnissä olevaan build-konttiin tai virtuaalikoneeseen. Lisäksi CircleCI tarjoaa paikallisen CLI-työkalun, jonka avulla voit toistaa CircleCI-ympäristön paikallisesti. Tämä on erittäin hyödyllistä virheenkorjauksessa. GCB ei tarjoa virheenkorjaustukea.

Sisäänrakennetut ilmoitukset

Voittaja: CircleCI (mutta vain niukasti!)

CircleCI voittaa tämän kategorian, koska se tukee oletuksena sähköposti-, Slack-, HipChat-, Flowdock-, Campfire- ja IRC-ilmoituksia, kun taas GCB ei tue niistä mitään. CircleCI:n ilmoitukset eivät kuitenkaan aina ole hyödyllisiä; katso esimerkiksi täältä. CircleCI on hiljattain päivittänyt ilmoituksiaan. Saatat silti joutua toteuttamaan omat mukautetut ilmoituksesi osana työnkulkujasi, mikä on mahdollista myös GCB:ssä.

Integraatiot pilvipalveluntarjoajiin

Voittaja: Google Cloud Build

CircleCI 2.0:ssa ei ole erityisiä integraatiomekanismeja tiettyihin pilvipalveluntarjoajiin. Tämä tarkoittaa, että palveluntarjoajaan on yhdistettävä tehtävistäsi samalla tavoin kuin mistä tahansa muusta koneesta. Sinun on myös annettava tarvittavat tunnistetiedot.

GCB puolestaan on osa Google Cloud Platformia (GCP), ja se voi käyttää eri GCP-palveluja ilman ylimääräisiä tunnistetietoja.

GCB voittaa kuitenkin vain joissakin tapauksissa. Jos käytät muita palveluntarjoajia tai et halua sitoutua yhteen toimittajaan, tästä GCB:n ominaisuudesta ei ole hyötyä.

Toimittajalukituksen riski

Voittaja: ei kumpikaan!

CircleCI on neutraali, sillä se toimii täsmälleen samalla tavalla kaikkien pilvipalveluntarjoajien kanssa. Google Cloud Build keskittyy selvästi – ja ymmärrettävästi – Google Cloudiin. Se tarjoaa helpon integraation muihin GCP-palveluihin, mikä voi johtaa siihen, että rakennat projektisi GCP-kohtaisten palvelujen varaan. GCP:hen sitoutuminen voi kuitenkin olla hyväksyttävää, jos palveluvalinnat ovat perusteltuja.

Deklaratiivinen konfiguraatio

Voittaja: CircleCI

CircleCI tarjoaa GCB:hen verrattuna kypsempää ja monipuolisempaa deklaratiivista työnkulkujen konfigurointia. CircleCI:ssä voit esimerkiksi määrittää suodattimia mukautetuille buildeille tietyissä tageissa tai brancheissa. GCB:ssä sama onnistuu, mutta silloin on käytettävä Triggereitä, jotka määritetään konsolin käyttöliittymässä eivätkä osana deklaratiivista konfiguraatiota. GCB:ssä on kätevä ominaisuus, jonka avulla työnkulut voi jakaa eri tiedostoihin ja liittää ne eri triggereihin. Se ei kuitenkaan riitä voittoon tässä vertailussa.

Saatavilla oleva build-infrastruktuuri

Voittaja: ei kumpikaan

CircleCI tukee kolmentyyppisiä executoreita: Docker-kontteja, virtuaalikoneita ja macOS:ää. Docker-konteille voi ostaa lisää laskentaresursseja jopa 8 vCPU:hun ja 16 Gt RAM-muistiin asti.

GCB tarjoaa executoriksi vain Docker-kontteja. Se kuitenkin varaa virtuaalikoneen, jossa kaikki build-kontit suoritetaan. Virtuaalikoneessa voi käyttää jompaakumpaa kahdesta konetyypistä (enintään 32 vCPU:ta / 28,8 Gt RAM-muistia). Kaikkien konttien ajamisen etuna samalla virtuaalikoneella on, että Google Cloud Buildissa kaikki jobit toimivat samassa Docker-verkossa ja pääsevät oletusarvoisesti käsiksi aiempien jobien artefakteihin. CircleCI:ssä artefaktit täytyy tallentaa workspaceen ja liittää niihin, joissa niitä tarvitaan. Tämä lisää rivejä CircleCI-konfiguraatioon ja voi pidentää suoritusaikaa artefaktien koosta riippuen.

Palaute GitHubiin

Voittaja: CircleCI

Buildien tulokset on tärkeää nähdä GitHub-checkeissä. CircleCI tukee tätä oletusarvoisesti. GCB julkaisi hiljattain GitHub Appin Alpha-version. Sovellus voi käynnistää buildeja ja välittää palautetta GitHubiin. Se ei kuitenkaan tällä hetkellä toimi triggerien kanssa. Tämä tarkoittaa, että siitä ei ole hyötyä, jos triggereihin on määritetty mukautettuja branch- tai tag-suodattimia. CircleCI tukee buildien ajamista vain pull requesteista. GCB ei tue forkatuista repositorioista tulevien pull requestien buildaamista.

Salaisuuksien hallinta

Voittaja: ei kumpikaan

Useimmissa projekteissa joitakin salaisuuksia täytyy välittää build-, testaus- ja deployment-jobeihin. Salaisuuksien välitys- ja hallintatapa on tärkeä, sillä et halua niiden vuotavan tai päätyvän vääriin käsiin. Kummassakin palvelussa sinun on uskottava salaisuutesi kolmannen osapuolen haltuun.

CircleCI käyttää HashiCorp Vaultia salaisuuksien salaamiseen ja tallentaa ne jobien käytettävissä oleviksi ympäristömuuttujiksi. Julkisissa repositorioissa CircleCI tekee kaikki jobilokit julkisiksi, mikä aiheuttaa riskin. Siksi jobeissa pitää varoa kirjaamasta salaisuuksia lokeihin. Lisäksi kuka tahansa GitHub-käyttäjä, jolla on repositoryn kirjoitusoikeudet, voi käynnistää uudelleenajon SSH:lla ja tulostaa kaikki ympäristömuuttujat, myös salaisuudet.

GCB käyttää Google KMS:ää salaisuuksien purkamiseen ajon aikana ja asettaa ne saataville ympäristömuuttujina. Sinun on siis luotava KMS-avain manuaalisesti ja salattava salaisuutesi sillä. Tämän jälkeen lisäät salatun salaisuuden versionhallittuun GCB-konfiguraatiotiedostoon, ja GCB purkaa sen ajon aikana. On kuitenkin hyvä huomata, että salatun salaisuuden koko on rajoitettu 2 megatavuun. Google Cloudin service account -JSON-tiedosto voi usein ylittää tämän rajan salattuna. Tällöin tiedosto on tallennettava Google-bucketiin ja haettava ajon aikana, sillä bucketeihin pääsee käsiksi ilman tunnistetietoja.

Hinnoittelu

Voittaja: Google Cloud Build

GCB tarjoaa 120 ilmaista build-minuuttia päivässä ja enintään 10 samanaikaista buildia. Tämän jälkeen oletusvirtuaalikonetyypistä veloitetaan 0,003 dollaria minuutilta (lisätietoja täältä). CircleCI tarjoaa Linux-buildeille ilmaiseksi 1 500 build-minuuttia kuukaudessa ja yhden samanaikaisen jobin. Jokaisesta lisärinnakkaiskontista veloitetaan 50 dollaria kuukaudessa. macOS-buildien hinnoittelu on erilainen (lisätietoja täältä).

Yhteenveto

On selvää, että CircleCI tarjoaa nuorempaan Google Cloud Buildiin verrattuna kypsempää ja monipuolisempaa CI/CD-palvelua. Työkalu kannattaa kuitenkin aina valita projektin erityistarpeiden perusteella. Jos käytät jo useita Google Cloudin palveluita etkä haittaa edellä mainittuja GCB:n rajoituksia, GCB on järkevä valinta. Vaikka GCB ei juuri nyt sopisi tarpeisiisi, sen kehitystä kannattaa silti seurata, vaikka edistyminen on aiemmin vaikuttanut hitaalta.

Tärkeintä on tehdä tietoon perustuva päätös. Työkalu ei ole yhtä tärkeä kuin tapa, jolla käytät sitä. Työkalua ei kannata valita ja mukauttaa työtä sen ominaisuuksien ympärille. Pyri sen sijaan saamaan työkalu vastaamaan tarpeitasi parhaiden käytäntöjen mukaisesti. Tunnista tarpeesi sekä työkalujen kompromissit ja rajoitteet. Näin voit valita juuri sinulle parhaiten sopivan työkalun.

  • Pilvi
  • CI/CD

Subscribe to our newsletter