Programiranje

Nenehna integracija s Hudsonom

Nenehna integracija je postala običajna praksa za ekipe, ki se osredotočajo na zagotavljanje kakovosti kode v celotnem življenjskem ciklu razvoja programske opreme. V tem članku Nicholas Whitehead predstavlja Hudson, priljubljeni odprtokodni strežnik CI. Naučite se, kako nastaviti Hudsonov strežnik v okolju za razvoj aplikacij (primeri so navedeni za Windows XP s Tomcat 6 ali Ubuntu Linux z JBoss AS), pridobite pregled številnih možnosti konfiguracije, ki jih ponuja Hudson, nato izvedite avtomatizirano gradnjo, preizkus, in postopek poročanja za primer projekta. Raven: Začetnik

Nenehno povezovanje (CI) je sklop praks, katerih namen je olajšati in stabilizirati postopek ustvarjanja zgradb programske opreme. CI pomaga razvojnim skupinam pri naslednjih izzivih:

  • Avtomatizacija gradnje programske opreme: S programom CI lahko s pritiskom na gumb, po vnaprej določenem urniku ali kot odgovor na določen dogodek zaženete postopek gradnje programskega artefakta. Če želite artefakt programske opreme zgraditi iz vira, postopek gradnje ni vezan na določeno IDE, računalnik ali osebo.
  • Neprekinjeno samodejno preverjanje gradnje: Sistem CI je mogoče konfigurirati tako, da neprestano izvaja gradnje, ko je prijavljena nova ali spremenjena izvorna koda. To pomeni, da medtem ko skupina razvijalcev programske opreme redno preverja novo ali spremenjeno kodo, sistem CI nenehno preverja, ali gradnja ni prekinjena z novo kodo. To zmanjšuje potrebo razvijalcev, da med seboj preverjajo spremembe soodvisnih komponent.
  • Neprekinjeno avtomatizirano testiranje gradnje: Razširitev preverjanja gradnje, ta postopek zagotavlja, da nova ali spremenjena koda ne bo povzročila neuspeha nabora vnaprej določenih preskusov vgrajenih artefaktov. Tako pri preverjanju zgradbe kot pri preskušanju lahko napake sprožijo obvestila zainteresiranim stranem, kar pomeni, da zgradba ali nekateri preskusi niso uspeli.
  • Avtomatizacija postopkov po izdelavi: Življenjski cikel gradnje programskega artefakta lahko zahteva tudi dodatne naloge, ki jih je mogoče avtomatizirati po zaključku preverjanja in testiranja gradnje, na primer ustvarjanje dokumentacije, pakiranje programske opreme in razmestitev artefaktov v delujoče okolje ali v skladišče programske opreme. Na ta način so lahko artefakti hitro na voljo uporabnikom.

Za izvedbo strežnika CI potrebujete vsaj dostopno repozitorij izvorne kode (in izvorno kodo v njem), niz skriptov in postopkov gradnje in niz testov za izvedbo proti vgrajenim artefaktom. Na sliki 1 je prikazana osnovna struktura sistema CI.

Sistemske komponente se začnejo uporabljati v naslednjem zaporedju:

  1. Razvijalci novo in spremenjeno kodo preverijo v repozitorij izvorne kode.
  2. Strežnik CI za vsak projekt ustvari namenski delovni prostor. Ko je zahtevana ali načrtovana nova gradnja, je vir iz repozitorija pridobljen v ta delovni prostor, kjer se gradnja nato izvede.
  3. Strežnik CI izvede postopek gradnje na novo ustvarjenem ali osveženem delovnem prostoru.
  4. Ko je gradnja končana, lahko strežnik CI po želji pokliče definirano preskusno zbirko novih artefaktov. Če gradnja ne uspe, lahko registrirane posameznike o tem obvestite po e-pošti, takojšnjem sporočanju ali kako drugače.
  5. Če je gradnja uspešna, se artefakti zapakirajo in posredujejo cilju uvajanja (kot je strežnik aplikacij) in / ali shranijo kot nov različico različice v repozitoriju programske opreme. To repozitorij je lahko del strežnika CI ali pa je zunanji repozitorij, na primer datotečni strežnik ali mesto za distribucijo programske opreme, kot sta Java.net ali SourceForge. Repozitorij izvorne kode in repozitorij artefaktov sta lahko ločena in dejansko je mogoče uporabiti nekatere strežnike CI brez kakršnega koli formalnega sistema za nadzor virov.
  6. Strežniki CI imajo ponavadi nekakšno konzolo, kjer je mogoče projekte konfigurirati in odpraviti napake ter kjer se lahko izdajo zahteve za operacije, kot so ad hoc takojšnje gradnje, generiranje poročil ali iskanje vgrajenih artefaktov.

Hudson: Strežnik za neprekinjeno integracijo

Neprekinjena integracija je v zadnjih nekaj letih postajala vse bolj priljubljena in danes imate na izbiro kar nekaj strežnikov CI, tako komercialnih kot brezplačnih. Osebno sem uporabil štiri strežnike CI, preden mi je kolega priporočil, da pogledam Hudsona. Takoj me je navdušil. Čeprav sem sprva domneval, da Hudson ni bil dobro znan, ga raziskava na spletnem mestu Java Power Tools kaže kot najpogosteje uporabljen strežnik CI med anketiranci, saj je v času pisanja tega besedila zbral 37,8 odstotka vseh glasov.

Podprti SCM-ji

Hudson ima vgrajeno podporo za Subversion že takoj, za integracijo s CVS pa je potrebna le majhna količina konfiguracije, če je odjemalec CVS ​​nameščen na gostitelju Hudson. V obliki vtičnikov Hudson je podprtih več drugih rešitev za upravljanje izvorne kode (SCM). V času pisanja tega dokumenta so podprti naslednji SCM-ji:

  • Accurev
  • BitKeeper
  • ClearCase
  • Git
  • Mercurial
  • Izvedite
  • StartTeam
  • Team Foundation Server
  • Visual SourceSafe
  • URL SCM (poseben vtičnik SCM, ki omogoča uporabo URL-jev za SCM)

V tem članku bom uporabljal Subversion in izvorno repozitorij na Java.net, zato vam ne bo treba namestiti nobenega od teh vtičnikov. (Poleg tega poznam nekoga, ki dela na vtičniku MKS SourceIntegrity Hudson. Če vas to zanima, mi pošljite e-pošto.)

Hudson je brezplačen in odprtokodni izdelek, ki ga gosti Java.net. Prvotno ga je napisal Kohsuke Kawaguchi, osebni inženir v podjetju Sun Microsystems, ki ga je objavil na svojem blogu februarja 2005. Hudson je imel od takrat približno 154 izdaj.

Tu je nekaj razlogov, zakaj mi je všeč Hudson, in zakaj bi vam ga priporočil, ne glede na kakršne koli nenavadne zahteve:

  • Od vseh izdelkov CI, ki sem jih uporabil, je daleč najlažje namestiti in konfigurirati.
  • Njeni spletni uporabniški vmesniki so zelo prijazni, intuitivni in odzivni, v mnogih primerih pa nudijo takojšnje povratne informacije o posameznih konfiguracijskih poljih, ki jih omogoča Ajax.
  • Hudson temelji na Javi (kar je koristno, če ste razvijalec Java), vendar ni omejen na izdelavo programske opreme, ki temelji na Javi.
  • Hudson je čisto komponentiziran in ponuja natančno definiran in dokumentiran API za razširljivost v obliki vtičnikov Hudson. To pa je privedlo do velike knjižnice vtičnikov Hudson, ki razširjajo funkcionalnost strežnika; ti so prosto dostopni in jih je mogoče namestiti s konzole Hudson.

Namestitev Hudsona: Windows XP ali Ubuntu Linux

Če želite uporabljati Hudson, potrebujete dostopen in podprt sistem nadzora virov (za seznam glejte stransko vrstico "Podprti SCM-ji"), vir, ki ga je mogoče vgraditi v artefakt, in delujoč skript za gradnjo. Poleg tega sta za namestitev in konfiguracijo delujočega strežnika Hudson potrebna le namestitev Jave, različice 1.5 ali novejše, in namestitvene datoteke Hudson, ki je v obliki spletnega arhiva Java EE (WAR). Strežnik lahko zaženete zelo preprosto z naslednjo ukazno vrstico:

C: \ hudson> java -jar hudson.war

Verjetno pa je bolj pogosto, da se Hudson namesti v vsebnik Java servlet, ki temelji na specifikacijah Servlet 2.4 in JSP 2.0, kot so GlassFish, Tomcat, JBoss ali Jetty. V naslednjih razdelkih vas bom vodil skozi dva scenarija namestitve Hudson: enega z uporabo Tomcat 6 v operacijskem sistemu Windows XP in drugega z uporabo JBoss 4.2.3 v Ubuntu Linux. (JBoss AS 5.0 je bil izdan po datumu oddaje tega članka.)

Namestitev Hudsona: Tomcat 6 in Windows XP

Predvidevam, da imate v računalniku Windows XP že nameščeno različico Java 1.5 ali novejšo. Po spodnjih korakih boste Tomcat 6.0.18 namestili z namestitvenim programom Windows, tako da se bo Hudson zagnal takoj po zagonu sistema Windows XP in bo deloval v ozadju, tudi če ni prijavljen noben uporabnik. Datoteka za prenos za Tomcat je apache-tomcat- 6.0.18.exe, ki ga morate zagnati za začetek namestitve Tomcat.

Namestitev Tomcat vas bo pozvala, da izberete možnosti namestitve. Ne pozabite izbrati Po meri možnosti in nato Storitev, kot je prikazano na sliki 2, tako da bo Tomcat deloval kot storitev.

Nato izberite imenik, kamor želite namestiti Tomcat, kot je prikazano na sliki 3. Toplo priporočam, da izberete imenik brez presledkov. Kasneje se mi lahko zahvalite.

Zdaj vas bo namestitveni program vprašal, na katerih vratih želite poslušati. Privzeto so vrata 8080, kar je verjetno v redu; samo poskrbite, da nimate druge aplikacije, ki uporablja ta vrata. V tem primeru se Tomcat ne bo pravilno zagnal. Prav tako boste morali vnesti uporabniško ime in geslo skrbnika Tomcat. Vse to je prikazano na sliki 4.

Nato vas bo namestitveni program pozval, da navedete lokacijo nameščenega Java JRE. Kot lahko vidite na sliki 5, sem uporabil Sun Java 1.6.0_07.

Ko kliknete Namestite, namestitev naj bi tekla do konca in storitev se bo začela izvajati. Prepričate se, da Tomcat deluje pravilno, tako da svoj spletni brskalnik usmerite na // localhost: 8080 (če namesto spletnega brskalnika, ki se izvaja v računalniku, v katerem je nameščen Tomcat, nadomestite ustrezno ime ali naslov IP za localhost). Prikazana spletna stran bi morala biti podobna posnetku zaslona na sliki 6.

Zdaj, da namestite Hudson, kopirajte datoteko hudson.war v podimenik webapps v namestitvenem imeniku Tomcat. Če ste uporabili isti namestitveni imenik, prikazan na sliki 3, bi bil to C: \ Tomcat6 \ webapps. Tomcat bo datoteke WAR razvil vroče, vendar je najlažje zdaj znova zagnati Tomcat. To lahko storite na dva načina. Prvo je odpreti lupino DOS in vnesti naslednje ukaze:

 C: \ Tomcat6> net stop Tomcat6 C: \ Tomcat6> net start Tomcat6

