Mis on CI/CD? Pidev integreerimine ja pidev kohaletoimetamine

Mis on pidev integreerimine (CI)?

Pidev integreerimine on tarkvara arendusmeetod, kus meeskonnaliikmed integreerivad oma tรถรถd vรคhemalt korra pรคevas. Selle meetodi puhul kontrollib vigade tuvastamiseks iga integratsiooni automaatne ehitamine. Seda kontseptsiooni tutvustati esmakordselt รผle kahe aastakรผmne tagasi, et vรคltida "integratsioonipรตrgut", mis juhtub siis, kui integreerimine lรผkatakse projekti lรตpuni.

Pidevas integratsioonis pรคrast koodi kinnitamist luuakse ja testitakse tarkvara kohe. Suures projektis, kus on palju arendajaid, tehakse kohustusi pรคeva jooksul mitu korda. Iga commit koodi koostatakse ja testitakse. Kui test lรคbitakse, testitakse ehitamist juurutamiseks. Kui juurutamine รตnnestub, lรผkatakse kood tootmisse. See sidumine, koostamine, testimine ja juurutamine on pidev protsess ja sellest ka nimi pidev integreerimine/juurutamine.

Mis on pidev kohaletoimetamine (CD)?

Pidev kohaletoimetamine on tarkvaratehnika meetod, mille kรคigus meeskond arendab tarkvaratooteid lรผhikese tsรผkli jooksul. See tagab, et tarkvara saab igal ajal hรตlpsasti vรคlja anda. Pideva tarnimise peamine eesmรคrk on hea kiiruse ja sagedusega tarkvara koostamine, testimine ja vabastamine. See aitab teil vรคhendada muudatuste tegemise kulusid, aega ja riski, vรตimaldades tootmises sagedasi vรคrskendusi.

Mis vahe on CI ja CD vahel?

CI vs CD: Continuous Integration (CI) on lรคhenemisviis, mille abil testitakse automaatselt iga koodibaasi muudatust, samas kui pidev edastamine (CD) on lรคhenemisviis uute funktsioonide, konfiguratsiooni ja veaparanduste muudatuste saamiseks.

Areng ilma CI-ta vs areng CI-ga

Siin on peamised erinevused CI abil vรตi ilma CIta arendamise vahel:

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 Pidev integratsiooni testimine toimub varakult ja sageli.
Tรตstatatud probleeme on raskem lahendada Leidke ja lahendage probleeme kiiremini ja tรตhusamalt.
Projekti halb nรคhtavus Parem projekti nรคhtavus

Erinevus kompileerimise ja pideva integreerimise vahel

Tegevused pidevas integratsioonis
Tegevused pidevas integratsioonis

Kui kompileerimine kompileerib ainult koodi, siis CI teeb jรคrgmisi tegevusi

DB integreerimine

  • Veenduge, et DB ja kood oleksid sรผnkroonis
  • DB ja testandmete automatiseeritud loomine.

Code รœlevaatus

  • Tagab terve koodibaasi
  • Tuvastab probleemid varakult ja rakendab parimaid tavasid

Automatiseeritud juurutamine

  • Vรตimaldab teil toodet igal ajal vabastada
  • Pidevalt demo-seeritav olek ja see tรถรถtab igal masinal

Dokumendi genereerimine

  • Veenduge, et dokumentatsioon on ajakohane
  • Eemaldab pรตlenud arendajalt
  • Koostab ehitusaruandeid ja mรตรตdikuid

Koostamine

Kompileerimine on protsess, mida arvuti kasutab kรตrgetasemelise programmeerimiskeele koodi teisendamiseks masinakeeleks, millest arvuti aru saab. See tagab koodikompilaatori igal sihtplatvormil.

Millal ma ehitan?

  • Igal sisseregistreerimisel
  • Iga kord, kui sรตltuvus muutub

Millised sammud on pidevas integratsioonis?

CI protsess
CI protsess
  • Ideaalis peaks ehitamine pรคrinema kรคsurealt ega tohiks sรตltuda integreeritud arenduskeskkonnast (IDE).
  • Ehitamine peaks toimuma pidevalt, kasutades spetsiaalset Cl-serverit, mitte cron-tรถรถd.
  • CI ehitatud peaks kรคivituma igal sisseregistreerimisel ja mitte ainult sรผdaรถรถl
  • Jรคrel peaks andma kohest tagasisidet ega vaja arendaja pingutusi
  • Tuvastage peamised nรคitajad ja tracTunne neid visuaalselt. Veelgi olulisem on tegutseda kohe.

Mida on vaja CI-protsessi lรคbiviimiseks?

Viige lรคbi CI-protsess

Siin on pรตhielemendid, mida vajate kogu CI protsessi lรคbiviimiseks.

  • Versioonikontrollisรผsteem (VCS): See pakub usaldusvรครคrset meetodit teie projekti aja jooksul tehtud muudatuste tsentraliseerimiseks ja sรคilitamiseks.
  • Virtuaalne masin: Teil peaks olema varuserver vรตi vรคhemalt รผks virtuaalne masin oma sรผsteemi รผlesehitamiseks.
  • Hostitud CI tรถรถriista lahendused: Serverite vรตi virtuaalmasinate vรคltimiseks peaksite kasutama hostitud CI tรถรถriistalahendusi. See tรถรถriist aitab kogu protsessi hooldada ja pakub lihtsamat skaleeritavust.
  • Vahendid: Kui valite isehostitava variandi, peate installima รผhe paljudest CI tรถรถriistad nagu Jenkins, TeamCity, Bamboo, GitLab jne.

Kuidas pidev integreerimine tรถรถtab?

Olete kindlasti teadlik vanast telefonist Nokiast. Nokia rakendas รถise ehitamise protseduuri. Pรคrast mitmete arendajate poolt pรคeva jooksul tehtud mitmeid kohustusi ehitati tarkvara igal รตhtul. Kuna tarkvara ehitati ainult รผks kord pรคevas, on suures koodibaasi vigade eraldamine, tuvastamine ja parandamine tohutu valu.

Latervรตtsid nad kasutusele pideva integratsiooni lรคhenemisviisi. Tarkvara ehitati ja testiti niipea, kui arendaja koodi sisestas. Kui mรตni viga avastatakse, saab vastav arendaja vea kiiresti parandada.

Pideva integratsiooni nรคide
Pideva integratsiooni nรคide

CI omadused

Siin on pideva integreerimise olulised funktsioonid ja eelised:

  • Vรตimaldab teil sรคilitada ainult รผhte allikahoidlat
  • Saate testida tootmis-CI keskkonna klooni
  • Ehitatud keskkond peaks olema tootmiskeskkonnale lรคhedane.
  • รœks pideva integreerimise eeliseid on praeguse jรคrgu pidev kรคttesaadavus
  • Kogu koostamise, testimise ja juurutamise protsess peaks olema nรคhtav kรตigile virnaomanikele.

Miks kasutada CI-d?

Siin on olulised pรตhjused pideva integratsiooni kasutamiseks.

  • Aitab luua parema kvaliteediga tarkvara
  • CI-protsess aitab suurendada insenerimeeskondade tรถรถtajate arvu ja tarnimise vรคljundit.
  • CI vรตimaldab tarkvaraarendajatel paralleelselt funktsioonidega iseseisvalt tรถรถtada.
  • Aitab lรคbi viia korduvaid katseid
  • Suurendage nรคhtavust, vรตimaldades paremat suhtlust
  • Aitab tรคielikult automatiseeritud ehitamiseks vรคlja tรถรถtada potentsiaalselt tarnitava toote
  • Aitab teil riske vรคhendada, muutes juurutamise kiiremaks ja prognoositavamaks
  • kohene tagasiside probleemi saabumisel
  • Vรคltige viimase hetke segadust avaldamise kuupรคeva ja ajastuse osas

CI-sรผsteemide kasutamise parimad tavad

