Š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.

  • 🔘 Svrha: Jenkins automatski orkestrira korake izgradnje, testiranja i implementacije nakon svakog commita.
  • ☑️ Podrijetlo: Odvojio se od Hudsona 2011. godine i sada je najšire korišteni CI poslužitelj.
  • Cjevovodi: A JenkinsDatoteka pohranjena s kodom definira svaku fazu izgradnje.
  • 🧪 dodaci: Povezuje se preko dvije tisuće dodataka Jenkins za Git, Maven, Docker i Kubernetes.
  • 🛠️ Kompromis: Samostalni hosting donosi potpunu kontrolu, ali i posao administracije servera.

Jenkins pregled poslužitelja za kontinuiranu integraciju

Š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.

Noćna izrada Nokije zamijenjena je ciklusom kontinuirane integracije pokrenutim commit-om

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.

Jenkins Upravitelj dodataka koji prikazuje dostupne dodatke spremne za instalaciju

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.

Pitanja i odgovori

Da. Jenkins objavljen je pod MIT licencom i preuzimanje ili pokretanje ne košta ništa. Trošak je neizravan: vrijeme poslužitelja, pohrane i administratora potrebno za održavanje ispravnog samostalno hostanog kontrolera.

Linija dugoročne podrške 2.555.x traje Java 21, s Java 25 također podržano; Java Verzija 17 je uklonjena na 2.555.1. Provjerite zahtjev prije nadogradnje, jer stari JDK sprječava pokretanje kontrolera.

A Jenkinsdatoteka je tekstualna datoteka koja sadrži definiciju cjevovoda, poslanu uz kod aplikacije. Može biti napisana u deklarativnoj ili skriptiranoj sintaksi i keeping U kontroli verzija omogućuje pregled verzije kao i bilo koju drugu promjenu.

Kontroler je Jenkins instalacija koja zakazuje rad i poslužuje web sučelje. Agent je zaseban stroj koji izvršava zadane korake izgradnje, što raspoređuje opterećenje i omogućuje izgradnju na nekoliko operativnih sustava.

Modeli strojnog učenja grupiraju ponovljene neuspjehe, odvajaju stvarne regresije od nestabilnih testova i upućuju na commit koji je najvjerojatnije odgovoran. To pretvara dugi zapisnik konzole u kratki, rangirani popis za dežurnog programera.

GitHub kopilot iz komentara izrađuje deklarativne faze i uobičajene korake. RevPogledajte svaki prijedlog, jer često izmišlja nazive koraka dodataka koji nisu instalirani na vašem kontroleru.

Hostane usluge ne zahtijevaju održavanje servera i pokreću se brže, dok Jenkins daje potpunu kontrolu nad hardverom, dodacima i lokacijom podataka. Timovi s neobičnim okruženjima za izradu obično zadržavaju JenkinsMali projekti često preferiraju hostiranog trkača.

Da. Koraci izgradnje mogu pozvati Maven, Gradle ili Ant, i JUnit, TestNG or Selenium Rezultati se objavljuju natrag na stranici s poslom, tako da neuspješni paket označava cijelu izgradnju crvenom bojom.

Sažmite ovu objavu uz: