Referenco: kiel funkcias la procezo de Kontinua Integriĝo

Hodiaŭ ni rigardos la historion de la termino, diskutos la malfacilaĵojn de efektivigo de CI kaj provizos plurajn popularajn ilojn, kiuj helpos vin labori kun ĝi.

Referenco: kiel funkcias la procezo de Kontinua Integriĝo
/flickr/ Altug Karakoc / CC BY / Foto modifita

La termino

Kontinua Integriĝo estas aliro al aplikaĵo-disvolviĝo, kiu implikas oftajn projektokonstruojn kaj kodtestadon.

La celo estas igi la integrigan procezon antaŭvidebla kaj detekti eventualajn erarojn kaj erarojn en frua etapo, por ke estu pli da tempo por ripari ilin.

La esprimo Continuous Integration unue aperis en 1991. Ĝi estis lanĉita fare de la kreinto de la UML-lingvo Grady Butch (Grady Booch). La inĝeniero lanĉis la koncepton de CI kiel parton de sia propra evolupraktiko - Booch metodo. Ĝi implicis pliigan rafinadon de la arkitekturo dum dizajnado de objektorientitaj sistemoj. Gradi ne priskribis iujn ajn postulojn por kontinua integriĝo. Sed poste en lia libro "Objekt-Orientita Analizo kaj Dezajno kun Aplikoj"Li diris, ke la celo de la metodaro estas akceli la liberigon de "internaj eldonoj".

История

En 1996, CI estis adoptita fare de la kreintoj de la metodaro ekstrema programado (XP) - Kent Beck (Kent Beck) kaj Ron Jeffries (Ron Jeffries). Kontinua integriĝo iĝis unu el la dek du esencaj principoj de ilia aliro. La fondintoj de XP klarigis la postulojn por la CI-metodaro kaj rimarkis la bezonon konstrui la projekton plurfoje tage.

En la fruaj 2000-aj jaroj, unu el la fondintoj de la Agile Alliance komencis reklami la kontinuan integrigan metodaron. Martin Fowler (Martin Fowler). Liaj eksperimentoj kun CI kondukis al la unua programara ilo en ĉi tiu areo - CruiseControl. La utileco estis kreita de la kolego de Martin, Matthew Foemmel.

La konstruciklo en la ilo estas efektivigita kiel demono kiu periode kontrolas la versiokontrolsistemon por ŝanĝoj en la kodbazo. La solvo estas elŝutebla hodiaŭ - ĝi distribuita de sub BSD-simila permesilo.

Kun la apero de programaro por CI, pli kaj pli da kompanioj komencis adopti la praktikon. Laŭ Forrester-esploro [paĝo 5 raporto], en 2009, 86% de la kvindek teknologiaj kompanioj prienketitaj uzis aŭ efektivigis CI-metodojn.

Hodiaŭ, la praktiko de Kontinua Integriĝo estas uzata de organizoj de ampleksa vario de industrioj. En 2018, granda nuba provizanto faris enketon inter IT-specialistoj de kompanioj en la servoj, edukado kaj financaj sektoroj. El la ses mil respondintoj, 58% diris, ke ili uzas CI ilojn kaj principojn en sia laboro.

Kiel tio funkcias

Kontinua integriĝo baziĝas sur du iloj: versio-kontrolsistemo kaj CI-servilo. Ĉi-lasta povas esti aŭ fizika aparato aŭ virtuala maŝino en nuba medio. Programistoj alŝutas novan kodon unu aŭ plurajn fojojn tage. La CI-servilo aŭtomate kopias ĝin kun ĉiuj dependecoj kaj konstruas ĝin. Poste, ĝi prizorgas integriĝon kaj unutestojn. Se la testoj sukcesas, la CI-sistemo deplojas la kodon.

La ĝenerala procezdiagramo povas esti reprezentita jene:

Referenco: kiel funkcias la procezo de Kontinua Integriĝo

La CI-metodaro faras kelkajn postulojn por programistoj:

  • Korektu problemojn tuj. Ĉi tiu principo venis al CI de ekstrema programado. Ripari cimojn estas la plej alta prioritato de la programistoj.
  • Aŭtomatigi procezojn. Programistoj kaj administrantoj devas konstante serĉi botelojn en la integriga procezo kaj forigi ilin. Ekzemple, ofte estas proplemkolo en integriĝo rezultas testado.
  • Faru asembleojn kiel eble plej ofte. Unufoje tage por sinkronigi la laboron de la teamo.

