Ohjelmointi

CI / CD palveluna: 10 työkalua jatkuvaan integrointiin ja pilvipalveluun

Pilvipalvelu ja jatkuva integraatio (CI) ovat luonnollinen ottelu. Vaikka pilvi vapauttaa meidät fyysisten palvelimien asennuksen ja ylläpidon tuskista, jatkuva integrointi automatisoi suuren osan koodin rakentamisen, testaamisen ja käyttöönoton tuskasta. Jos molemmat pyrkivät ottamaan työn pois kehitystiimien harteilta, on järkevää vain yhdistää ne ja eliminoida vielä enemmän roskaa yhdellä askeleella.

Jatkuvia integraatiopalveluja on paljon, ja ne kaikki tekevät paljon samaa, ainakin abstraktissa mielessä. Ne alkavat luettelosta tehtävistä, kuten kokoamisesta tai testaamisesta, jotka on suoritettava ennen kuin maailma voi arvostaa uuden ohjelmiston neroa. Kun annat koodirivit, työkalut alkavat toimia tarkistuslistan läpi, kunnes ne törmäävät estoon. Jos ei ole esteitä, kaikki ovat onnellisia.

Kuka tahansa voi käyttää jatkuvaa integraatiota mihin tahansa ohjelmistokehitysprojektiin, mutta suurimmat edut nauttivat joukkueista, mieluiten suurista ryhmistä, jotka työskentelevät samojen, lukittavien koodilohkojen parissa. Jatkuvan integraation perusteellisimmat toteutukset rakentavat ja rakentavat koodin uudelleen ennen sen testaamista ja testaamista, etsimällä uusia virheitä ja yhteensopimattomuuksia, jotka ovat saattaneet syntyä, kun eri tiimin jäsenet tarkistavat koodinsa. Jatkuva integraatiopalvelin synkronoi kaikkien ohjelmoijien työn ja auttaa tiimiä havaitsemaan ongelmat.

Jotkut luettelot CI-palvelimen tehtävistä päättyvät testeihin, mutta viime aikoina yhä useammat ryhmät laajentavat luetteloita sisällyttämään uuden koodin käyttöönoton, prosessin, jota joskus kutsutaan jatkuvaksi käyttöönotoksi. Täysin automatisoitu käyttöönotto saa jotkut ihmiset hermostumaan, ja he lisäävät usein manuaalisia taukoja prosessiin. Hieman vastuullisuuden ja inhimillisen varmuuden lisääminen antaa heille mahdollisuuden rentoutua. He kutsuvat tätä hybridi-lähestymistapaa "jatkuvaksi toimitukseksi", koska se toimittaa koodin johonkin lavastus- tai testausklusteriin, jossa se odottaa ihmisen tekevän viimeisen työn työn.

Jos jatkuva integrointi on loistavaa käytävän palvelinhuoneessa, se voi olla vieläkin parempi pilvessä, jossa on hyvät mahdollisuudet nopeampaan toimitukseen ja parempaan tehokkuuteen. Parhaimmissa tapauksissa pilvet voivat jakaa työn ja suorittaa tehtävät rinnakkain. Palvelut alkavat suurella laitteistoalueella ja jakavat sen sitten useiden tiimien kesken. Niin kauan kuin kaikki eivät työnnä koodiaan samanaikaisesti, koontiversiot ja testit suoritetaan paljon nopeammin. Saman valtavan telineen ostaminen vain hetkiksi, jolloin kehittäjät haluavat suorittaa kaikki testit, on kohtuutonta, mutta jos joukkueet jakavat telineen, he kaikki voivat nauttia nopeuden purskeista.

Vaaroja ja huolia on kuitenkin, ja suurin voi olla hallinnan menettäminen. Kaikki pilvipalvelut edellyttävät koodisi luovuttamista kolmannelle osapuolelle, mikä vaihtoehto saattaa tuntua vapauttavalta joillekin, mutta pelottavalta toisille. Kaikki pilvipalvelut yrittävät kovasti korostaa turvallisuutta, mutta jotenkin tuntuu erilaiselta, kun koodi on oman katosi alla.

Kaikkien tärkeimpien kielten laajan tuen lisäksi nämä palvelut kattavat yllättävän määrän alaikäisiä ja yli muutamia todella outoja ja epätavallisia kieliä. Tämä on enemmän tulosta hyvistä alkuarkkitehtuurin päätöksistä kuin kehittäjien sankarillisista ponnisteluista. Tehtäväluettelot koodataan melkein aina komentoina jollekin kuorelle tai komentoriville, joten jatkuvan integroinnin työkalut jatkavat melkein komentojen antamista, kunnes luettelo on käytetty loppuun tai näkyviin tulee ylitsepääsemätön este. Jotkut kielet, kuten Java, tarjoavat kehittyneempiä vaihtoehtoja, mutta suurimmaksi osaksi työkalut pystyvät suorittamaan kaiken, mitä voit tehdä komentorivillä.

Tässä on 10 erilaista vaihtoehtoa jatkuvaan integrointiin pilvessä.

PilviMehiläiset

CloudBees Core aloitti Jenkinsistä, joka on tunnettu avoimen lähdekoodin projekti jatkuvaa integraatiota varten, ja lisäsi sitten testausta, tukea ja jonkin verran varmuutta siitä, että koodi vain toimii. Yritys voitti kaikki kokeelliset laajennukset, lisäsi muutaman oman ja kiillotti sitten oikeat, jotta ne toimisivat odotetulla tavalla, kun tarvitset niitä.

CloudBees työllistää edelleen 80 prosenttia Jenkinsin kehitystiimistä, ja he usein lähettävät koodia avoimen lähdekoodin projektiin, joten voit olla varma, että he ovat ymmärtäneet hyvin tämän hallitsevan alustan. Nopeuttamaan asioita CloudBees lisäsi myös laajan rinnakkaistamisen sekä instrumentoinnin kehitysprosessisi seuraamiseksi.

CloudBees tarjoaa erilaisia ​​hintapisteitä, jotka vaihtelevat ilmaisista tasoista "aloituspaketteihin" koko palveluvuoden ajan. Yritys tarjoaa myös Jenkins-tuen kaikille, jotka tarvitsevat apua työkalussa, mutta eivät tarvitse tai halua pilvipalvelua.

AWS CodePipeline

Amazonin jatkuvan integroinnin ja käyttöönoton työkalu, AWS CodePipeline, on optimoitu toimittamaan koodi AWS-palvelimelle samalla, kun se on edelleen avoin koodin ja tietojen kehittyneemmille poluille. Perustyökalu tarjoaa mukavan valikoiman valmiiksi määritettyjä rakennusympäristöjä tärkeimmille kielille (Java, Python, Node.js, Ruby, Go, Android, .Net Core for Linux) ja kaataa tuloksen S3-ämpäriin ennen sen lähettämistä palvelimelle aloittaaksesi käynnin.

On yllättävän suuri määrä kerroksia, joilla on hieman erilaiset nimet. CodeBuild tarttuu viimeisimpään neroosi CodeCommitista, kun CodePipeline laukaisee sen, ja luovuttaa sitten tuloksen CodeDeploylle. Jos koodimäärityksiä on liian monta määritettäväksi, voit siirtyä suoraan CodeStariin, joka tarjoaa uuden automaatiokerroksen. Jos vain CodeBugEraserStar pyyhkii kaikki virheemme automaattisesti. On syytä huomata, että et maksa teknisesti mistään näistä koodikerroksista. Amazon laskuttaa sinua vain matkan aikana käytetyistä laskenta- ja tallennusresursseista. Se ei ole aivan ilmainen, vaikka se tuntuu siltä.

Bitbucket-putket

Atlassian, suositun Jira-seurantalevyn, Jiran ja koodivaraston, Bitbucket, kehittäjät, päätti hyödyntää työnkulunsa pitoa luomalla jatkuvan integrointityökalun Bitbucket Pipelines Bitbucket-pilveen. Salakastike on enemmän integraatiota, tässä tapauksessa rakennemekanismin ja Atlassianin muiden työkalujen välisten yhteyksien muodossa. Ainakin kosmeettisesti putkilinjat eivät ole edes erillinen asia. Se on vain yksi valikkovaihtoehto jokaiselle Bitbucket-projektille. Toinen valikkovaihtoehto viittaa käyttöönottoon, jolloin voit valita, mihin koontiversiot päätyvät.