Siin on mรตned olulised parimad tavad rakendamisel

  • Pรผhendu varakult ja pรผhendu sageli mitte kunagi. Code
  • Parandage ehitamise tรตrked kohe
  • Tegutsege mรตรตdikute jรคrgi
  • Sisseehitatud iga sihtkeskkond Looge igast jรคrgust artefakte
  • Tarkvara ehitamine peab toimuma nii, et seda saaks automatiseerida
  • ร„rge sรตltuge IDE-st
  • Ehitage ja katsetage kรตike, kui see muutub
  • Andmebaasi skeem loetakse kรตigeks
  • Aitab teil vรคlja selgitada peamised nรคitajad ja tractunne neid visuaalselt
  • Registreeruge sageli ja varakult
  • Tugevam lรคhtekoodi kontroll
  • Pidev integreerimine kรคivitab รผhikuteste alati, kui koodi sisestate
  • Automatiseerige ehitamine ja testige kรตiki
  • Hoidke ehitamine automaatse juurutamisega kiire

CI puudused

Siin on pideva integreerimise protsessi miinused / puudused:

  • Cl serveriga tutvumiseks on vajalik esmane seadistamise aeg ja koolitus
  • Sobivate katseprotseduuride vรคljatรถรถtamine on hรคdavajalik
  • Hรคsti arenenud testkomplekt nรตudis Cl-serveri jaoks palju ressursse
  • Tuntud protsesside teisendamine
  • Nรตuab tรคiendavaid servereid ja keskkondi
  • Ooteaeg vรตib tekkida, kui mitu arendajat soovivad oma koodi umbes samal ajal integreerida

Tรถรถriistad CI protsessi jaoks

Siin on mรตned kรตige olulisemad CI/CD tรถรถriistad:

Jenkins

Jenkins

Jenkins on avatud lรคhtekoodiga pideva integratsiooni tarkvara. See on kirjutatud kasutades Java programmeerimiskeel. See hรตlbustab reaalajas testimist ja รผksikute muudatuste aruandlust suuremas koodibaasis. See tarkvara aitab arendajatel kiiresti leida ja lahendada oma koodibaasi defekte ning automatiseerida nende ehituste testimist.

Bamboo

Bamboo

Bamboo on pideva integratsiooniga ehitusserver, mis teostab automaatset ehitust, testimist ja vรคljalaskeid รผhes kohas. See tรถรถtab sujuvalt JIRA tarkvaraga ja Bitbucket. Bamboo toetab paljusid keeli ja tehnoloogiaid, nรคiteks CodeDeply, Docker, Git, SVN, Mercurial, AWS ja Amazon S3 รคmbrid.

TeamCity

TeamCity

TeamCity on pideva integratsiooni server, mis toetab paljusid vรตimsaid funktsioone. See hoiab CI-serveri tervena ja stabiilsena isegi siis, kui รผhtegi jรคrgu ei tรถรถta. See tagab iga projekti jaoks parema koodikvaliteedi

kokkuvรตte

  • Pideva integratsiooni definitsioon: Pidev integreerimine on tarkvaraarendusmeetod, mille kรคigus meeskonnaliikmed saavad oma tรถรถd integreerida vรคhemalt kord pรคevas
  • CI/CD tรคhendab pideva integreerimise ja pideva tarnimise vรตi pideva juurutamise kombinatsiooni.
  • Arendus ilma CIta tekitab palju vigu, samas kui CI-ga arendamine pakub vรคhem vigu
  • Pideva integratsiooni olulised tegevused on 1) andmebaasi integratsioon, 2) Code Kontroll, 3) automatiseeritud juurutamine, dokumentide genereerimine ja kompileerimine.
  • Ehitamine peaks toimuma pidevalt, kasutades spetsiaalset Cl-serverit, mitte cron-tรถรถd.
  • CI olulised elemendid on 1) versioonihaldussรผsteem 2) virtuaalmasin 3) hosti CI tรถรถriista lahendused 4) tรถรถriistad
  • Pidev integratsioonisรผsteem vรตimaldab teil sรคilitada ainult รผhte allikahoidlat
  • CI/CD protsess aitab teil luua parema kvaliteediga tarkvara
  • Kรตige olulisemad parimad tavad Azure Pideva integratsiooni protsess seisneb varajases pรผhendumises ja sageli mitte kunagi pรผhendumises. Code
  • Selle peamine puudus CI/CD torujuhe Protsess seisneb selles, et hรคsti arenenud testkomplekt nรตudis Cl-serveri jaoks palju ressursse
  • Jenkins, Bambook ja Team City on mรตned kasulikud AWS Continuous Integratsiooni tรถรถriistad.

Vรตta see postitus kokku jรคrgmiselt: