Što je JenkinsZašto koristiti alat za kontinuiranu integraciju (CI)?
⚡ Pametni sažetak
Jenkins je automatizacijski poslužitelj otvorenog koda koji gradi i testira kod svaki put kada programer izvrši zahtjev, pretvarajući kontinuiranu integraciju iz noćne obaveze u proces koji se kontinuirano izvodi tijekom cijelog radnog dana.
Š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, sa stotinama 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.
Bilješka: raspoređivanje RATA u apaš Tomcat još uvijek radi, ali trenutna izdanja isporučuju ugrađeni servlet kontejner, pa Jenkins obično radi samostalno. Linija 2.555.x LTS zahtijeva Java 21.
Š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 Kontinuirani integracijski cjevovod (CIP) je moćan instrument koji se sastoji od skupa alata dizajniranih za hostiranje, praćenje, kompajliranje i testiranje koda ili promjena koda, kao što su:
- Poslužitelj za kontinuiranu integraciju (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 automatizirano testiranje (Selenium, Appium, TestComplete, UFT, i drugi)
U trenutnim verzijama ti se koraci nalaze u Jenkinsdatoteka pohranjena pored koda. Jenkins Kontroler čita tu datoteku i predaje svaku fazu agentu, što je stroj koji zapravo izvršava posao.
Jenkins Povijest
- 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 dijeljenom repozitoriju. 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. |
Kod se izgrađuje i testira čim programer potvrdi kod. Jenkins izgradit će 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 izgrađuje nakon svakog commita jednog programera, lako je otkriti čiji je kod uzrokovao neuspjeh izgradnje. |
| 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, prikazan u nastavku. Softver je izgrađen i testiran čim je programer potvrdio kod. Ako se otkrije bilo kakva greška, odgovarajući programer može brzo ispraviti 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, kao što prikazuje upravitelj dodataka u nastavku.
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.
- Projekt održava predvidljiv ritam izdanja: nova osnova dugoročne podrške odabire se svakih dvanaest tjedana, a zatim prima planirana izdanja zakrpa.
- Kako tehnologija napreduje, tako napreduje i JenkinsBaza podataka dodataka sada sadrži preko dvije tisuće 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 jednostavno za korištenje u usporedbi s trenutnim trendovima korisničkog sučelja, iako su nedavna izdanja modernizirala velik dio dizajna zaslona.
- 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.
- Sukobi ovisnosti dodataka pojavljuju se kada se mnogi dodaci nadograđuju u različito vrijeme, pa ažuriranja dodataka zahtijevaju vlastiti vremenski okvir za održavanje.
Ako su ti kompromisi važni vašem timu, usporedite Najbolje Jenkins Alternativni alati i širi popis vrhunski alati za kontinuiranu integraciju prije nego što se odlučite za samostalno hostirani poslužitelj.