Druga možnost je odpreti programček Services. Ta programček lahko najdete v skupini skrbniških orodij na nadzorni plošči, ki jo najdete tako, da kliknete gumb Start v orodni vrstici sistema Windows in nato izberete Nastavitve in potem Nadzorna plošča. V programčku Services poiščite imenovano storitev Apache Tomcat in nato kliknite Ponovni zagon . To je prikazano na sliki 7.

Zdaj bi morali namestiti Hudson. To lahko preverite tako, da svoj spletni brskalnik usmerite na // localhost: 8080 / hudson. Glavni Hudsonov zaslon je prikazan na sliki 8.

To je vse! Če ste zadovoljni z okoljem za razvoj aplikacij, ki temelji na sistemih Windows XP in Tomcat, ste pripravljeni. Če imate raje sistem z JBoss in Ubuntu Linux, preberite.

Namestitev Hudsona: JBoss 4.2.3 na Ubuntu Linux 8.04 (Hardy Heron)

Če želite namestiti Sun Java 1.6 v Ubuntu, odprite lupino in izvedite naslednji ukaz:

 sudo apt-get namestite sun-java6-jdk

Pri izdaji a sudo ukaz, boste pozvani k vnosu gesla.

Upoštevajte, da obstaja več načinov namestitve JBoss; v tukaj opisani tehniki boste ustvarili namensko jboss uporabnik. To velja za najboljšo prakso in je bolje, če namestite JBoss v svoj domači imenik. Tu opisani postopek je strnjen iz uporabnega opisa na forumih Ubuntu.

Najprej morate prenesti paket JBoss 4.2.3.GA. Poiščite datoteko z imenom jboss-4.2.3.GA.zip.

Nato boste morali ustvariti uporabnika, domači imenik in skupino z vsemi imeni jboss. Skupina je priročnost, ki v tem članku ni raziskana; omogočil vam bo razširitev privilegijev JBoss drugim uporabnikom na vašem strežniku Ubuntu.

Seznam 1 prikazuje komentirane ukaze za ustvarjanje jboss domači imenik, uporabnik in skupina, nato pa namestite strežnik JBoss. Nekateri ukazi imajo predpono sudo ker so korenski privilegirani ukazi.

Seznam 1. Ustvarjanje računa jboss in namestitev strežnika

echo Ustvari skupino jboss sudo groupadd jboss echo Ustvari uporabnika jboss, definiraj bash kot privzeto lupino uporabnika in / home / jboss kot odmev domačega imenika in uporabnika jboss vključi v skupino jboss sudo useradd -s / bin / bash - d / home / jboss -m -g jboss jboss echo Kopirajte datoteko jboss-4.2.3.GA v / home / jboss ali jo prenesite neposredno v ta imenik sudo mv jboss-4.2.3.GA / home / jboss echo Spremenite lastnika datoteke v jboss sudo chown jboss: jboss /home/jboss/jboss-4.2.3.GA echo Prijavite se v račun jboss sudo su jboss echo Pojdite v domači imenik jboss cd ~ echo Razpakirajte datoteko jboss-4.2.3. GA razpakirajte jboss-4.2.3.GA echo Ustvarite simbolno povezavo "jboss" za "jboss-4.2.3.GA". echo To vam omogoča spreminjanje različic JBoss z minimalnimi spremembami ln -s jboss-4.2.3.GA jboss

Če ukaz unzip še ni nameščen, vnesite naslednji ukaz (ko ste prijavljeni kot uporabnik s sudo), da ga namestite:

Sudo apt-get install unzip

Strežnik JBoss je zdaj v osnovi nameščen. Strežnik lahko zaženete z naslednjim ukazom:

/home/jboss/jboss/bin/run.sh

V tem primeru pa namesto tega namestite skript za samodejni zagon, tako da se storitev samodejno zažene ob zagonu gostitelja. Prenos JBoss je opremljen s tremi različnimi skripti int.d, vendar je treba vsako prilagoditi; prenesete lahko skript jboss-init.sh, ki bo omogočil samodejni zagon in zaustavitev strežnika. Nato zaženite ukaze iz seznama 2.

$config[zx-auto] not found$config[zx-overlay] not found