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.

  • ๐Ÿ”„ Erota CI, CD ja CD: Jatkuva integrointi yhdistรครค koodia pรคivittรคin; jatkuva toimitus pitรครค sen aina julkaistavana; jatkuva kรคyttรถรถnotto vie jokaisen vihreรคn koontiversion suoraan tuotantoon.
  • ๐Ÿ—๏ธ Suorita neljรค vaihetta: Lรคhde โ†’ Rakenna โ†’ Testaa โ†’ Ota kรคyttรถรถn, ja automaattiset ilmoitukset kaikista virheistรค.
  • ๐Ÿ› ๏ธ Valitse oikeat tyรถkalut: Jenkins, Bamboo, CircleCI, GitHub Actions, GitLab CI ja Argo CD kattavat useimmat nykyaikaiset prosessinohjausjรคrjestelmรคt.
  • ๐Ÿ“Š Track oikeat KPI:t: Sykliaika, kรคyttรถรถnottotiheys, muutosten lรคpimenoaika, muutosten epรคonnistumisaste, MTTR ja MTTF osoittavat myyntiputken kunnon.
  • ๐Ÿค– Lisรครค tekoรคly silmukkaan: Tekoรคlyavustajat luovat YAML-tiedostomuotoa, ennustavat epรคvakaita testejรค ja selittรคvรคt koontivirheitรค, jotta insinรถรถrit kรคyttรคvรคt vรคhemmรคn aikaa triaamiseen.

CI/CD-putkilinja

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-putkilinjan vaiheet

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.

Jenkins

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.

Bamboo

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.

CircleCI

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.

UKK

CI/CD on joukko automatisoituja teknisiรค kรคytรคntรถjรค, joilla ohjelmistoja rakennetaan, testataan ja toimitetaan. DevOps on laajempi kulttuurinen ja organisatorinen liike, joka yhdenmukaistaa kehityksen ja toiminnan, ja CI/CD on yksi sen keskeisistรค suunnittelukรคytรคnnรถistรค.

Jatkuva toimitus pitรครค tuotteen aina julkaisuvalmiina ja edellyttรครค manuaalista hyvรคksyntรครค toimitukselle. Jatkuva kรคyttรถรถnotto poistaa tรคmรคn esteen โ€“ jokainen prosessin lรคpi kulkeva muutos siirtyy automaattisesti tuotantoon.

Terveen prosessin yksikkรถ- ja integraatiovaiheet valmistuvat alle kymmenessรค minuutissa, joten palaute saavuttaa kehittรคjรคn, kun konteksti on vielรค tuore. Pidemmรคt kokonaisvaltaiset kehityspaketit voivat toimia rinnakkain tai yรถaikataulussa.

Tallenna salaisuudet holviin, mรครคritรค agentin kรคyttรถoikeudet tarkasti, allekirjoita artefakteja, suorita SAST- ja riippuvuusskannauksia ja tarkista, kuka voi muokata putkimรครคritelmiรค. Kรคsittele putkilinjaa tuotantoinfrastruktuurina.

DORA-mittarit โ€“ kรคyttรถรถnottotiheys, muutosten lรคpimenoaika, muutosten epรคonnistumisaste ja keskimรครคrรคinen palautusaika โ€“ mittaavat huippuluokan ohjelmistotoimituksen suorituskykyรค ja niitรค kรคytetรครคn laajalti CI/CD-kypsyyden vertailuun.

Kyllรค. Jopa Python, Ruby ja JavaSkriptiprojektit hyรถtyvรคt koontivaiheesta, joka asentaa riippuvuuksia, linttaa koodia, suorittaa tyyppitarkistuksia ja tuottaa kรคyttรถรถnottovalmiita sรคilรถ- tai pakettielementtejรค.

Tekoรคlyavustajat luovat YAML-tiedostomuotoa, luokittelevat epรคtasaiset testit, tekevรคt yhteenvedon koontivirheistรค ja suosittelevat palautusaikatauluja. Ne lyhentรคvรคt triage-aikaa ja antavat insinรถรถrien keskittyรค perimmรคisiin syihin lokien lรคpikรคymisen sijaan.

Kyllรค. Tekoรคlytyรถkalut muuttavat selkokielisen kuvauksen, kuten โ€luo Node.js-sovellus, suorita Jest, julkaise Docker-kuva, ota kรคyttรถรถn AWS:ssรคโ€, muokattavaksi valmiiksi GitHub Actions- tai GitLab CI YAML -toiminnoiksi, joissa on selitykset jokaiselle vaiheelle.

Tiivistรค tรคmรค viesti seuraavasti: