Mis on CI/CD? Pidev integreerimine ja pidev kohaletoimetamine

⚡ Nutikas kokkuvõte

Pidev integratsioon on tarkvaraarenduse tava, kus meeskonnaliikmed koondavad oma töö vähemalt kord päevas ühisesse repositooriumisse ja iga commit käivitab automaatse ehituse ja testimise, et integratsioonivead varakult avastada.

  • 🔄 Määratlus: Arendajad integreerivad koodi iga päev ja iga commit'i kontrollib automatiseeritud ehitus.
  • 🚚 CI vs CD: CI testib iga muudatust; pidev edastamine hoiab tarkvara igal ajal avaldatavana.
  • 🧪 Torujuhe: Commit käivitab ehituse, testimise ja juurutamise etapid ühes pidevas voos.
  • 🧰 Vahendid: Jenkins, Bambooja TeamCity automatiseerida ehitust ja testimist.
  • 📉 Kasu: Varajane ja sagedane testimine tähendab vähem vigu ning kiiremaid ja turvalisemaid väljalaseid.
  • 🤖 AI abi: Tehisintellekti tööriistad tuvastavad ebaühtlaseid teste ja triaaživad automaatselt ehituse ebaõnnestumisi.

Mis on CI/CD?

Mis on pidev integreerimine (CI)?

Pidev integreerimine on tarkvaraarendusmeetod, kus meeskonnaliikmed integreerivad oma tööd vähemalt kord päevas. Iga integratsiooni kontrollib automaatne järgustamine, mis tuvastab vigu. See kontseptsioon võeti kasutusele üle kahe aastakümne tagasi, et vältida „integratsioonipõrgu“, mis juhtub siis, kui integratsioon lükatakse projekti lõppu.

Pärast koodi kinnitamist (commit) ehitatakse ja testitakse tarkvara kohe. Suures projektis, kus on palju arendajaid, tehakse kinnitusi mitu korda päevas. Iga kinnitusega kood ehitatakse ja testitakse; kui test läbib, kontrollitakse ehitust juurutamiseks; ja kui juurutamine õnnestub, suunatakse kood tootmiskeskkonda. See kinnituse, loomise, testimise ja juurutamise tsükkel on pidev, mis annabki sellele praktikale nime.

Mis on pidev kohaletoimetamine (CD)?

Pidev kohaletoimetamine on tarkvaratehnika meetod, mille puhul meeskond arendab tarkvara lühikeste tsüklite jooksul ja tagab selle usaldusväärse avaldamise igal ajal. Eesmärk on tarkvara kiire ja sagedase loomine, testimine ja avaldamine, vähendades sagedaste tootmisvärskenduste abil muudatuste edastamise kulusid, aega ja riski.

Erinevus CI ja CD vahel

Pidev integreerimine on lähenemisviis, mille puhul testitakse iga koodibaasi muudatust automaatselt, samas kui pidev edastamine on lähenemisviis selliste muudatuste nagu uute funktsioonide, konfiguratsiooni ja veaparanduste kiireks ja ohutuks tootmisesse toomiseks.

Arendus ilma CI-ta vs. arendus CI-ga

Areng ilma CIta Arendus CI-ga
Palju vigu Vähem vigu
Harvad kohustused Regulaarsed kohustused
Harvad ja aeglased vabastamised Regulaarsed tööväljaanded
Raske integreerimine Lihtne ja tõhus integreerimine
Testimine toimub hilja Testimine toimub varakult ja sageli
Probleeme on raskem lahendada Probleemid leitakse ja lahendatakse kiiremini
Projekti halb nähtavus Parem projekti nähtavus

Erinevus kompileerimise ja pideva integratsiooni vahel

Kuigi kompileerimine teisendab koodi ainult masinkeeleks, täidab CI mitmeid laiemaid tegevusi:

  • Andmebaasi integratsioon: Hoiab andmebaasi ja koodi sünkroonis ning automatiseerib andmebaasi ja testandmete loomise.
  • Code ülevaatus: Tagab terve koodibaasi, tuvastab probleemid varakult ja rakendab parimaid tavasid.
  • Automatiseeritud juurutamine: Võimaldab toote igal ajal välja anda ja hoiab seda pidevalt demokõlblikus olekus.
  • Dokumentide genereerimine: Hoiab dokumentatsiooni ajakohasena ning loob aruandeid ja mõõdikuid.
  • Koostamine: Teisendab kõrgetasemelise koodi masinkeeleks ja tagab selle kompileerimise igal sihtplatvormil.

Ideaalis käivitatakse ehitus käsurealt, mitte IDE-st sõltudes, toimub pidevalt spetsiaalsel CI-serveril (mitte cron-tööna), käivitatakse iga registreerimise korral ja annab kohest tagasisidet ilma arendaja pingutuseta.

Mida on vaja CI protsessi läbiviimiseks?

  • Versioonikontrollisüsteem (VCS): Usaldusväärne meetod projektis aja jooksul tehtud muudatuste tsentraliseerimiseks ja säilitamiseks.
  • Virtuaalne masin: Varuserver või vähemalt üks virtuaalne masin oma süsteemi ülesehitamiseks.
  • Majutatud CI tööriistalahendused: Serverite haldamise vältimiseks haldavad hostitud lahendused kogu protsessi ja pakuvad lihtsamat skaleeritavust.
  • Vahendid: Kui valite ise hostitud variandi, installige CI-tööriist, näiteks Jenkins, TeamCity, Bamboovõi GitLab.

Kuidas pidev integratsioon töötab?

Vana näide on Nokia, mis kasutas kunagi protseduuri nimega öine ehitus. Pärast seda, kui paljud arendajad päeva jooksul mitu korda muudatusi tegid, ehitati tarkvara igal öösel. Kuna tarkvara ehitati ainult üks kord päevas, oli suures koodibaasis vigade eraldamine, tuvastamine ja parandamine vaevaline.

Later Meeskond võttis kasutusele pideva integratsiooni (Continuous Integration). Tarkvara ehitati ja testiti kohe, kui arendaja koodi lisas, seega avastati kõik vead kohe ja vastutav arendaja sai need kiiresti parandada.

CI omadused

  • Võimaldab teil hallata ühte lähtekoodiga repositooriumi.
  • Võimaldab testida tootmiskeskkonna klooni, mis on tootmiskeskkonnale lähedal.
  • Pakub praeguse järgu pidevat kättesaadavust.
  • Teeb kogu ehituse, testimise ja juurutamise protsessi kõigile sidusrühmadele nähtavaks.

Miks kasutada CI-d?

  • Aitab teil luua kvaliteetsemat tarkvara ja läbi viia korduvaid teste.
  • Skaleerib insenerimeeskondade väljundit ja võimaldab arendajatel funktsioonide kallal paralleelselt töötada.
  • Suurendab nähtavust ja suhtlust meeskonnas.
  • Annab kohest tagasisidet probleemi ilmnemisel ja vähendab riski, muutes juurutamise kiiremaks ja prognoositavamaks.
  • Väldib viimase hetke segadust avaldamise ajal.

CI-süsteemide kasutamise parimad tavad

  • Tehke muudatusi varakult ja sageli ning ärge kunagi tehke vigast koodi.
  • Parandage ehitusvead koheselt ja tegutsege mõõdikute põhjal.
  • Ehita igas sihtkeskkonnas ja loo igast ehitusest artefakte.
  • Automatiseeri ehitus nii, et see ei sõltuks IDE-st.
  • Ehita ja testi kõike vastavalt muudatustele, sh andmebaasi skeemi.
  • Hoidke ehitus kiire ja kasutage automatiseeritud juurutamist.

CI puudused

  • CI-serveriga harjumiseks on vaja esialgset seadistamisaega ja koolitust.
  • Tuleb välja töötada sobivad testimisprotseduurid ja hästi üles ehitatud testikomplekt vajab märkimisväärseid ressursse.
  • Tuttavad protsessid tuleb ümber ehitada ning vaja on täiendavaid servereid ja keskkondi.
  • Ooteajad võivad tekkida siis, kui mitu arendajat soovivad oma koodi korraga integreerida.

CI protsessi tööriistad

Jenkins

Jenkins on avatud lähtekoodiga pideva integratsiooni tööriist, mis on kirjutatud JavaSee hõlbustab reaalajas testimist ja üksikute muudatuste aruandlust suuremas koodibaasis ning aitab arendajatel defekte kiiresti leida ja lahendada, automatiseerides samal ajal ehitustestimist.

Bamboo

Bamboo on pideva integratsiooniga ehitusserver, mis teostab automatiseeritud ehitust, testimist ja avaldamist ühes kohas. See töötab sujuvalt Jira ja Bitbucket ja toetab paljusid tehnoloogiaid nagu Docker, Git, SVN, Mercurial ja AWS.

TeamCity

TeamCity on pideva integratsiooniga server paljude võimsate funktsioonidega. See hoiab CI-serveri terve ja stabiilsena isegi siis, kui ühtegi järku ei tööta, ning pakub igale projektile paremat koodikvaliteeti.

KKK

Pidev avaldamine hoiab iga muudatuse avaldatavana ja juurutatakse tootmiskeskkonda käsitsi kinnitamisega. Pidev avaldamine eemaldab selle piirangu, avaldades kõik muudatused, mis läbivad torujuhet automaatselt.

Tüüpiline torujuhe koosneb allika-, ehitus-, testimis-, avaldamis- ja juurutamisetappidest. Code versioonikontrollile pühendunud komponent kompileeritakse, testitakse automaatselt, seejärel valmistatakse ette ja avaldatakse tootmiskeskkonnas.

Integratsioonipõrgu on paljude arendajate tehtud muudatuste piinarikas liitmine, mis on salvestatud projekti lõpuni. Integratsioonipõrgu väldib seda väikeste muudatuste pideva integreerimise ja testimisega.

Muudatusi tuleb teha varakult ja sageli, vähemalt kord päevas, väikeste töömahuliste sammudega. Sagedased muudatused muudavad testimise, ühendamise ja vajadusel tagasivõtmise lihtsaks.

Ehitusartefakt on ehituse pakendatud väljund, näiteks JAR, konteineri kujutis või binaarfail. Sama artefakti reklaamitakse järjepidevuse tagamiseks nii testimise kui ka tootmise käigus.

Ise hostitud CI töötab teie hallatavates serverites, pakkudes täielikku kontrolli, aga rohkem hooldust. Majutatud (pilve) CI-d haldab teenusepakkuja ja see skaleerub hõlpsalt ilma infrastruktuuri haldamiseta.

Tehisintellekt ennustab, milliseid teste muudatuste korral käivitada, seab prioriteediks riskantsed valdkonnad ja automatiseerib tõrgete triaaži. See lühendab tagasiside aega ja hoiab torujuhtmed koodibaasi kasvades kiired.

Jah. Masinõppe mudelid tuvastavad teste, mis läbivad ja läbi kukuvad ebajärjekindlalt, klastriga seotud ehitustõrked ning toovad esile tõenäolise algpõhjuse.ping meeskonnad hoiavad torujuhtme töökindlana.

Võta see postitus kokku järgmiselt: