Kaj je Jenkins? Orodje za neprekinjeno integracijo (CI)

Kazalo:

Anonim

Kaj je Jenkins?

Jenkins je odprtokodni strežnik za neprekinjeno integracijo, ki je sposoben organizirati verigo dejanj, ki pomagajo samodejno doseči postopek nenehne integracije (in ne samo).

Jenkins je brezplačen in je v celoti napisan v Javi. Jenkins je široko uporabljena aplikacija po vsem svetu, ki ima približno 300 tisoč namestitev in raste iz dneva v dan.

Je strežniška aplikacija in zahteva spletni strežnik, kot je Apache Tomcat. Razlog, zaradi katerega je Jenkins postal tako priljubljen, je spremljanje ponavljajočih se nalog, ki se pojavijo med razvojem projekta. Če na primer vaša ekipa razvija projekt, bo Jenkins neprekinjeno preizkušal zgradbe vašega projekta in vam prikazoval napake v zgodnjih fazah vašega razvoja.

Z uporabo Jenkinsa lahko programska podjetja pospešijo postopek razvoja programske opreme, saj lahko Jenkins hitro avtomatizira izdelavo in testiranje. Jenkins podpira celoten razvojni življenjski cikel programske opreme od izdelave, testiranja, dokumentiranja programske opreme, uvajanja in drugih faz življenjskega cikla razvoja programske opreme.

V tej vadnici boste izvedeli

  • Kaj je Jenkins?
  • Kaj je nenehna integracija?
  • Zgodovina Jenkin
  • Zakaj uporabljati neprekinjeno integracijo z Jenkinsom?
  • Študija primera stalne integracije iz resničnega sveta
  • Prednosti uporabe Jenkinsa
  • Slabosti uporabe Jenkinsa

Kaj je nenehna integracija?

V programu Stalna integracija po prevzemu kode je programska oprema zgrajena in takoj preizkušena. V velikem projektu z veliko razvijalci se zaveze izvedejo večkrat na dan. Z vsako kodo za prevzem je zgrajena in preizkušena. Če je preizkus opravljen, je gradnja preizkušena za uvajanje. Če je uvajanje uspešno, se koda potisne v produkcijo. Ta prevzem, gradnja, preizkušanje in uvajanje je neprekinjen proces in zato ime neprekinjena integracija / uvajanje.

Cevovod za neprekinjeno integracijo je zmogljiv instrument, ki je sestavljen iz nabora orodij, namenjenih gostovanju , spremljanju , prevajanju in preizkušanju kode ali sprememb kode, kot so:

  • Strežnik za neprekinjeno integracijo (Jenkins, Bamboo, CruiseControl, TeamCity in drugi)
  • Orodje za nadzor virov (npr. CVS, SVN, GIT, Mercurial, Perforce, ClearCase in drugo)
  • Orodje za gradnjo (Make, ANT, Maven, Ivy, Gradle in drugi)
  • Okvir za avtomatizacijsko testiranje (selenij, appium, testcomplete, UFT in drugi)

Zgodovina Jenkin

  • Kohsuke Kawaguchi, razvijalec Java, ki je delal v podjetju SUN Microsystems, se je naveličal gradnje kode in ponavljajočih se popravkov napak. Leta 2004 je ustvaril strežnik za avtomatizacijo, imenovan Hudson, ki avtomatizira nalogo izdelave in preizkusa.
  • Leta 2011 se je Oracle, ki je imel v lasti Sun Microsystems, v sporu z odprtokodno skupnostjo Hudson, zato so Hudson razcepili in ga preimenovali v Jenkins.
  • Tako Hudson kot Jenkins sta še naprej delovala neodvisno. Toda v kratkem času je Jenkins pridobil veliko projektov in sodelavcev, medtem ko je Hudson ostal le z 32 projekti. Sčasoma je Jenkins postal bolj priljubljen in Hudson ni več vzdrževan.

Zakaj uporabljati neprekinjeno integracijo z Jenkinsom?

Nekateri morda mislijo, da je staromoden način razvoja programske opreme boljši način. Razumejmo prednosti CI z Jenkinsom z naslednjim primerom

Predstavljajmo si, da obstaja približno 10 razvijalcev, ki delajo v skupnem skladišču. Nekateri razvijalci nalogo opravijo v 25 dneh, drugi pa 30 dni.

Pred Jenkinsom Po Jenkinsu
Ko so vsi razvijalci končali dodeljene naloge kodiranja, so svojo kodo prevzeli hkrati. Kasneje je Build preizkušen in uveden. Izdelana je bila obveznost kode in preskusni cikel je bil zelo redek, po več dneh pa je bila izvedena ena sama gradnja. Koda je zgrajena in preizkušena takoj, ko razvijalec izda kodo. Jenkin bo čez dan večkrat zgradil in preizkusil kodo. Če je gradnja uspešna, bo Jenkins izvor namestil v testni strežnik in obvestil ekipo za uvajanje. Če gradnja ne uspe, bo Jenkins o napakah obvestil ekipo razvijalcev.
Ker je bila koda zgrajena naenkrat, bi morali nekateri razvijalci počakati, da drugi razvijalci končajo s kodiranjem, da preverijo svojo zgradbo Koda je zgrajena takoj po tem, ko se kateri koli od razvijalcev zaveže.
Izolirati, odkriti in popraviti napake pri več zavezah ni lahka naloga. Ker je koda zgrajena po vsakem prevzemu posameznega razvijalca, je enostavno odkriti, čigava koda je povzročila, da vgrajena ni uspela
Postopek izdelave in preizkusa kode sta povsem ročna, zato obstaja veliko možnosti za neuspeh. Avtomatiziran postopek izdelave in preizkusa prihrani čas in zmanjša napake.
Koda se uvede, ko so vse napake odpravljene in preizkušene. Koda se uvede po vsaki uspešni izdelavi in ​​preizkusu.
Razvojni cikel je počasen Razvojni cikel je hiter. Uporabnikom so nove funkcije lažje dostopne. Poveča dobiček.

Študija primera stalne integracije iz resničnega sveta

Prepričan sem, da vsi poznate stari telefon Nokia. Nokia je včasih izvajala postopek, imenovan nočna gradnja. Po večkratnih zavezah različnih razvijalcev podnevi je programska oprema nastajala vsak večer. Ker je bila programska oprema zgrajena le enkrat na dan, je velika težava izolirati, prepoznati in odpraviti napake v veliki bazi kod.

Kasneje so sprejeli pristop nenehne integracije. Programska oprema je bila zgrajena in preizkušena takoj, ko je razvijalec določil kodo. Če zazna kakršno koli napako, lahko zadevni razvijalec napako hitro odpravi.

Jenkins vtičniki

Jenkins ima privzeto omejen nabor funkcij. Če želite svojo namestitev Jenkins integrirati z orodji za nadzor različic, kot je Git, potem morate namestiti vtičnike, povezane z Gitom. Za integracijo z orodji, kot sta Maven, Amazon EC2, morate v svoj Jenkins namestiti ustrezne vtičnike.

Integracija vtičnikov v Jenkinsu

Prednosti uporabe Jenkinsa

  • Jenkins upravlja skupnost, ki je zelo odprta. Vsak mesec organizirajo javne sestanke in od javnosti pridobijo prispevke za razvoj projekta Jenkins.
  • Zaenkrat je zaprtih približno 280 vstopnic, projekt pa objavi stabilno izdajo vsake tri mesece.
  • Ko tehnologija raste, raste tudi Jenkins. Zaenkrat ima Jenkins v svoji bazi podatkov vtičnikov objavljenih približno 320 vtičnikov. Z vtičniki Jenkins postane še močnejši in s funkcijami bogat.
  • Jenkins prav tako podpira arhitekturo v oblaku, tako da jo lahko Jenkins namestite v platforme v oblaku.
  • Razlog, zakaj je Jenkins postal priljubljen, je ta, da ga je ustvaril razvijalec za razvijalce.

Slabosti uporabe Jenkinsa

Čeprav je Jenkins zelo močno orodje, ima svoje pomanjkljivosti.

  • Njegov vmesnik je zastarel in uporabniku ne prijazen v primerjavi s trenutnimi trendi uporabniškega vmesnika.
  • Čeprav je Jenkinsa všeč mnogim razvijalcem, ga ni tako enostavno vzdrževati, ker Jenkins deluje na strežniku in potrebuje nekaj spretnosti skrbnika strežnika za spremljanje njegove dejavnosti.
  • Eden od razlogov, zakaj mnogi ljudje ne izvajajo Jenkinsa, je težava pri namestitvi in ​​konfiguraciji Jenkinsa.
  • Neprekinjene integracije se redno prekinjajo zaradi nekaterih manjših sprememb nastavitev. Nenehna integracija bo zaustavljena in zato zahteva nekaj pozornosti razvijalcev.

Zaključek:

  • Pri neprekinjeni integraciji se po prevzemu kode programska oprema zgradi in takoj preskusi
  • Jenkins je odprtokodni strežnik za neprekinjeno integracijo, ki lahko organizira verigo dejanj
  • Pred Jenkinsom, ko so vsi razvijalci izpolnili dodeljene naloge kodiranja, so svojo kodo predali hkrati. Kasneje je Build preizkušen in uveden.
  • Po Jenkinsu je koda zgrajena in preizkušena takoj, ko razvijalec izda kodo. Jenkin bo čez dan večkrat zgradil in preizkusil kodo
  • Jenkins ima privzeto omejen nabor funkcij. Če želite svojo Jenkinsovo namestitev integrirati z orodji za nadzor različic, kot je Git, potem morate namestiti vtičnike, povezane z Git
  • Največji plus Jenkinsa je, da z njim upravlja skupnost, ki organizira javne sestanke in od javnosti pridobiva prispevke za razvoj Jenkinsovih projektov.
  • Največja prevara Jenkina je, da je njegov vmesnik zastarel in uporabniku ne prijazen v primerjavi s trenutnimi trendi uporabniškega vmesnika.