Efektivigaj malfacilaĵoj

La unua problemo estas altaj operaciaj kostoj. Eĉ se kompanio uzas malfermajn CI-ilojn (pri kiuj ni parolos poste), ĝi ankoraŭ devos elspezi monon por infrastruktura subteno. Tamen, nubaj teknologioj povas esti la solvo.

Ili simpligas la muntadon de malskalaj komputilaj agordoj. Plie de la kompanio pagi nur por la uzataj rimedoj, kio helpas ŝpari infrastrukturon.

Laŭ enketoj [paĝo 14 artikoloj], kontinua integriĝo pliigas la ŝarĝon sur firmaaj dungitoj (almenaŭ komence). Ili devas lerni novajn ilojn, kaj kolegoj ne ĉiam helpas kun trejnado. Sekve, vi devas trakti novajn kadrojn kaj servojn survoje.

La tria malfacilaĵo estas problemoj kun aŭtomatigo. Organizoj kun granda kvanto da hereda kodo, kiu ne estas kovrita de aŭtomataj testoj, alfrontas ĉi tiun problemon. Ĉi tio kondukas al la fakto, ke la kodo estas simple reverkita antaŭ la plena efektivigo de CI.

Referenco: kiel funkcias la procezo de Kontinua Integriĝo
/flickr/ theilr / CC BY-SA

Kiu uzas

IT-gigantoj estis inter la unuaj se temas pri aprezi la avantaĝojn de la metodaro. Guglo uzoj kontinua integriĝo ekde la mez-2000-aj jaroj. CI estis efektivigita por solvi la problemon de malfruoj en la serĉilo. Daŭra integriĝo helpis rapide detekti kaj solvi problemojn. Nun CI estas uzata de ĉiuj fakoj de la IT-giganto.

Daŭra integriĝo ankaŭ helpas malgrandajn kompaniojn, kaj CI-iloj ankaŭ estas uzataj de financaj kaj sanorganizoj. Ekzemple, ĉe Morningstar, kontinuaj integrigaj servoj helpis fliki vundeblecojn 70% pli rapide. Kaj la medicina platformo Philips Healthcare povis duobligi la rapidecon de testaj ĝisdatigoj.

Iloj

Jen kelkaj popularaj iloj por CI:

  • Jenkins estas unu el la plej popularaj CI-sistemoj. Ĝi subtenas pli ol mil kromaĵojn por integriĝo kun diversaj VCS, nubaj platformoj kaj aliaj servoj. Ni ankaŭ uzas Jenkins ĉe 1cloud: tool inkluzivita en nia DevOps-sistemo. Li regule kontrolas la Git-branĉon celitan por testado.
  • Buildbot — python-kadro por verki viajn proprajn kontinuajn integrigajn procezojn. La komenca agordo de la ilo estas sufiĉe komplika, sed ĉi tio estas kompensita per la larĝaj agordaj elektoj. Inter la avantaĝoj de la kadro, uzantoj reliefigas ĝian malaltan rimedintensecon.
  • Kunkuro CI estas servilo de Pivotal, kiu uzas Docker-ujojn. Concourse CI integriĝas kun iuj iloj kaj versio-kontrolsistemoj. La programistoj rimarkas, ke la sistemo taŭgas por laboro en kompanioj de ajna grandeco.
  • Gitlab CI estas ilo enkonstruita en la versikontrolsistemon de GitLab. La servo funkcias en la nubo kaj uzas YAML-dosierojn por agordo. Kiel Concourse, Gitlab CI aplikas Docker-ujoj, kiuj helpas izoli malsamajn procezojn unu de la alia.
  • Kodeco estas nuba CI-servilo kiu funkcias kun GitHub, GitLab kaj BitBucket. La platformo ne postulas longan komencan aranĝon - normaj antaŭinstalitaj CI-procezoj haveblas en Codeship. Por malgrandaj (ĝis 100 konstruoj monate) kaj malfermfontaj projektoj, Codeship disponeblas senpage.

Materialoj de nia kompania blogo:

fonto: www.habr.com

Aldoni komenton