Što je Jenkins? Alat za kontinuiranu integraciju (CI)

Sadržaj:

Anonim

Što je Jenkins?

Jenkins je poslužitelj za kontinuiranu integraciju otvorenog koda koji može organizirati lanac akcija koji pomažu u postizanju procesa kontinuirane integracije (i ne samo) na automatiziran način.

Jenkins je besplatan i u cijelosti je napisan na Javi. Jenkins je široko korištena aplikacija širom svijeta koja ima oko 300.000 instalacija i raste iz dana u dan.

To je aplikacija zasnovana na poslužitelju i zahtijeva web poslužitelj poput Apache Tomcat. Razlog zbog kojeg je Jenkins postao toliko popularan je praćenje ponovljenih zadataka koji nastaju tijekom razvoja projekta. Na primjer, ako vaš tim razvija projekt, Jenkins će kontinuirano testirati izrade vašeg projekta i prikazivati ​​vam pogreške u ranim fazama vašeg razvoja.

Korištenjem Jenkinsa softverske tvrtke mogu ubrzati svoj proces razvoja softvera, jer Jenkins može automatizirati izradu i brzo testiranje. Jenkins podržava cjelokupni razvojni životni ciklus softvera od izrade, testiranja, dokumentiranja softvera, postavljanja i drugih faza životnog ciklusa razvoja softvera.

U ovom ćete tutorijalu naučiti

  • Što je Jenkins?
  • Što je kontinuirana integracija?
  • Povijest Jenkin
  • Zašto koristiti kontinuiranu integraciju s Jenkinsom?
  • Stvarna studija slučaja kontinuirane integracije
  • Prednosti korištenja Jenkinsa
  • Mane korištenja Jenkinsa

Što je kontinuirana integracija?

U kontinuiranoj integraciji nakon predaje koda, softver se izrađuje i testira odmah. U velikom projektu s mnogo programera, obaveze se čine puno puta tijekom dana. Sa svakim predavanjem kôd se gradi i testira. Ako je test položen, gradnja se testira za primjenu. Ako je implementacija uspješna, kôd se prebacuje u produkciju. Ovo predavanje, izrada, testiranje i postavljanje kontinuirani je postupak i otuda naziv neprekidna integracija / implementacija.

Cjevovod za kontinuiranu integraciju moćan je instrument koji se sastoji od skupa alata dizajniranih za hostiranje , nadgledanje , sastavljanje i testiranje koda ili promjena koda, poput:

  • 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 automatizaciju ispitivanja (selen, appium, testcomplete, UFT i drugi)

Povijest Jenkin

  • Kohsuke Kawaguchi, programer za Javu, koji radi u tvrtki SUN Microsystems, bio je umoran od izrade koda i ponavljanog ispravljanja pogrešaka. Godine 2004. stvorio je poslužitelj za automatizaciju pod nazivom Hudson koji automatizira zadatak izrade i testiranja.
  • 2011. godine Oracle koji je posjedovao Sun Microsystems imao je spor sa zajednicom otvorenog koda Hudson, pa su račvali Hudson i preimenovali ga u Jenkins.
  • I Hudson i Jenkins nastavili su samostalno djelovati. No, u kratkom je razdoblju Jenkins stekao puno projekata i suradnika, dok je Hudson ostao sa samo 32 projekta. S vremenom je Jenkins postao popularniji, a Hudsona više ne održavaju.

Zašto koristiti kontinuiranu integraciju s Jenkinsom?

Neki ljudi mogu pomisliti da je staromodni način razvoja softvera bolji način. Shvatimo prednosti CI-a s Jenkinsom na sljedećem primjeru

Zamislimo da postoji oko 10 programera koji rade na zajedničkom spremištu. Neki programeri izvršavaju svoj zadatak za 25 dana, dok drugima treba 30 dana.

Prije Jenkinsa Nakon Jenkinsa
Jednom kada su svi programeri dovršili dodijeljene zadatke kodiranja, oni su istodobno predavali svoj kôd. Kasnije se Build testira i primjenjuje. Izgrađeno je urezivanje koda, a ciklus testiranja bio je vrlo rijedak, a jedna gradnja izvršena je nakon mnogo dana. Kôd se izrađuje i testira čim ga programer odobri. Jenkin će graditi i testirati kôd mnogo puta tijekom dana Ako je izrada uspješna, tada će Jenkins rasporediti izvor na testni poslužitelj i obavijestiti tim za implementaciju. Ako izrada ne uspije, Jenkins će obavijestiti o pogreškama tim programera.
Budući da je kôd izrađen odjednom, neki programeri trebali bi pričekati dok drugi programeri ne završe kodiranje kako bi provjerili svoju gradnju Kôd se izrađuje odmah nakon što se bilo koji programer obveže.
Nije jednostavan zadatak izolirati, otkriti i ispraviti pogreške za višestruko urezivanje. Budući da se kôd gradi nakon svakog urezivanja pojedinog programera, lako je otkriti čiji je kôd uzrokovao da gradnja propadne
Proces izrade i testiranja koda u potpunosti je ručan, tako da postoji puno šansi za neuspjeh. Automatizirani postupak izrade i ispitivanja štedi vrijeme i smanjuje nedostatke.
Kôd se postavlja nakon što su sve pogreške ispravljene i ispitane. Kôd se postavlja nakon svake uspješne izrade i testa.
Ciklus razvoja je spor Ciklus razvoja je brz. Korisnicima su lakše dostupne nove značajke. Povećava dobit.

Stvarna studija slučaja kontinuirane integracije

Siguran sam da svi znate za stari telefon Nokia. Nokia je nekad primjenjivala proceduru koja se naziva noćna gradnja. Nakon višestrukih obveza različitih programera tijekom dana, softver se gradio svake noći. Budući da se softver gradio samo jednom dnevno, velika je muka izolirati, identificirati i ispraviti pogreške u velikoj bazi koda.

Kasnije su usvojili pristup kontinuirane integracije. Softver je izrađen i testiran čim je programer odobrio kod. Ako se otkrije bilo kakva pogreška, odgovarajući programer može brzo otkloniti kvar.

Jenkins dodaci

Prema zadanim postavkama, Jenkins dolazi s ograničenim skupom značajki. Ako želite integrirati svoju Jenkinsovu instalaciju s alatima za kontrolu verzija poput Gita, tada morate instalirati dodatke povezane s Gitom. Zapravo, za integraciju s alatima poput Mavena, Amazon EC2, morate instalirati odgovarajuće dodatke u svoj Jenkins.

Integracija dodataka u Jenkinsu

Prednosti korištenja Jenkinsa

  • Jenkinsom upravlja zajednica koja je vrlo otvorena. Svakog mjeseca održavaju javne sastanke i uzimaju informacije od javnosti za razvoj Jenkins 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 dodataka. S dodacima, Jenkins postaje još moćniji i bogati značajkama.
  • Jenkins također podržava arhitekturu temeljenu na oblaku tako da možete Jenkinsa rasporediti na platforme temeljene na oblaku.
  • Razlog zašto je Jenkins postao popularan je taj što ga je stvorio programer za programere.

Mane korištenja Jenkinsa

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

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

Zaključak:

  • U kontinuiranoj integraciji, nakon predaje koda, softver se izrađuje i testira odmah
  • Jenkins je poslužitelj za kontinuiranu integraciju otvorenog koda koji može organizirati lanac radnji
  • Prije Jenkinsa, kada su svi programeri dovršili dodijeljene zadatke kodiranja, oni su koristili svoj kod u isto vrijeme. Kasnije se Build testira i primjenjuje.
  • Nakon Jenkinsa kôd se izgradi i testirajte čim ga programer počini. Jenkin će mnogo puta tijekom dana graditi i testirati kôd
  • Prema zadanim postavkama, Jenkins dolazi s ograničenim skupom značajki. Ako želite integrirati svoju Jenkinsovu instalaciju s alatima za kontrolu verzija kao što je Git, tada morate instalirati dodatke povezane s Gitom
  • Najveće prednosti Jenkinsa je što njime upravlja zajednica koja održava javne sastanke i uzima doprinose javnosti za razvoj Jenkins projekata
  • Najveća Jenkinina prevara je što je njegovo sučelje zastarjelo i nije prilagođeno korisnicima u usporedbi s trenutnim trendovima korisničkog sučelja.