Mikä on CI/CD? Jatkuva integrointi ja jatkuva toimitus

Mikä on jatkuva integrointi (CI)?

Jatkuva integraatio on ohjelmistokehitysmenetelmä, jossa tiimin jäsenet integroivat työnsä vähintään kerran päivässä. Tässä menetelmässä automaattinen koontiversio tarkistaa jokaisen integroinnin virheiden havaitsemiseksi. Tämä konsepti esiteltiin ensimmäisen kerran yli kaksi vuosikymmentä sitten, jotta vältetään "integraatiohelvetti", joka tapahtuu, kun integraatio lykätään projektin loppuun.

Jatkuvassa integraatiossa koodin vahvistamisen jälkeen ohjelmisto rakennetaan ja testataan välittömästi. Suuressa projektissa, jossa on paljon kehittäjiä, sitoumuksia tehdään monta kertaa päivässä. Jokaisella toimituskoodilla rakennetaan ja testataan. Jos testi läpäistään, koontiversio testataan käyttöönottoa varten. Jos käyttöönotto onnistuu, koodi siirretään tuotantoon. Tämä sitoutuminen, rakentaminen, testaus ja käyttöönotto on jatkuva prosessi, ja siitä syystä nimi jatkuva integrointi/käyttöönotto.

Mikä on jatkuva toimitus (CD)?

Jatkuva Toimitus on ohjelmistosuunnittelumenetelmä, jossa tiimi kehittää ohjelmistotuotteita lyhyessä syklissä. Se varmistaa, että ohjelmisto voidaan julkaista helposti milloin tahansa. Jatkuvan toimituksen päätavoitteena on rakentaa, testata ja julkaista ohjelmistoja hyvällä nopeudella ja taajuudella. Se auttaa sinua vähentämään kustannuksia, aikaa ja riskiä muutosten toimittamisesta sallimalla säännölliset päivitykset tuotannossa.

Mitä eroa on CI:llä ja CD:llä?

CI vs CD: Continuous Integration (CI) on lähestymistapa, jossa jokainen koodikannan muutos testataan automaattisesti, kun taas Continuous Delivery (CD) on tapa saada muutoksia uusiin ominaisuuksiin, kokoonpanoon ja virheenkorjauksiin.

Kehitys ilman CI:tä vs. kehittäminen CI:n kanssa

Tässä ovat tärkeimmät erot CI:tä käyttävän tai ilman CI:tä käyttävän kehityksen välillä:

Kehitys ilman CI:tä Kehitys CI:n kanssa
Paljon bugeja Vähemmän bugeja
Harvoin sitoutuu Säännölliset sitoumukset
Harvoin ja hitaita julkaisuja Säännölliset työjulkaisut
Vaikea integrointi Helppo ja tehokas integrointi
Testaus tapahtuu myöhään Jatkuva integraatiotestaus tapahtuu aikaisin ja usein.
Esiin tulleita ongelmia on vaikeampi korjata Löydä ja korjaa ongelmat nopeammin ja tehokkaammin.
Huono projektin näkyvyys Parempi hankkeen näkyvyys

Ero kokoamisen ja jatkuvan integroinnin välillä

Toiminta jatkuvassa integraatiossa
Toiminta jatkuvassa integraatiossa

Kääntäminen vain kääntää koodin, mutta CI suorittaa seuraavat toiminnot

DB-integraatio

  • Varmista, että tietokanta ja koodi ovat synkronoituja
  • DB- ja testitietojen automaattinen luominen.

Koodin tarkastus

  • Varmistaa terveen koodikannan
  • Tunnistaa ongelmat ajoissa ja soveltaa parhaita käytäntöjä

Automaattinen käyttöönotto

  • Voit vapauttaa tuotteen milloin tahansa
  • Jatkuvasti demokelpoinen tila ja toimii kaikilla koneilla

Asiakirjan luominen

  • Varmista, että asiakirjat ovat ajan tasalla
  • Poistaa palaneen kehitteestä
  • Tuottaa rakentamisraportteja ja mittareita

Compilation

Kääntäminen on prosessi, jonka tietokone suorittaa muuntaakseen korkean tason ohjelmointikielen koodin konekieleksi, jota tietokone pystyy ymmärtämään. Se varmistaa koodin kääntäjän jokaiselle kohdealustalle.

Milloin rakennan?

  • Jokaisella sisäänkirjautumisella
  • Joka kerta kun riippuvuus muuttuu

Mitä vaiheita jatkuvassa integraatiossa on?

CI-prosessi
CI-prosessi
  • Ihannetapauksessa koontiversion tulisi tulla komentoriviltä eikä se saisi riippua integroidusta kehitysympäristöstä (IDE).
  • Rakentamisen tulisi tapahtua jatkuvasti käyttämällä erillistä Cl-palvelinta, ei cron-työtä.
  • CI built tulisi käynnistää jokaisen sisäänkirjautumisen yhteydessä, ei vain keskiyöllä
  • Rakennuksen tulee antaa välitöntä palautetta, eikä se vaadi kehittäjän vaivaa
  • Tunnista tärkeimmät tiedot ja seuraa niitä visuaalisesti. Vielä tärkeämpää on toimia niiden mukaisesti välittömästi

Mitä tarvitset CI-prosessin suorittamiseen?

Suorita CI-prosessi

Tässä ovat avainelementit, joita tarvitset koko CI-prosessin suorittamiseen:

  • Versionhallintajärjestelmä (VCS): Se tarjoaa luotettavan tavan keskittää ja säilyttää projektiisi ajan mittaan tehdyt muutokset.
  • Virtuaalikone: Sinulla pitäisi olla ylimääräinen palvelin tai ainakin yksi virtuaalikone rakentaaksesi järjestelmäsi.
  • Isännöidyt CI-työkaluratkaisut: Palvelimien tai virtuaalikoneiden välttämiseksi sinun kannattaa valita isännöity CI-työkaluratkaisu. Tämä työkalu auttaa ylläpitämään koko prosessia ja tarjoaa helpomman skaalautuvuuden.
  • Työkalut: Jos valitset itseisännöidyn version, sinun on asennettava yksi monista CI-työkalut kuten Jenkins, TeamCity, Bamboo, GitLab jne.

Miten jatkuva integrointi toimii?

Olet varmasti tietoinen vanhasta Nokia-puhelimesta. Nokia otti käyttöön menettelyn, jota kutsutaan nimellä nightly build. Kun useat eri kehittäjät ovat tehneet päivän aikana useita sitoumuksia, ohjelmisto kehitettiin joka ilta. Koska ohjelmisto rakennettiin vain kerran päivässä, on valtava tuska eristää, tunnistaa ja korjata virheet suuressa koodikannassa.

Later, he omaksuivat jatkuvan integroinnin lähestymistavan. Ohjelmisto rakennettiin ja testattiin heti, kun kehittäjä sitoutui koodiin. Jos jokin virhe havaitaan, vastaava kehittäjä voi korjata vian nopeasti.

Esimerkki jatkuvasta integroinnista
Esimerkki jatkuvasta integroinnista

CI:n ominaisuudet

Tässä on jatkuvan integroinnin tärkeitä ominaisuuksia ja etuja:

  • Mahdollistaa vain yhden lähdetietovaraston ylläpitämisen
  • Voit testata tuotanto-CI-ympäristön kloonia
  • Rakennetun ympäristön tulee olla lähellä tuotantoympäristöä.
  • Yksi jatkuvan integroinnin eduista on nykyisen koontiversion jatkuva saatavuus
  • Koko rakennus-, testaus- ja käyttöönottoprosessin tulee olla nähtävissä kaikille pinonhaltijoille.

Miksi käyttää CI:tä?

Tässä on tärkeitä syitä käyttää jatkuvaa integrointia:

  • Auttaa sinua rakentamaan laadukkaampia ohjelmistoja
  • CI-prosessi auttaa lisäämään suunnittelutiimien henkilöstömäärää ja toimitusten tuottoa.
  • CI:n avulla ohjelmistokehittäjät voivat työskennellä itsenäisesti ominaisuuksien parissa rinnakkain.
  • Auttaa suorittamaan toistettavia testejä
  • Lisää näkyvyyttä mahdollistaen paremman viestinnän
  • Auttaa kehittämään mahdollisesti toimitettavan tuotteen täysin automatisoitua rakentamista varten
  • Auttaa vähentämään riskejä tekemällä käyttöönotosta nopeampaa ja ennakoitavampaa
  • välitön palaute ongelman saapuessa
  • Vältä viime hetken sekaannuksia julkaisupäivämäärässä ja -ajoissa

CI-järjestelmien käytön parhaat käytännöt

Tässä on joitain tärkeitä parhaita käytäntöjä käyttöönoton aikana

  • Sitoudu aikaisin ja sitoudu usein, älä koskaan tee rikkinäistä koodia
  • Korjaa rakennusvirheet välittömästi
  • Toimi mittareilla
  • Sisäänrakennettu jokaiseen kohdeympäristöön Luo artefakteja jokaisesta rakennuksesta
  • Ohjelmiston rakentaminen on suoritettava niin, että se voidaan automatisoida
  • Älä ole riippuvainen IDE:stä
  • Rakenna ja testaa kaikkea, kun se muuttuu
  • Tietokantaskeema lasketaan kaikkeen
  • Auttaa sinua löytämään tärkeimmät tiedot ja seuraamaan niitä visuaalisesti
  • Sisäänkirjautuminen usein ja aikaisin
  • Vahvempi lähdekoodin hallinta
  • Jatkuva integrointi suorittaa yksikkötestejä aina, kun sitoudut koodiin
  • Automatisoi rakennus ja testaa kaikkia
  • Pidä rakentaminen nopeana automaattisen käyttöönoton avulla

CI:n haitat

Tässä ovat jatkuvan integroinnin haitat / haitat:

  • Cl-palvelimeen tutustuminen vaatii alkuasennusaikaa ja koulutusta
  • Sopivien testimenetelmien kehittäminen on välttämätöntä
  • Hyvin kehitetty testipaketti vaati monia resursseja Cl-palvelimelta
  • Tuttujen prosessien muuntaminen
  • Vaatii lisäpalvelimia ja -ympäristöjä
  • Odotusaikoja saattaa esiintyä, kun useat kehittäjät haluavat integroida koodinsa suunnilleen samaan aikaan

Työkalut CI-prosessiin

Tässä on joitain tärkeimpiä CI/CD-työkaluja:

Jenkins

Jenkins

Jenkins on avoimen lähdekoodin jatkuva integrointiohjelmisto. Se on kirjoitettu käyttämällä Java ohjelmointikieli. Se helpottaa reaaliaikaista testausta ja yksittäisten muutosten raportointia massiivisessa koodikannassa. Tämä ohjelmisto auttaa kehittäjiä löytämään ja ratkaisemaan nopeasti virheitä koodikannassaan ja automatisoimaan versioidensa testauksen.

Bamboo

Bamboo

Bamboo on jatkuvan integroinnin koontipalvelin, joka suorittaa – automaattisen rakentamisen, testauksen ja julkaisun yhdessä paikassa. Se toimii saumattomasti JIRA-ohjelmiston ja Bitbucketin kanssa. Bamboo tukee monia kieliä ja teknologioita, kuten CodeDeply, Docker, Git, SVN, Mercurial, AWS ja Amazon S3 kauhat.

TeamCity

TeamCity

TeamCity on jatkuvan integroinnin palvelin, joka tukee monia tehokkaita ominaisuuksia. Se pitää CI-palvelimen terveenä ja vakaana, vaikka koontiversioita ei ole käynnissä. Se tarjoaa paremman koodin laadun kaikille projekteille

Yhteenveto

  • Jatkuva integrointi määritelmä: Jatkuva integrointi on ohjelmistokehitysmenetelmä, jossa tiimin jäsenet voivat integroida työnsä vähintään kerran päivässä
  • CI/CD tarkoittaa jatkuvan integroinnin ja jatkuvan toimituksen tai jatkuvan käyttöönoton yhdistelmää.
  • Kehitys ilman CI:tä luo paljon bugeja, kun taas kehitys CI:n kanssa tarjoaa vähemmän bugeja
  • Jatkuvan integroinnin tärkeitä toimintoja ovat 1) DB-integrointi, 2) koodin tarkastus, 3) automaattinen käyttöönotto, asiakirjojen luominen ja kääntäminen.
  • Rakentamisen tulisi tapahtua jatkuvasti käyttämällä erillistä Cl-palvelinta, ei cron-työtä.
  • CI:n tärkeitä elementtejä ovat 1) Version Control System 2) Virtual Machine 3) Host CI Tool -ratkaisut 4) Työkalut
  • Jatkuva integrointijärjestelmä mahdollistaa vain yhden lähdetietovaraston ylläpitämisen
  • CI/CD-prosessi auttaa sinua rakentamaan laadukkaampia ohjelmistoja
  • Tärkeimmät parhaat käytännöt Azure Jatkuva integrointiprosessi on sitoutua aikaisin ja sitoutua usein koskaan sitoutumaan rikkinäiseen koodiin
  • Suurin haittapuoli CI/CD-putki prosessi on, että hyvin kehittynyt testipaketti vaati monia resursseja Cl-palvelimelta
  • Jenkins, Bambook ja Team City ovat hyödyllisiä AWS Continuous Integrointityökalut.