Poglavje 1 Kaj je Jenkins?
Jenkins je razširljiv, neprekinjen integracijski pogon.
Uporablja se predvsem za:
- Neprekinjeno in samodejno gradi in testiraj programske projekte.
- Spremljam nekatere naloge, ki se redno opravljajo.
Lastnosti, ki jih ima Jenkins, vključujejo:
- Enostavna namestitev – preprosto namestite jenkins.war v servlet kontejner brez podpore za bazo podatkov.
- Enostavno za nastavitev – vse konfiguracije so izvedene preko spletnega vmesnika, ki ga omogoča.
- l Integrirani RSS/e-poštni naslov objavlja rezultate gradnje preko RSS ali obvestil po e-pošti, ko je gradnja dokončana.
- Ustvarjam poročila o testih JUnit/TestNG.
- l Podpora za porazdeljeno gradnjo Jenkins omogoča več računalnikov za hkratno gradnjo/testiranje.
- l Prepoznavanje datotek: Jenkins lahko sledi, kateri jar-i so ustvarjeni s katero gradnjo, katero različico jar-ja uporablja katera gradnja itd.
- Podpora za vtičnike: Podprte so razširitve, tako da lahko razvijete orodja, ki ustrezajo uporabi vaše ekipe.
1 Izvor Jenkinsa
Neprekinjena integracija (CI) je postala običajna praksa za številne ekipe za razvoj programske opreme, ki se osredotočajo na zagotavljanje kakovosti kode skozi celoten življenjski cikel razvoja programske opreme. Gre za prakso, zasnovano za olajšanje in utrjevanje procesa gradnje programske opreme. In lahko pomaga vaši razvojni ekipi pri soočanju z izzivi, kot so:
- Avtomatizacija gradnje programske opreme: Ko je konfiguracija zaključena, CI sistem zgradi ciljno programsko opremo po vnaprej določenem urniku ali za določen dogodek.
- Vzpostavite trajnostne avtomatizirane preglede: CI sistem lahko neprekinjeno pridobiva novo ali spremenjeno izvorno kodo za prijavo, kar pomeni, da ko mora razvojna ekipa programske opreme periodično preverjati novo ali spremenjeno kodo, sistem CI nenehno potrjuje, ali je nova koda motila uspešno gradnjo izvirne programske opreme. To zmanjša čas in trud, ki ga razvijalci porabijo za preverjanje sprememb v svoji medsebojno odvisni kodi (da povem jasno, hehe).
- l Zgradite trajnostno avtomatizirano testiranje: zgradite razširjen del preverjanja, po izdelavi izvedete vnaprej določen nabor testnih pravil in po zaključku sprožite obvestila (e-pošta, RSS itd.) ustreznim stranem.
- l Avtomatizacija nadaljnjih procesov po generiranju: Ko so avtomatizirani pregledi in testi uspešno zaključeni, so lahko v ciklu gradnje programske opreme potrebne dodatne naloge, kot so generiranje dokumentacije, pakiranje programske opreme in nameščanje komponent v runtime ali repozitorij programske opreme. To omogoča, da so komponente uporabnikom dostopnejše na voljo.
- Minimalne zahteve, potrebne za uvedbo CI sistema, so repozitorij razpoložljive izvorne kode in projekt z gradbenimi skriptami.
Naslednji diagram povzema osnovno strukturo CI sistema:
Komponente sistema delujejo v naslednjem vrstnem redu:
1. Razvijalec prijavi kodo v repozitorij izvorne kode.
2. CI sistem ustvari ločen delovni prostor za vsak projekt. Ko je nova gradnja vnaprej nastavljena ali zahtevana, shrani izvorno kodo iz repozitorija izvorne kode v ustrezni delovni prostor.
3. CI sistem bo izvedel proces gradnje v ustreznem delovnem prostoru.
4. (Če konfiguracija obstaja) Ko je gradnja končana, CI sistem izvede določen nabor testov v novem artefaktu. Ob zaključku sprožite obvestila (e-pošta, RSS itd.) ustreznim stranem.
5. (Konfiguracija, če je prisotna) Če je gradnja uspešna, se ta artefakt zapakira in prenese na cilj nameščanja (npr. aplikacijski strežnik) ali shrani kot novo različico v repozitorij programske opreme. Repozitorij programske opreme je lahko del CI sistema ali zunanji repozitorij, kot je datotečni strežnik ali spletna stran, kot so Java.net, SourceForge itd.
6. CI sistem običajno sproži ustrezna dejanja na podlagi zahtev, kot so takojšnje gradnje, generiranje poročil ali pridobivanje nekaterih zgrajenih artefaktov.
Jenkins je eden takšnih CI sistemov. Prej znan kot Hudson.
Tukaj je nekaj razlogov za uporabo Jenkinsa:
- Je najlažji za namestitev in konfiguracijo med vsemi CI izdelki.
- Uporabniški vmesnik, ki temelji na dostopu do spleta, je zelo prijazen, intuitiven in prilagodljiv ter v mnogih primerih omogoča takojšnje povratne informacije od AJAX-a.
- l Jenkins je razvit na Javi (kar je zelo uporabno, če ste Java razvijalec), vendar ni omejen le na gradnjo programske opreme, ki temelji na Javi.
- Jenkins ima veliko število vtičnikov. Ti vtičniki močno razširjajo funkcionalnost Jenkinsa; Vse so odprtokodne in jih je mogoče namestiti ter upravljati neposredno prek spletnega vmesnika.
1.1 Jenkinsovi cilji Glavni cilj Jenkinsa je spremljanje procesa razvoja programske opreme in hitro odkrivanje težav. Zato lahko zagotovi, da razvijalci in povezano osebje prihranijo čas in trud ter izboljšajo učinkovitost razvoja.
Glavna vloga CI sistema skozi celoten razvojni proces je nadzor: ko sistem zazna spremembo v repozitoriju kode, nalogo izvajanja gradnje delegira samemu procesu gradnje. Če gradnja ne uspe, CI sistem obvesti ustrezno osebo in nato nadaljuje z nadzorom repozitorija. Njeni liki se zdijo pasivni; A težavo hitro odraža.
Zlasti ima naslednje prednosti:
- l Jenkins: Vse konfiguracije je mogoče izvesti prek spletnega vmesnika. Nekatere konfiguracije, kot sta MAVEN_HOME in e-pošta, je treba konfigurirati le enkrat, vse projekte pa je mogoče uporabljati. Seveda ga je mogoče konfigurirati tudi z modifikacijo XML-ja.
- Moduli, ki podpirajo Maven, je Jenkins optimiziral Maven, tako da lahko samodejno prepozna module, vsak modul pa je mogoče konfigurirati kot nalogo. Kar prilagodljivo.
- Združevanje testnih poročil, testna poročila vseh modulov so združena skupaj, rezultati pa so na prvi pogled jasni, z uporabo drugih CI-jev, kar je skoraj nemogoča naloga.
- l Artifact fingerprint, rezultat vsake gradnje je dobro samodejno upravljan in ga je mogoče enostavno brskati ter prenašati brez kakršnekoli nastavitve.
|