Što je JenkinsZašto koristiti alat za kontinuiranu integraciju (CI)?
Što je Jenkins?
Jenkins je open-source poslužitelj kontinuirane integracije napisan na Java za orkestriranje lanca akcija za postizanje procesa kontinuirane integracije na automatizirani način. Jenkins podržava cijeli životni ciklus razvoja softvera od izgradnje, testiranja, dokumentiranja softvera, implementacije i ostalih faza životnog ciklusa razvoja softvera.
Jenkins je široko korištena aplikacija diljem svijeta koja ima oko 300 tisuća instalacija i raste iz dana u dan. Korištenjem Jenkinssoftverske tvrtke mogu ubrzati svoj proces razvoja softvera, kao Jenkins može automatizirati izgradnju i testiranje velikom brzinom.
To je aplikacija temeljena na poslužitelju i zahtijeva web poslužitelj poput Apache Tomcata. Razlog Jenkins softver koji je postao toliko popularan jest praćenje ponavljajućih zadataka koji se javljaju tijekom razvoja projekta. Na primjer, ako vaš tim razvijaping projekt, Jenkins kontinuirano će testirati vaše projektne verzije i pokazati vam pogreške u ranim fazama 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 raditi?
Jenkins je aplikacija temeljena na poslužitelju i zahtijeva web poslužitelj poput Apache Tomcata za pokretanje na raznim platformama poput Windows, Linux, macOS, Unix, itd. Za korištenje Jenkins, potrebno je stvoriti cjevovode koji su niz koraka koji Jenkins poslužitelj će preuzeti. Jenkins Cjevovod kontinuirane integracije moćan je instrument koji se sastoji od skupa alata osmišljenih 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 Vlasnici Sun Microsystemsa imali su spor s Hudsonovom zajednicom otvorenog koda, pa su razdvojili Hudson i preimenovali ga u Jenkins.
- I Hudson i Jenkins nastavio je samostalno djelovati. Ali u kratkom vremenskom razdoblju, Jenkins stekao je mnogo projekata i suradnika dok je Hudson ostao sa samo 32 projekta. S vremenom, Jenkins postao je popularniji, a Hudson se više ne održava.
Zašto koristiti kontinuiranu integraciju s Jenkins?
Neki ljudi bi mogli pomisliti da je staromodni način razvojaping softver je bolji način. Razumimo prednosti CI-ja s Jenkins sa sljedećim primjerom
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 Jenkins | nakon Jenkins |
|---|---|
| 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.
Code commit je izgradio, a testni ciklus je bio vrlo rijedak, a jedna izgradnja je dovršena 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 gradnja uspješna, onda Jenkins implementirat će izvorni kod na testni poslužitelj i obavijestiti tim za implementaciju. Ako gradnja ne uspije, onda Jenkins obavijestit će razvojni tim o greškama. |
| 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 |
| Code graditi 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.
Jenkins Dodaci
Po defaultu, Jenkins dolazi s ograničenim skupom značajki. Ako želite integrirati svoj Jenkins instalaciju s alatima za kontrolu verzija poput Gita, tada morate instalirati dodatke povezane s Gitom. Zapravo, za integraciju s alatima poput Mavena, Amazon EC2, potrebno je instalirati odgovarajuće dodatke u svoj Jenkins.

Prednosti korištenja Jenkins
- Jenkins upravlja zajednica koja je vrlo otvorena. Svaki mjesec održavaju javne sastanke i primaju prijedloge javnosti za razvoj Jenkins Projekt.
- Do sada je zatvoreno oko 280 ulaznica, a projekt objavljuje stabilno izdanje svaka tri mjeseca.
- Kako tehnologija napreduje, tako napreduje i Jenkins. Daleko Jenkins ima oko 320 dodataka objavljenih u svojoj bazi podataka dodataka. S dodacima, Jenkins postaje još moćniji i bogatiji značajkama.
- Jenkins Alat također podržava arhitekturu temeljenu na oblaku tako da možete implementirati Jenkins na platformama temeljenim na oblaku.
- Razlog zašto Jenkins postao popularan jest to što ga je stvorio programer za programere.
Nedostaci korištenja Jenkins
Iako Jenkins je vrlo moćan alat, ima svoje nedostatke.
- Njegovo sučelje je zastarjelo i nije prilagođeno korisniku u usporedbi s trenutnim trendovima korisničkog sučelja.
- Iako Jenkins mnogi programeri vole ga, nije ga tako lako održavati jer Jenkins radi na poslužitelju i zahtijeva određene vještine administratora poslužitelja za praćenje njegove aktivnosti.
- Jedan od razloga zašto mnogi ljudi ne primjenjuju Jenkins zbog poteškoća u instalaciji i konfiguriranju Jenkins.
- 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 koristi se za orkestriranje lanca akcija za kontinuiranu integraciju u softverskom projektu
- prije Jenkins Kada bi svi programeri završili svoje dodijeljene zadatke kodiranja, običavali bi istovremeno potvrdjivati (commit) svoj kod. Later, Build je testiran i implementiran.
- nakon Jenkins Kod se gradi i testira čim programer objavi kod. Jenkin će graditi i testirati kod mnogo puta tijekom dana.
- Po defaultu, Jenkins dolazi s ograničenim skupom značajki. Ako želite integrirati svoj Jenkins instalaciju s alatima za kontrolu verzija poput Gita, tada morate instalirati dodatke povezane s Gitom. Također provjerite Najbolje Jenkins Alternativni alati
- Najveće prednosti Jenkins jest da njime upravlja zajednica koja održava javne sastanke i prima doprinose javnosti za razvoj Jenkins projekti
- Najveća prevara od Jenkins jest da je njegovo sučelje zastarjelo i nije jednostavno za korištenje u usporedbi s trenutnim trendovima korisničkog sučelja. Ako razmatrate druge opcije koje bi mogle ponuditi modernije korisničko iskustvo, možda biste trebali istražiti neke od vrhunski alati za kontinuiranu integraciju dostupan.

