Što je Jenkins? Zašto koristiti alat za kontinuiranu integraciju (CI)?

Što je Jenkins?

Jenkins je open-source poslužitelj kontinuirane integracije napisan na Java za orkestriranje lanca radnji za postizanje procesa kontinuirane integracije na automatiziran način. Jenkins podržava kompletan životni ciklus razvoja softvera od izgradnje, testiranja, dokumentiranja softvera, implementacije i drugih faza životnog ciklusa razvoja softvera.

Jenkins je naširoko korištena aplikacija diljem svijeta koja ima oko 300 tisuća instalacija i raste iz dana u dan. Korištenjem Jenkinsa softverske tvrtke mogu ubrzati svoj proces razvoja softvera, budući da Jenkins može brzo automatizirati izradu i testiranje.

To je aplikacija temeljena na poslužitelju i zahtijeva web poslužitelj kao što je Apache Tomcat. Razlog zašto je softver Jenkins postao tako popularan je njegovo praćenje ponovljenih zadataka koji se pojavljuju tijekom razvoja projekta. Na primjer, ako vaš tim razvija projekt, Jenkins će kontinuirano testirati vaše građevine projekta i pokazati vam pogreške u ranim fazama vašeg razvoja.

Što je kontinuirana integracija?

Kontinuirana integracija je proces integriranja promjena koda od više programera u jednom projektu mnogo puta. Softver se testira odmah nakon uvrštavanja koda. Sa svakim prihvaćanjem koda, kod se gradi i testira. Ako je test prošao, međuverzija se testira za implementaciju. Ako je implementacija uspješna, kod se gura u proizvodnju.

Ovo predanje, izgradnja, testiranje i implementacija je kontinuirani proces i otuda naziv kontinuirana integracija/postavljanje.

Kako Jenkins radi?

Jenkins je aplikacija temeljena na poslužitelju i zahtijeva web poslužitelj kao što je Apache Tomcat za rad na raznim platformama kao što su Windows, Linux, macOS, Unix, itd. Da biste koristili Jenkins, morate stvoriti cjevovode koji su niz koraka koje će Jenkins poslužitelj poduzeti. Jenkins Continuous Integration Pipeline moćan je instrument koji se sastoji od skupa alata dizajniranih za domaćin, monitor, sastaviti i test kod ili promjene koda, kao što su:

  • Poslužitelj kontinuirane integracije (Jenkins, Bamboo, CruiseControl, TeamCity, i drugi)
  • Alat za kontrolu izvora (npr. CVS, SVN, GIT, Mercurial, Perforce, ClearCase i drugi)
  • Alat za izradu (Make, ANT, Maven, Ivy, Gradle, i drugi)
  • Okvir za testiranje automatizacije (Selenium, Appium, TestComplete, UFT i drugi)

Povijest Jenkina

  • Kohsuke Kawaguchi, a Java programer, koji je radio u SUN Microsystems, bio je umoran od izgradnje koda i stalnog popravljanja pogrešaka. Godine 2004. stvorio je poslužitelj za automatizaciju pod nazivom Hudson koji automatizira zadatak izgradnje i testiranja.
  • U 2011, Oracle koji je bio vlasnik Sun Microsystemsa, imao je spor s Hudson open source zajednicom, pa su račvali Hudson i preimenovali ga u Jenkins.
  • I Hudson i Jenkins nastavili su djelovati neovisno. Ali u kratkom vremenskom razdoblju, Jenkins je stekao puno projekata i suradnika, dok je Hudson ostao sa samo 32 projekta. S vremenom je Jenkins postao popularniji, a Hudson se više ne održava.

Zašto koristiti kontinuiranu integraciju s Jenkinsom?

Neki bi ljudi mogli pomisliti da je staromodan način razvoja softvera bolji način. Razmotrimo prednosti CI-ja s Jenkinsom na sljedećem primjeru

Zamislimo da postoji oko 10 programera koji rade na zajedničko spremište. Neki programeri dovrše svoj zadatak za 25 dana, dok drugima treba 30 dana.

Prije Jenkinsa Nakon Jenkinsa
Nakon što su svi programeri dovršili svoje dodijeljene zadatke kodiranja, svi su u isto vrijeme predavali svoj kod. Later, Build je testiran i implementiran.

Izgrađen je commit koda, a testni ciklus bio je vrlo rijedak, a jedna je izgradnja napravljena nakon mnogo dana.

Kôd se izrađuje i testira čim programer objavi kod. Jenkin će izgraditi i testirati kod mnogo puta tijekom dana

Ako je izgradnja uspješna, Jenkins će implementirati izvor na testni poslužitelj i obavijestiti tim za implementaciju.

Ako izrada ne uspije, Jenkins će o pogreškama obavijestiti razvojni tim.

