CI/CD-putkiston opetusohjelma esimerkin kanssa
โก รlykรคs yhteenveto
CI/CD-prosessi on automatisoitu polku, joka vie koodinmuutoksen commitista tuotantoon. Se rakentaa, testaa ja ottaa kรคyttรถรถn ohjelmiston neljรคssรค vaiheessa โ lรคhdekoodi, rakentaminen, testaus ja kรคyttรถรถnotto โ karsimalla manuaalisia virheitรค ja lyhentรคmรคllรค kehittรคjien ja loppukรคyttรคjien vรคlistรค ketjua.

Mikรค on CI/CD-putki?
A CI/CD-putki automatisoi koodinmuutoksen polun kehittรคjรคn commitista julkaistuun julkaisuun. Se rakentaa koodin, suorittaa testipaketin ja siirtรครค binรครคritiedoston turvallisesti yhteen tai useampaan ympรคristรถรถn. Hyvin suunniteltu prosessi vรคhentรครค manuaalisia virheitรค, palauttaa kehittรคjille nopeaa palautetta ja mahdollistaa pienet, usein toistuvat tuoteiteraatiot.
Putkilinja yhdistรครค automaation ja jatkuvan valvonnan koko ohjelmiston elinkaaren ajan โ integroinnista ja testauksesta toimitukseen ja kรคyttรถรถnottoon. Yhdistettyjรค kรคytรคntรถjรค kutsutaan yhteisesti CI/CD-putkeksi.
Mitรค ovat jatkuva integrointi, jatkuva toimitus ja jatkuva kรคyttรถรถnotto?
- Jatkuva integrointi (CI): kehityskรคytรคntรถ, jossa tiimin jรคsenet integroivat tyรถnsรค vรคhintรครคn kerran pรคivรคssรค. Jokainen integraatio varmennetaan automatisoidulla koonnilla ja testiajolla, joka paljastaa virheet nopeasti.
- Jatkuva toimitus (CD): Insinรถรถrikรคytรคntรถ, jossa tiimi pitรครค tuotteen julkaisuvalmiissa tilassa jokaisen iteraation lopussa. Kรคyttรถรถnotto tuotantoon tapahtuu tyypillisesti manuaalisesti.
- Jatkuva kรคyttรถรถnotto (CD): vie jatkuvan toimituksen askeleen pidemmรคlle โ jokainen muutos, joka lรคpรคisee automaattiset tarkastukset, otetaan kรคyttรถรถn tuotantoympรคristรถssรค automaattisesti ilman ihmisen ohjausta.
CI/CD-putken vaiheet
CI/CD-prosessi on suoritettava tiedosto, joka mรครคrittรครค uuden ohjelmistoversion toimittamiseen tarvittavat vaiheet. Missรค tahansa vaiheessa tapahtuva virhe laukaisee ilmoituksen โ sรคhkรถpostitse, Slacktai toisen kanavan kautta โ jotta vastuullinen insinรถรถri saa vรคlittรถmรคsti hรคlytyksen.
CI/CD-putken vaiheet.
Lรคhdevaihe
Koodirepositorion muutos laukaisee prosessin. Jokainen commit ilmoittaa CI/CD-tyรถkalulle vastaavan prosessin suorittamisesta. Muita yleisiรค laukaisimia ovat kรคyttรคjรคn aloittamat tyรถnkulut, ajoitetut suoritukset ja ylรคvirran prosessien tulokset.
Rakenna Stage
Kรครคnnรถsvaiheessa lรคhdekoodi kรครคnnetรครคn ja sen riippuvuudet ratkaistaan โโajettavaksi artefaktiksi. Kรครคnnetyt kielet, kuten C++, Java, C:n ja Go:n on tuotettava binรครคritiedostoja. Tulkittavat kielet, kuten JavaKรคsikirjoitus, Python, ja Ruby hyรถtyy edelleen tรคstรค vaiheesta riippuvuuksien pakkaamiseen, linttaukseen ja sรคilรถkuvien tuottamiseen.
Rakennusvaiheen epรคonnistuminen viittaa yleensรค projektin perustavanlaatuiseen virheelliseen konfigurointiin, joten ongelmaan on puututtava vรคlittรถmรคsti.
Testivaihe
Testausvaiheessa suoritetaan automatisoitu testipaketti koodin oikeellisuuden ja ohjelmiston toiminnan validoimiseksi. Se havaitsee helposti toistettavissa olevat virheet ennen kuin ne pรครคtyvรคt asiakkaille. Testien kirjoittaminen ja yllรคpito on kehittรคjรคn vastuulla โ testiputki vain valvoo niiden suorittamista.
Ota vaihe kรคyttรถรถn
Kรคyttรถรถnottovaiheessa varmennettu artefakti siirretรครคn kohdeympรคristรถรถn, kuten testiympรคristรถรถn, kรคyttรคjรคt ja toteutukseen (UAT) tai tuotantoympรคristรถรถn. Kun koontiversio on lรคpรคissyt kaikki vaaditut testit, kรคyttรถรถnotto voidaan kรคynnistรครค automaattisesti (jatkuva kรคyttรถรถnotto) tai manuaalisen portin jรคlkeen (jatkuva toimitus).
Esimerkki CI/CD-putkistosta
Alla oleva lรคpikรคynti nรคyttรครค konkreettisen prosessin, joka kรคyttรครค GitHubia, CircleCIja AWS.
- Lรคhde Code ohjaus: isรคnnรถi sovelluskoodia yksityisessรค GitHub-arkistossa, jotta se integroituu koonti-, skannaus- ja kรคyttรถรถnottopalveluihin.
- Jatkuva integraatio: kytkeรค CircleCI repositorioon, jotta jokainen push-komento noutaa uuden koodin, rakentaa sen ja suorittaa testipaketin.
- Ota kรคyttรถรถn UAT:ssa: mรครคrittรครค CircleCI ottaa kรคyttรถรถn onnistuneita koontiversioita AWS UAT -ympรคristรถssรค sidosryhmien testausta varten.
- Ota kรคyttรถรถn tuotantoympรคristรถssรค: Kรคytรค samoja CI/CD-vaiheita uudelleen siirtรครคksesi artefaktin tuotantoon manuaalisen hyvรคksynnรคn avulla, jos kรคytรคt jatkuvaa toimitusta.
CI/CD-putken parhaat kรคytรคnnรถt
Seuraavat kรคytรคnnรถt pitรคvรคt myyntiputket nopeina, luotettavina ja tiimin luottamuksen arvoisina:
- Dokumentoi nykyinen toimitusprosessi ennen automatisointia, jotta tiedรคt, mitรค sรคilyttรครค, muuttaa tai poistaa.
- Aloita pienellรค konseptitodistuksella sen sijaan, ettรค automatisoisit koko prosessin kerralla.
- Rakenna prosessi useiksi vaiheiksi niin nopeasti, ettรค perustarkistukset suoritetaan ensin.
- Aloita jokainen tyรถnkulku puhtaasta ja eristetystรค ympรคristรถstรค, jotta koonnokset ovat toistettavissa.
- Lisรครค avoimen lรคhdekoodin tyรถkaluja, jotka kattavat kaiken koodityylistรค tietoturvaskannaukseen.
- Kรคytรค koodin laatua valvovaa keskitintรค, joka suorittaa samat testit jokaiselle haaralle.
- Vertaisarvioi jokainen pull-pyyntรถ ja kรคsittele prosessin tuotos osana arviointia.
- Mรครคrittele menestysmittarit ennen siirtymรคn aloittamista โ ne edistรคvรคt jatkuvaa parantamista.
CI/CD-putkistojen edut
Kypsรค CI/CD-putkisto tarjoaa useita mitattavia etuja:
- Korvaa virhealttiit manuaaliset koonti- ja julkaisutyรถt luotettavalla automaatiolla.
- Parantaa jokaisen lรคhetetyn artefaktin yhdenmukaisuutta ja laatua.
- Lisรครค joustavuutta โ uusia toimintoja voidaan toimittaa pyynnรถstรค.
- Virtaviivaistaa kehittรคjien, laadunvarmistuksen ja operatiivisen toiminnan vรคlistรค viestintรครค.
- Nopeuttaa asiakaspalautteen kerรครคmistรค tiheรคsti julkaistavilla versioilla.
- Lisรครค tuotteen nรคkyvyyttรค koontinรคyttรถjen, lokien ja ilmoitusten avulla.
- Poistaa manuaaliset virheet ja alentaa julkaisukustannuksia.
- Lyhentรครค ohjelmistokehityksen elinkaarta.
- Tarjoaa nopean palautteen kehittรคjรคltรค loppukรคyttรคjรคlle.
- Korostaa muutokset, jotka rikkovat koontiversion, jotta ne voidaan peruuttaa nopeasti.
- Yhdistรครค automatisoidut testit kevyeen manuaaliseen tutkivaan testaukseen laadun pitรคmiseksi korkeana.
Tรคrkeitรค CI/CD-tyรถkaluja
Nykyaikaiset tiimit valitsevat tyรถkalunsa terveestรค CI/CD-tyรถkalujen ekosysteemistรค. Yleisimmin kรคytetyt on kuvattu alla.
1) Jenkins
Jenkins on avoimen lรคhdekoodin jatkuvan integraation palvelin, joka automatisoi rakennus-, testaus- ja julkaisutyรถnkulut. Kirjoitettu kielellรค Java ja jota tukee laaja plugin-ekosysteemi, Jenkins toimii voimanlรคhteenรค sadoille tuhansille asennuksille maailmanlaajuisesti.
Ominaisuudet:
- Koodia rakennetaan ja testataan useita kertoja pรคivรคssรค.
- Automatisoi koko rakennus-/testausprosessin, mikรค sรครคstรครค aikaa ja vรคhentรครค virheitรค.
- Levittรครค koodin jokaisen onnistuneen koonnin ja testin jรคlkeen.
- Nopeuttaa kehityssykliรค nopean palautteen avulla.
Linkki: https://www.jenkins.io/download/
2) Bamboo
Bamboo on jatkuvan integraation omaava koontipalvelin, joka yhdistรครค automaattisen koonnin, testauksen ja julkaisun yhteen tyรถkaluun. Se integroituu saumattomasti seuraaviin: Jira Software ja Bitbucket.
Ominaisuudet:
- Suorittaa rinnakkaisia โโerรคtestejรค.
- Nopea asentaa ja konfiguroida.
- Ympรคristรถkohtaiset kรคyttรถoikeudet antavat kehittรคjille ja laadunvarmistukselle mahdollisuuden ottaa kรคyttรถรถn omissa ympรคristรถissรครคn.
- Sisรครคnrakennetut Git-haarautumistyรถnkulut, jotka yhdistรคvรคt haarat automaattisesti.
Linkki: https://www.atlassian.com/software/bamboo
3) CircleCI
CircleCI on joustava CI-tyรถkalu, joka suorittaa eri alustojen mobiilisovellusten koontiversioita, Python APIt, Docker-klusterit ja paljon muuta. Se vรคhentรครค virheitรค ja parantaa sovellusten laatua nopean palautteen avulla.
Ominaisuudet:
- Rakennusympรคristรถjen valinta.
- Tukee monia kieliรค, mukaan lukien C++, JavaSkripti, .NET, PHP, Pythonja Ruby.
- Docker-tuki mukautetuille koontikuville.
- Peruuttaa automaattisesti jonossa olevat tai kรคynnissรค olevat koonnit, kun uudempi koonti kรคynnistetรครคn.
Linkki: https://circleci.com/
4) GitHub-toiminnot, GitLab CI ja Argo CD
GitHub Actions ja GitLab CI integroivat CI/CD:n suoraan versionhallinta-alustaan, mikรค poistaa ulkoisen koontipalvelimen tarpeen. Argo CD lisรครค GitOps-tyylisen jatkuvan kรคyttรถรถnoton Kubernetes-klustereille, sovittaen klusterin Gitissรค ilmoitettuun haluttuun tilaan.
Miksi CI/CD-putkilinjalla on merkitystรค IT-johtajille?
- Parantaa julkaisun luotettavuutta ja ennustettavuutta.
- Tekee suunnitteluorganisaatiosta paremmin lรคsnรคtrackehittรคjille.
- Noutaa koodin versionhallintajรคrjestelmรคstรค ja suorittaa koontiversion yhdellรค napsautuksella.
- Siirtรครค binรครคritiedostot turvallisesti kohdeympรคristรถihin.
- Antaa projektipรครคllikรถiden hallita ympรคristรถmuuttujia ja konfiguraatiota ympรคristรถkohtaisesti.
- Julkaisee sovelluskomponentteja verkkoon, tietokantaan, API:in ja muihin palveluihin.
- Surfaces kirjaa lokitietoja ja hรคlytyksiรค kunkin julkaisun tilasta.
- Tarkistaa koodimuutokset ennen niiden etenemistรค, mikรค vรคhentรครค tuotantovirheitรค.
CI/CD-putken KPI-mittarit
- Kierto- tai kรคyttรถรถnottoaika: aika, joka kuluu siirtymiseen rakentamisesta tuotantoon. Trendit paljastavat toimitusprosessisi pullonkauloja.
- Kรคyttรถรถnottotiheys: kuinka usein toimitat. Useammat ja pienemmรคt julkaisut vรคhentรคvรคt riskiรค ja helpottavat vikojen korjaamista.
- Muuta toimitusaikaa: Aika kehityksen alusta onnistuneeseen kรคyttรถรถnottoon. Heijastaa sitรค, kuinka hyvin suunnittelu, koodaus ja toimitus toimivat yhdessรค.
- Muuta epรคonnistumisprosenttia: niiden kรคyttรถรถnottojen prosenttiosuus, jotka aiheuttavat hรคiriรถitรค tai vaativat peruutusta. Tracvarmistaa putkilinjan turvallisuuden.
- MTTR (keskimรครคrรคinen palautumisaika): keskimรครคrรคinen aika palvelun palauttamiseen vian jรคlkeen. Mittaa vikasietoisuutta.
- MTTF (keskimรครคrรคinen vikaantumisaika): keskimรครคrรคinen aika vikojen vรคlillรค. Tracks pitkรคn aikavรคlin luotettavuus.




