Referanse: hvordan den kontinuerlige integrasjonsprosessen fungerer

I dag skal vi se på historien til begrepet, diskutere vanskelighetene med å implementere CI, og gi flere populære verktøy som vil hjelpe deg å jobbe med det.

Referanse: hvordan den kontinuerlige integrasjonsprosessen fungerer
/flickr/ Altug Karakoc / CC BY / Bilde endret

Term

Kontinuerlig integrasjon er en tilnærming til applikasjonsutvikling som involverer hyppige prosjektbygginger og kodetesting.

Målet er å gjøre integrasjonsprosessen forutsigbar og oppdage potensielle feil og feil på et tidlig stadium, slik at det blir mer tid til å fikse dem.

Begrepet kontinuerlig integrasjon dukket først opp i 1991. Det ble introdusert av skaperen av UML-språket Grady Butch (Grady Booch). Ingeniøren introduserte konseptet CI som en del av sin egen utviklingspraksis - Booch metode. Det innebar inkrementell foredling av arkitekturen ved utforming av objektorienterte systemer. Gradi beskrev ingen krav til kontinuerlig integrasjon. Men senere i sin bok "Objektorientert analyse og design med applikasjoner"Han sa at målet med metodikken er å fremskynde utgivelsen av "interne utgivelser."

Story

I 1996 ble CI adoptert av skaperne av metodikken ekstrem programmering (XP) - Kent Beck (Kent Beck) og Ron Jeffries (Ron Jeffries). Kontinuerlig integrasjon ble et av de tolv nøkkelprinsippene for deres tilnærming. Grunnleggerne av XP klargjorde kravene til CI-metodikken og bemerket behovet for å bygge prosjektet flere ganger om dagen.

På begynnelsen av 2000-tallet begynte en av grunnleggerne av Agile Alliance å fremme den kontinuerlige integrasjonsmetodikken Martin Fowler (Martin Fowler). Hans eksperimenter med CI førte til det første programvareverktøyet på dette området - CruiseControl. Verktøyet ble opprettet av Martins kollega, Matthew Foemmel.

Byggesyklusen i verktøyet er implementert som en demon som periodisk sjekker versjonskontrollsystemet for endringer i kodebasen. Løsningen kan lastes ned i dag - den distribuert av under en BSD-lignende lisens.

Med bruken av programvare for CI begynte flere og flere selskaper å ta i bruk praksisen. I følge Forrester-undersøkelser [side 5 rapportere], i 2009 brukte eller implementerte 86 % av de femti undersøkte teknologiselskapene CI-metoder.

I dag brukes kontinuerlig integrasjon av organisasjoner fra en rekke bransjer. I 2018 gjennomførte en stor skyleverandør en spørreundersøkelse blant IT-spesialister fra selskaper innen tjeneste-, utdannings- og finanssektoren. Av de seks tusen respondentene sa 58 % at de bruker CI-verktøy og prinsipper i sitt arbeid.

Hvordan fungerer det

Kontinuerlig integrasjon er basert på to verktøy: et versjonskontrollsystem og en CI-server. Sistnevnte kan enten være en fysisk enhet eller en virtuell maskin i et skymiljø. Utviklere laster opp ny kode én eller flere ganger om dagen. CI-serveren kopierer den automatisk med alle avhengighetene og bygger den. Etterpå kjører den integrasjon og enhetstester. Hvis testene blir bestått, distribuerer CI-systemet koden.

Det generelle prosessdiagrammet kan representeres som følger:

Referanse: hvordan den kontinuerlige integrasjonsprosessen fungerer

CI-metodikken stiller en rekke krav til utviklere:

  • Korriger problemer umiddelbart. Dette prinsippet kom til CI fra ekstrem programmering. Å fikse feil er utviklerens høyeste prioritet.
  • Automatiser prosesser. Utviklere og ledere må hele tiden se etter flaskehalser i integrasjonsprosessen og eliminere dem. For eksempel er det ofte en flaskehals i integreringen viser seg testing.
  • Gjennomfør samlinger så ofte som mulig. En gang om dagen for å synkronisere teamets arbeid.

Implementeringsvansker

Det første problemet er høye driftskostnader. Selv om et selskap bruker åpne CI-verktøy (som vi skal snakke om senere), vil det fortsatt måtte bruke penger på infrastrukturstøtte. Imidlertid kan skyteknologier være løsningen.

De forenkler sammenstillingen av datamaskinkonfigurasjoner i forskjellige skalaer. Pluss av selskapet betale kun for ressursene som brukes, noe som bidrar til å spare på infrastrukturen.

I følge undersøkelser [side 14 artikler], kontinuerlig integrasjon øker belastningen på selskapets ansatte (i hvert fall i begynnelsen). De må lære nye verktøy, og det er ikke alltid kollegaer hjelper til med opplæring. Derfor må du forholde deg til nye rammer og tjenester mens du er på farten.

Den tredje vanskeligheten er problemer med automatisering. Organisasjoner med en stor mengde eldre kode som ikke dekkes av automatiserte tester står overfor dette problemet. Dette fører til at koden ganske enkelt skrives om før full implementering av CI.

Referanse: hvordan den kontinuerlige integrasjonsprosessen fungerer
/flickr/ theilr / CC BY-SA

Hvem bruker

IT-gigantene var blant de første som satte pris på fordelene med metodikken. Google bruker kontinuerlig integrasjon siden midten av 2000-tallet. CI ble implementert for å løse problemet med forsinkelser i søkemotoren. Kontinuerlig integrasjon bidro til raskt å oppdage og løse problemer. Nå brukes CI av alle avdelinger i IT-giganten.

Kontinuerlig integrasjon hjelper også små bedrifter, og CI-verktøy brukes også av finans- og helseorganisasjoner. For eksempel, hos Morningstar hjalp kontinuerlige integrasjonstjenester med å reparere sårbarheter 70 % raskere. Og den medisinske plattformen Philips Healthcare var i stand til å doble hastigheten på testoppdateringer.

Verktøy

Her er noen populære verktøy for CI:

  • Jenkins er et av de mest populære CI-systemene. Den støtter mer enn tusen plugins for integrasjon med ulike VCS, skyplattformer og andre tjenester. Vi bruker også Jenkins på 1cloud: tool inkludert i vårt DevOps-system. Han sjekker jevnlig ut Git-grenen beregnet på testing.
  • Byggebot — et python-rammeverk for å skrive dine egne kontinuerlige integrasjonsprosesser. Det første oppsettet av verktøyet er ganske komplisert, men dette kompenseres av de brede tilpasningsalternativene. Blant fordelene med rammeverket fremhever brukerne dets lave ressursintensitet.
  • Concourse CI er en server fra Pivotal som bruker Docker-containere. Concourse CI integreres med alle verktøy og versjonskontrollsystemer. Utviklerne bemerker at systemet er egnet for arbeid i bedrifter av alle størrelser.
  • Gitlab CI er et verktøy innebygd i GitLab versjonskontrollsystem. Tjenesten kjører i skyen og bruker YAML-filer for konfigurasjon. Som Concourse, Gitlab CI gjelder Docker-containere som hjelper til med å isolere ulike prosesser fra hverandre.
  • Kodskap er en sky-CI-server som fungerer med GitHub, GitLab og BitBucket. Plattformen krever ikke lang innledende oppsett - standard forhåndsinstallerte CI-prosesser er tilgjengelige i Codeship. For små (opptil 100 bygg per måned) og åpen kildekode-prosjekter er Codeship tilgjengelig gratis.

Materialer fra bedriftsbloggen vår:

Kilde: www.habr.com

Legg til en kommentar