Budući da je kôd napravljen odjednom, neki bi programeri morali čekati dok drugi programeri ne završe s kodiranjem kako bi provjerili svoju verziju Kôd se gradi odmah nakon bilo koje obveze programera.
Nije lak zadatak izolirati, otkriti i ispraviti pogreške za više uvrštavanja. Budući da se kod gradi nakon svakog uvrštavanja jednog programera, lako je otkriti čiji je kod uzrokovao neuspjeh izrade
Izrada koda i proces testiranja potpuno su ručne, tako da postoji mnogo mogućnosti kvara. Automatizirani proces izrade i testiranja štedi vrijeme i smanjuje nedostatke.
Kôd se implementira nakon što su sve pogreške ispravljene i testirane. Kod se implementira nakon svake uspješne izgradnje i testiranja.
Razvojni ciklus je spor Razvojni ciklus je brz. Nove značajke lakše su dostupne korisnicima. Povećava profit.

Studija slučaja kontinuirane integracije iz stvarnog svijeta

Siguran sam da svi znate za stari telefon Nokia. Nokia je provodila postupak koji se naziva noćna izgradnja. Nakon višestrukih obveza različitih programera tijekom dana, softver se gradio svake noći. Budući da se softver izrađuje samo jednom dnevno, velika je muka izolirati, identificirati i popraviti pogreške u velikoj bazi koda.

Later, usvojili su pristup kontinuirane integracije. Softver je napravljen i testiran čim je programer upisao kod. Ako se otkrije bilo kakva pogreška, dotični programer može brzo popraviti nedostatak.

Studija slučaja kontinuirane integracije u stvarnom svijetu

Jenkinsovi dodaci

Prema zadanim postavkama Jenkins dolazi s ograničenim skupom značajki. Ako želite integrirati svoju Jenkins instalaciju s alatima za kontrolu verzija kao što je Git, tada trebate instalirati dodatke povezane s Gitom. Zapravo, za integraciju s alatima kao što je Maven, Amazon EC2, trebate instalirati odgovarajuće dodatke u svoj Jenkins.

Jenkinsovi dodaci
Integracija dodataka u Jenkins

Prednosti korištenja Jenkinsa

  • Jenkinsom upravlja zajednica koja je vrlo otvorena. Svaki mjesec održavaju javne sastanke i uzimaju informacije od javnosti za razvoj Jenkinsovog projekta.
  • Do sada je zatvoreno oko 280 ulaznica, a projekt objavljuje stabilno izdanje svaka tri mjeseca.
  • Kako tehnologija raste, tako raste i Jenkins. Do sada Jenkins ima oko 320 dodataka objavljenih u svojoj bazi podataka dodataka. Uz dodatke, Jenkins postaje još moćniji i bogatiji značajkama.
  • Alat Jenkins također podržava arhitekturu temeljenu na oblaku tako da možete implementirati Jenkins na platforme temeljene na oblaku.
  • Razlog zašto je Jenkins postao popularan je taj što ga je stvorio programer za programere.

Nedostaci korištenja Jenkinsa

Iako je Jenkins vrlo moćan alat, ima svojih mana.

  • Njegovo sučelje je zastarjelo i nije prilagođeno korisniku u usporedbi s trenutnim trendovima korisničkog sučelja.
  • Iako Jenkinsa vole mnogi programeri, nije ga lako održavati jer Jenkins radi na poslužitelju i zahtijeva neke vještine kao administrator poslužitelja za praćenje njegove aktivnosti.
  • Jedan od razloga zašto mnogi ljudi ne implementiraju Jenkins je zbog poteškoća u instaliranju i konfiguriranju Jenkinsa.
  • Kontinuirane integracije redovito se prekidaju zbog malih promjena postavki. Kontinuirana integracija bit će pauzirana i stoga zahtijeva pozornost razvojnog programera.

Zaključak

  • U kontinuiranoj integraciji, nakon uvrštavanja koda, softver se odmah gradi i testira
  • Jenkins koji se koristi za orkestriranje lanca radnji za kontinuiranu integraciju u softverskom projektu
  • Prije Jenkinsa, kada su svi programeri dovršili svoje dodijeljene zadatke kodiranja, svi su predavali svoj kod u isto vrijeme. Later, Build je testiran i implementiran.
  • Nakon Jenkinsa, kod se gradi i testira čim programer preda kod. Jenkin će izgraditi i testirati kod mnogo puta tijekom dana
  • Prema zadanim postavkama Jenkins dolazi s ograničenim skupom značajki. Ako želite integrirati svoju Jenkins instalaciju s alatima za kontrolu verzija kao što je Git, tada trebate instalirati dodatke povezane s Gitom. Također provjerite Najbolji Jenkinsovi alternativni alati
  • Najveće prednosti Jenkinsa su to što njime upravlja zajednica koja održava javne sastanke i uzima informacije od javnosti za razvoj Jenkinsovih projekata
  • Najveća mana Jenkinsa je to što je njegovo sučelje zastarjelo i nije prilagođeno korisniku u usporedbi s trenutnim trendovima korisničkog sučelja. Ako razmišljate o drugim opcijama koje bi mogle ponuditi modernije korisničko iskustvo, možda biste željeli istražiti neke od njih vrhunski alati za kontinuiranu integraciju dostupan.