Yhteydet ovat siunaus ja rajoitus. Jos valitset jonkin pääkielille jo määritetyistä malleista (Java, JavaScript, Python, PHP, .Net jne.), Voit rakentaa ja ottaa koodisi käyttöön muutamalla napsautuksella. Mutta jos et poikkea standardeista, huomaat, että vaihtoehtoja ei ole. Atlassian kannustaa markkinapaikkaan sovelluksia, jotka näyttävät olevan sekoitus kaavioita ja verkkokoukkuja muihin palveluihin. Kaavion yläsovellus kirjoittaessani yhdistää Bitbucketin Jenkinsin kanssa, oletettavasti tekemään jotain, jota ei voida tehdä nopeasti seinien sisällä.

Putkilinjojen pääasiallinen etu on nopeus. Atlassian on suunnitellut suurimman osan tärkeimmistä reiteistä koodista juoksevaan käyttöönottoon, ja voit seurata yrityksen jalanjälkiä vain muutamalla dollarilla. Bitbucketin käyttökustannuksia on vaikea verrata, koska koontiversiot hinnoitellaan minuuteissa, kuten useimmat palvelimettomat mallit, mutta tiimit omistavat usein esiintymäkokonaisuuden Jenkins-rakennusten käsittelemiseksi. Vaikka sulkisit ne öisin ja viikonloppuisin, tunnit laskevat yhteen.

GitLab CI / CD

Yksi suurimmista kilpailijoista Atlassianille on GitLab, toinen yritys, joka haluaa hoitaa prosessin jokaisen vaiheen sormien ja käynnissä olevan käyttöönoton välillä. GitLabin rakennus-, testaus- ja käyttöönottomekanismit on myös kytketty suoraan sen Git-arkistoihin, jotta ne voidaan käynnistää sitoutumisella. Prosessi on suurelta osin rakennettu Docker-konttien ympärille, ja tämä välimuisti voi yksinkertaistaa huomattavasti Jenkins-rakennusten ympärillä tehtäviä määritystöitä.

Rakennustehtävät voivat kohdistaa mihin tahansa kieleen, mutta niiden täytyy laukaista GitLab Runner, Go-järjestelmään kirjoitettu automaattinen skaalaustyökalu, joka on valmis useimmille alustoille. Tämä joustavuus tarkoittaa, että voit käynnistää minkä tahansa satunnaisen työn muilla koneilla, mikä voi olla hyödyllistä monimutkaisissa arkkitehtuureissa, jotka tekevät muutakin kuin vain toimittavat mikropalveluja.

Hinnoittelu yhdistetään eri tasoihin tarpeiden arvioimiseksi. Esimerkiksi kultatason ryhmät saavat kaikki parhaat ominaisuudet, kuten turvakojetaulut ja 50000 minuuttia rakennusta jaetulle koneistolle. Oman koneesi käytöstä prosessissa tai erillisissä instansseissa jossakin muussa pilvessä ei veloiteta.

CircleCl

Monet jatkuvan integroinnin työkaluista keskittyvät koodiin, joka voidaan rakentaa Linux-ympäristöön. CircleCI rakentaa ja toimittaa Linux-maailmassa, mutta se tarjoaa myös tuotteen, joka rakentaa Android-sovelluksia ja mitä tahansa Applen Xcodeista (iOS, MacOS, tvOS tai watchOS). Jos työskentelet tiimissä, joka tuottaa sovelluksia näille käyttöympäristöille, voit sitouttaa koodisi ja antaa CircleCI: n valvoa testausohjelmaa tiimisi kaikilla erilaisilla neroilla.

Tehtäväluettelot on esitetty YAML-tiedostoissa. CircleCI käyttää Dockeria koko monikerroksisessa loistossaan testausympäristöjen määrittämiseksi koodille. Rakennukset alkavat tuoreista astioista ja niin kaikki testitkin. Mac-työ toimii virtuaalikoneissa, joiden käyttöikä on yhtä lyhyt. Tämä välttää joitain määritysongelmia, koska puhtaissa ympäristöissä ei ole jäännöspaloja. (Joten jos ongelmasi johtuu viipyvästä digitaalisesta flotista, niin se on sinun vikasi.)

Hinnoittelu on keskittynyt siihen, kuinka paljon suorittimesi imevät. Käyttäjien ja arkistojen lukumäärä on rajattu äärettömään. Tätä rakennusta tekevien rakennusminuuttien ja konttien lukumäärä on kuitenkin mitattu. Ensimmäinen säiliö on ilmainen, ja siinä voi käyttää yhtä rakennusta. Jos haluat enemmän rinnakkaisuutta tai enemmän läpimenoa, CircleCI saa ansaita rahaa. Mac-käyttäjät eivät saa samaa ilmaista sopimusta, mutta jokaiselle, joka testaa palvelua, on alustavia suunnitelmia.

Travis CI

Jos rakennuksesi tuottaa koodia, joka on testattava Windows-laatikoissa, Travis CI tarjoaa sinulle yhden pysähdyksen. Yhtiö on tarjonnut MacOS- ja Linux-vaihtoehtoja jonkin aikaa, mutta on juuri ottanut käyttöön Windows-vaihtoehdon, mikä tekee yksinkertaisemmasta tuottaa koodia, joka toimii vielä useammassa paikassa.

Tehtäväluettelot on myös määritelty YAML: ssä ja työt suoritetaan puhtaissa virtuaalikoneissa, joiden kokoonpano on melko vakio. Linux-koodi saa joitain Ubuntun perusversioita, Mac-koodi toimii yhdessä kymmenestä OS X-, Xcode- ja JDK-yhdistelmästä. Windows-koodi voi toistaiseksi päätyä vain yhteen Windows Server -versioon (1803). Travis CI tarjoaa pitkän luettelon 30 kielestä ja koontisäännöistä, jotka on määritetty valmiiksi ja melkein valmiina toimimaan.

Hinnoittelu perustuu siihen, kuinka monta samanaikaista työtä voidaan suorittaa kerralla, mutta näiden rakennusten kesto ei ole muodollisesti rajoitettu. Se on kuin saisit kiinteän määrän omistettuja esiintymiä työhösi ja ne ovat valmiita koko ajan. Omaan työhön ei ole ilmaisia ​​vaihtoehtoja, mutta avoimen lähdekoodin projektit ovat "aina ilmaisia" - joten se voi olla yksinkertaisin tapa kokeilla Travis CI: tä.

Azure-putket

Jos ihmettelet, onko modernilla Microsoftilla "Ei keksitty täällä" -asenne, katso Azure Pipelines. Myyntikirjallisuudessa sanotaan: "Mikä tahansa kieli, mikä tahansa ympäristö." Vaikka tämä on melkein varmasti hieman hyperbolia ja Azurella ei todennäköisesti ole paljon tarjottavaa ENIAC-ohjelmoijille, se tarjoaa näkyvästi Microsoftille, Linuxille ja MacOS-polkuja koodillesi. Applen kulma kohdistaa vain MacOS-rakenteisiin, ei iOS-, tvOS- tai watchOS-sovelluksiin, mutta emme saa valita. Tämä on lasi, joka on paljon yli puoliksi täynnä.

Abstraktisti järjestelmä on samanlainen kuin muut. On agentteja, jotka suorittavat rakennelmia tuottamaan esineitä. Jotkut näistä voivat olla itse isännöityjä, jos tämä vaihtoehto auttaa. Pino käsittää Docker-kontit kokonaan ja Azuren laitteisto on valmis ajamaan niitä puolestasi. Kaikki nämä yksityiskohdat voidaan napsauttaa yhdessä verkkosivulle sisäänrakennetun visuaalisen suunnittelijan kanssa tai määrittää YAML: n kanssa, jos haluat asua komentorivimaailmassa.

Hinnoitteluun sisältyy ilmainen "rinnakkaistyö", jossa on 1800 minuuttia rakennusaikaa. Jos haluat enemmän rinnakkaisuutta tai enemmän rakennettua aikaa, alat maksaa. Suunnitelma sisältää runsaan ilmaisen tason avoimen lähdekoodin projekteille, korostaen jälleen Microsoftin halua osallistua yleiseen avoimen lähdekoodin yhteisöön. Mutta jos Microsoft aikoo käyttää 7,5 miljardia dollaria ostaakseen paikan pöydästä hankkimalla GitHubin, sillä on järkevää. Missä kaikki tämä koodi suoritetaan? Azure Pipelines siirtää mielellään sen Azure-laitteistoon.

$config[zx-auto] not found$config[zx-overlay] not found