Referentna: kako funkcionira proces kontinuirane integracije

Danas ćemo se osvrnuti na povijest termina, raspraviti o izazovima implementacije CI-a i navesti nekoliko popularnih alata koji će vam pomoći u radu s njim.

Referentna: kako funkcionira proces kontinuirane integracije
/ Flickr / Altug Karakoc / CC BY / Фото изменено

Termin

Continuous Integration (neprekidna integracija) je pristup razvoju aplikacija koji podrazumijeva učestalo izvođenje gradnji projekta i testiranje koda.

Cilj je učiniti proces integracije predvidivim i otkriti potencijalne greške i pogreške u ranoj fazi, kako bi se imalo više vremena za njihovo ispravljanje.

Termin Continuous Integration prvi je puta upotrijebljen 1991. godine. Uveo ga je tvorac jezika UML Grady Booch (Grady Booch). Inženjer je predstavio CI koncept kao dio vlastite prakse razvoja — Booch metoda. Podrazumijevao je inkrementalno usavršavanje arhitekture pri dizajniranju sustava objektno-orijentirane arhitekture. Grady nije opisao zahtjeve za kontinuiranu integraciju. No, kasnije je u svojoj knjizi „Object-Oriented Analysis and Design with Applications“ naveo da je cilj metode ubrzati izbacivanje „internih izdanja”.

Povijest

Godine 1996. CI su preuzeli tvorci metodologije ekstremnog programiranja (XP) — Kent Beck (Kent Beck) i Ron Jeffries (Ron Jeffries). Kontinuirana integracija postala je jedan od dvanaest ključnih principa njihovog pristupa. Osnivači XP-a su precizirali zahtjeve za CI metodologiju i istaknuli potrebu za izvođenjem gradnje projekta nekoliko puta dnevno.

Početkom 2000-ih metodologiju kontinuirane integracije počeo je promovirati jedan od osnivača Agile Alliance Martin Fowler (Martin Fowler). Njegovi eksperimenti s CI-jem doveli su do pojave prvog softverskog alata u toj oblasti — CruiseControl. Alat je stvorio Martinov kolega — Matthew Foemmel.

Ciklus gradnje u alatu je realiziran kao demon koji povremeno provjerava sustav za upravljanje verzijama na promjene u kodnoj bazi. Rješenje je moguće preuzeti i danas — pod je distribuira se BSD-sličnom licencom.

S pojavom softvera za CI prakse su sve više usvajale razne kompanije. Prema istraživanju Forrester [str.5 izvještaja], u 2009. godini 86% od pedeset anketiranih tehnoloških kompanija koristilo je ili implementiralo CI metodologije.

Danas se praksa kontinuirane integracije koristi od strane organizacija iz raznih industrija. U 2018. godini veliki pružatelj oblaka proveo je anketu među IT stručnjacima kompanija iz sektora usluga, obrazovanja i financija. Od šest tisuća ispitanika, 58% je odgovorilo da koristi alate i principe CI u svom radu.

Kako to funkcionira

Osnovu kontinuirane integracije čine dva alata — sustav kontrole verzija i CI poslužitelj. Potonji može biti fizički uređaj ili virtualna mašina u oblaku. Programeri jednom ili više puta dnevno učitavaju novi kod. CI poslužitelj automatski ga kopira sa svim zavisnostima i izvršava izgradnju. Nakon toga pokreće integracijske i jedinične testove. Ako testovi prođu uspješno, CI sustav implementira kod.

Opću shemu procesa možemo predstaviti na sljedeći način:

Referentna: kako funkcionira proces kontinuirane integracije

Metodologija CI postavlja niz zahtjeva prema programerima:

  • Odmah ispraviti probleme. Ova načela preuzeta su iz ekstremnog programiranja. Ispravljanje grešaka je najprioritetniji zadatak programera.
  • Automatizirati procese. Programeri i menadžeri moraju konstantno tražiti "uska grla" u procesu integracije i uklanjati ih. Na primjer, često je "usko grlo" integracije testiranje. testiranje.
  • Izvoditi izgradnje što je češće moguće. Jednom dnevno, kako bi se uskladila suradnja tima.

Teškoće u implementaciji

Prvi problem su visoki operativni troškovi. Čak i ako kompanija koristi otvorene CI alate (o kojima ćemo razgovarati kasnije), i dalje će morati potrošiti novac na održavanje infrastrukture. Međutim, rješenje mogu biti oblacne tehnologije.

Olakšavaju izgradnju raznoraznih računalnih konfiguracija. Plus, kompanije plaćaju samo za korištene resurse, što pomaže u štednji na infrastrukturi.

Prema anketama [str.14 članaka], kontinuirana integracija povećava opterećenje zaposlenika kompanije (barem u početku). Oni moraju svladati nove alate, a kolege ne pomažu uvijek s obukom. Stoga se moraju snalaziti s novim okvirima i servisima "u hodu".

Treća poteškoća su problemi s automatizacijom. S tim se suočavaju organizacije s velikim količinama legacy koda koji nije pokriven automatiziranim testovima. To dovodi do toga da se kod jednostavno prekraja prije punog uvođenja CI.

Referentna: kako funkcionira proces kontinuirane integracije
/ Flickr / theilr / CC BY-SA

Tko koristi

Jedni od prvih koji su prepoznali prednosti metode su IT divovi. Google koristi je uveo neprekidnu integraciju sredinom 2000-ih. CI je implementiran kako bi riješio problem s kašnjenjem u radu pretraživača. Neprekinuta integracija je pomogla brzo otkrivanje i otklanjanje problema. Danas sve IT divizije koriste CI.

Neprekinuta integracija također pomaže i manjim tvrtkama, a alati CI koriste i financijske i zdravstvene organizacije. Na primjer, u Morningstar, usluge neprekidne integracije su pomogle u zakrpanju ranjivosti 70% brže. A zdravstvena platforma Philips Healthcare uspjela je udvostručiti brzinu testiranja ažuriranja.

Alati

Evo nekoliko popularnih alata za CI:

  • Jenkins je jedan od najpopularnijih CI sustava. Podržava više od tisuću dodataka za integraciju s različitim VCS-ovima, oblacima i drugim uslugama. Jenkins koristimo i mi u 1cloud: alat je dio našeg DevOps sustava. Redovito provjerava Git granu namijenjenu testiranju.
  • Buildbot je Python okvir za pisanje vlastitih procesa neprekidne integracije. Početna konfiguracija alata prilično je složena, no to se nadoknađuje širokim mogućnostima prilagodbe. Među prednostima okvira korisnici ističu nisku potrošnju resursa.
  • Concourse CI je poslužitelj od Pivotal-a koji koristi Docker kontejnere. Concourse CI se integrira s bilo kojim alatima i sustavima kontrole verzija. Razvijači ističu da je sustav prikladan za rad u tvrtkama svih veličina.
  • Gitlab CI je alat koji je ugrađen u sustav kontrole verzija GitLab. Usluga radi u oblaku i koristi YAML datoteke za konfiguraciju. Kao i Concourse, Gitlab CI koristi Docker kontejnere koji pomažu u izolaciji različitih procesa jednih od drugih.
  • Codeship — oblačni CI poslužitelj koji radi s GitHubom, GitLabom i BitBucketom. Platforma ne zahtijeva dugotrajno početno postavljanje — u Codeshipu su dostupni standardni unaprijed instalirani CI procesi. Za male (do 100 izrada mjesečno) i open source projekte, Codeship je dostupan besplatno.

Materijali iz našeg korporativnog bloga:

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster