Programmering

Kontinuerlig integrasjon med Hudson

Kontinuerlig integrering har blitt vanlig praksis for team som fokuserer på å sikre kodekvalitet gjennom programvarens utvikling. I denne artikkelen introduserer Nicholas Whitehead Hudson, en populær open source CI-server. Lær hvordan du konfigurerer en Hudson-server i applikasjonsutviklingsmiljøet ditt (eksempler er gitt for Windows XP med Tomcat 6 eller Ubuntu Linux med JBoss AS), få ​​en oversikt over de mange konfigurasjonsalternativene Hudson tilbyr, og implementer deretter en automatisert bygging, test, og rapporteringsprosess for et eksempel på prosjekt. Nivå: Nybegynner

Kontinuerlig integrering (CI) er et sett med fremgangsmåter som skal lette og stabilisere prosessen med å lage programvarebygging. CI bistår utviklingsteam med følgende utfordringer:

  • Programvare bygge automatisering: Med CI kan du starte byggeprosessen til en programvareartifakt ved å trykke på en knapp, på en forhåndsdefinert tidsplan eller som svar på en spesifisert hendelse. Hvis du vil bygge en programvareartefakt fra kilden, er ikke byggeprosessen bundet til en spesifikk IDE, datamaskin eller person.
  • Kontinuerlig automatisert verifisering av bygg: Et CI-system kan konfigureres for kontinuerlig å utføre builds når ny eller modifisert kildekode sjekkes inn. Dette betyr at mens et team av programvareutviklere periodisk sjekker inn ny eller modifisert kode, verifiserer CI-systemet kontinuerlig at build ikke brytes av den nye koden. Dette reduserer behovet for utviklere å sjekke med hverandre om endringer i gjensidig avhengige komponenter.
  • Kontinuerlig automatisert byggetesting: En utvidelse av byggverifisering, denne prosessen sikrer at ny eller modifisert kode ikke fører til at en rekke forhåndsdefinerte tester på de bygde gjenstandene mislykkes. I både byggverifisering og testing kan feil utløse varsler til interesserte parter, noe som indikerer at en build eller noen tester har mislyktes.
  • Post-build prosedyre automatisering: Byggesyklusen til en programvareartefakt kan også kreve flere oppgaver som kan automatiseres når byggverifisering og testing er fullført, for eksempel å generere dokumentasjon, pakke programvaren og distribuere gjenstandene til et løpende miljø eller til et programvarelager. På denne måten kan gjenstander raskt gjøres tilgjengelig for brukerne.

For å implementere en CI-server trenger du i det minste et tilgjengelig kildekodedepot (og kildekoden i det), et sett med byggeskripter og -prosedyrer, og en rekke tester for å utføre mot de bygde gjenstandene. Figur 1 skisserer den grunnleggende strukturen til et CI-system.

Systemkomponentene spiller inn i følgende rekkefølge:

  1. Utviklere sjekker ny og modifisert kode i kildekodedepotet.
  2. CI-serveren oppretter et eget arbeidsområde for hvert prosjekt. Når en ny bygg blir bedt om eller planlagt, blir kilden hentet fra depotet til dette arbeidsområdet, hvor bygningen deretter kjøres.
  3. CI-serveren utfører byggeprosessen på det nyopprettede eller oppdaterte arbeidsområdet.
  4. Når byggingen er fullført, kan CI-serveren eventuelt påkalle den definerte testpakken på de nye gjenstandene. Hvis build mislykkes, kan registrerte personer bli varslet via e-post, direktemeldinger eller noen annen metode.
  5. Hvis build er vellykket, blir gjenstandene pakket og overført til et distribusjonsmål (for eksempel en applikasjonsserver) og / eller lagret som en ny versjonert gjenstand i et programvarelager. Dette depotet kan være en del av CI-serveren, eller kan være et eksternt arkiv, for eksempel en filserver eller et programvaredistribusjonsside som Java.net eller SourceForge. Kildekodedepotet og artefaktregisteret kan være separate, og det er faktisk mulig å bruke noen CI-servere uten noe formelt kildekontrollsystem i det hele tatt.
  6. CI-servere har vanligvis en slags konsoll der prosjekter kan konfigureres og feilsøkes, og hvor forespørsler kan utstedes for operasjoner som ad hoc-øyeblikkelig bygging, rapportgenerering eller gjenfinning av innebygde gjenstander.

Hudson: En kontinuerlig integreringsserver

Kontinuerlig integrasjon har vokst i popularitet de siste årene, og i dag har du ganske mange CI-servere å velge mellom, både kommersielle og gratis. Jeg hadde personlig brukt fire CI-servere før en kollega anbefalte meg å se på Hudson. Jeg ble umiddelbart imponert over det. Mens jeg i utgangspunktet antok at Hudson ikke var kjent, viser en undersøkelse på Java Power Tools-nettstedet den som den mest brukte CI-serveren blant respondentene, og samlet (i skrivende stund) 37,8 prosent av alle stemmer.

Støttede SCM-er

Hudson har integrert støtte for Subversion rett ut av esken, og bare en liten mengde konfigurasjon er nødvendig for å integrere med CVS, forutsatt at CVS-klienten er installert på Hudson-verten. Flere andre kildekodestyringsløsninger (SCM) støttes i form av Hudson-plugins. I skrivende stund støttes følgende SCM:

  • Accurev
  • BitKeeper
  • ClearCase
  • Git
  • Mercurial
  • Perforce
  • StartTeam
  • Team Foundation Server
  • Visual SourceSafe
  • URL SCM (et spesielt SCM-plugin som tillater bruk av URL-er for SCM)

I denne artikkelen vil jeg bruke Subversion og kildedepotet på Java.net, så du trenger ikke å installere noen av disse pluginene. (Som en ekstraordinær kjenner jeg noen som jobber med et MKS SourceIntegrity Hudson-plugin. Hvis du er interessert i det, send meg en e-post.)

Hudson er et gratis og åpen kildekode-produkt som vert på Java.net. Det ble opprinnelig skrevet av Kohsuke Kawaguchi, en personalingeniør i Sun Microsystems, som kunngjorde utgivelsen på bloggen sin i februar 2005. Hudson har siden hatt omtrent 154 utgivelser.

Her er noen av grunnene til at jeg liker Hudson, og hvorfor jeg vil anbefale det til deg, uten noen uvanlige krav:

  • Av alle CI-produktene jeg har brukt, er det uten tvil det enkleste å installere og konfigurere.
  • De nettbaserte brukergrensesnittene er veldig vennlige, intuitive og responsive, og gir i mange tilfeller umiddelbar Ajax-aktivert tilbakemelding på individuelle konfigurasjonsfelt.
  • Hudson er Java-basert (som er nyttig hvis du er en Java-utvikler), men er ikke begrenset til å bygge Java-basert programvare.
  • Hudson er rent komponentert og tilbyr en veldefinert og dokumentert utvidbarhets-API i form av Hudson-plugins. Dette har igjen ført til et stort bibliotek med Hudson-plugins som utvider serverens funksjonalitet; disse er fritt tilgjengelige og kan installeres fra Hudson-konsollen.

Installere Hudson: Windows XP eller Ubuntu Linux

For å bruke Hudson trenger du et tilgjengelig og støttet kildekontrollsystem (se sidestøtten "Støttede SCM-er" for en liste), kilde som kan bygges inn i en gjenstand og et fungerende build-skript. Utover det er alt du virkelig trenger for å installere og konfigurere en fungerende Hudson-server en installasjon av Java, versjon 1.5 eller nyere, og Hudson-installasjonsfilen, som kommer i form av et Java EE-webarkiv (WAR). Du kan starte serveren veldig enkelt ved å bruke følgende kommandolinje:

C: \ hudson> java -jar hudson.war

Det er sannsynligvis mer vanlig å distribuere Hudson på en Java-servletcontainer som er basert på spesifikasjonene Servlet 2.4 og JSP 2.0, for eksempel GlassFish, Tomcat, JBoss eller Jetty. I de neste avsnittene vil jeg gå gjennom to Hudson-installasjonsscenarier: en bruker Tomcat 6 på Windows XP, og en annen bruker JBoss 4.2.3 på Ubuntu Linux. (JBoss AS 5.0 ble utgitt etter innleveringsdatoen for denne artikkelen.)

Installere Hudson: Tomcat 6 og Windows XP

Jeg vil anta at du allerede har versjon 1.5 eller nyere av Java installert på Windows XP-maskinen din. Ved å følge trinnene nedenfor installeres Tomcat 6.0.18 ved hjelp av Windows Service Installer, slik at Hudson starter umiddelbart etter at Windows XP starter opp og kjører i bakgrunnen, selv når ingen brukere er logget på. Nedlastingsfilen for Tomcat er apache-tomcat- 6.0.18.exe, som du bør utføre for å starte Tomcat-installasjonen.

Tomcat-installasjonen vil be deg om å velge installasjonsalternativer. Husk å velge Tilpasset alternativer og deretter Service, som vist i figur 2, slik at Tomcat vil kjøre som en tjeneste.

Deretter velger du en katalog der du vil installere Tomcat, som vist i figur 3. Jeg anbefaler på det sterkeste at du velger en katalog uten mellomrom. Du kan takke meg senere.

Nå vil installasjonsprogrammet spørre deg hvilken port du vil høre på. Standard er port 8080, noe som sannsynligvis er greit; bare sørg for at du ikke har et annet program som bruker den porten. Hvis du gjør det, vil ikke Tomcat starte ordentlig. Du vil også bli bedt om å oppgi et brukernavn og passord for Tomcat-administratoren. Alt dette er vist i figur 4.

Installatøren vil da be deg om å oppgi stedet for Java JRE du har installert. Som du kan se i figur 5, brukte jeg Sun Java 1.6.0_07.

Når du klikker Installere, skal installasjonen kjøre til fullført, og tjenesten vil begynne å kjøre. Du kan sørge for at Tomcat fungerer riktig ved å peke nettleseren din til // localhost: 8080 (erstatte det riktige navnet eller IP-adressen for localhost hvis du ikke bruker en nettleser som kjører på datamaskinen der Tomcat er installert). Nettsiden som vises skal se ut som skjermbildet i figur 6.

For å installere Hudson, kopier du hudson.war-filen til webapps-underkatalogen til Tomcat-installasjonskatalogen. Hvis du brukte samme installasjonskatalog som vist i figur 3, vil dette være C: \ Tomcat6 \ webapps. Tomcat vil distribuere WAR-filer, men det enkleste å gjøre nå er å starte Tomcat på nytt. Det er to måter å gjøre dette på. Den første er å åpne et DOS-skall og skrive inn følgende kommandoer:

 C: \ Tomcat6> nettstopp Tomcat6 C: \ Tomcat6> nettstart Tomcat6

Det andre alternativet er å åpne tjenesteprogrammet. Denne appleten finner du i gruppen Administrative verktøy i kontrollpanelet, som du kan finne ved å klikke Start-knappen på Windows-verktøylinjen og deretter velge Innstillinger og så Kontrollpanel. I tjenesteprogrammet finner du tjenesten som heter Apache Tomcat og klikk deretter på Omstart knapp. Dette er illustrert i figur 7.

Hudson skal nå installeres. Du kan bekrefte dette ved å peke nettleseren din til // localhost: 8080 / hudson. Hovedsonskjermen er vist i figur 8.

Det er alt det er! Hvis du er komfortabel med et applikasjonsutviklingsmiljø basert på Windows XP og Tomcat, er du klar. Hvis du foretrekker et system som kjører JBoss og Ubuntu Linux, kan du lese videre.

Installere Hudson: JBoss 4.2.3 på Ubuntu Linux 8.04 (Hardy Heron)

For å installere Sun Java 1.6 på Ubuntu, åpner du et skall og utfører følgende kommando:

 sudo apt-get install sun-java6-jdk

Ved utstedelse av en sudo kommandoen, blir du bedt om å skrive inn passordet ditt.

Merk at det er flere måter å installere JBoss på; i teknikken som er beskrevet her, vil du lage en dedikert jboss bruker. Dette regnes som en best praksis, og er å foretrekke fremfor å installere JBoss i din egen hjemmekatalog. Fremgangsmåten som er beskrevet her, er blitt kondensert fra en nyttig beskrivelse på Ubuntu-fora.

Først må du laste ned JBoss 4.2.3.GA-pakken. Se etter filen kalt jboss-4.2.3.GA.zip.

Deretter må du opprette en bruker, en hjemmekatalog og en gruppe, alle med navn jboss. Gruppen er en bekvemmelighet som ikke er utforsket i denne artikkelen; det vil tillate deg å utvide JBoss-rettigheter til andre brukere på Ubuntu-serveren.

Oppføring 1 viser de kommenterte kommandoene for å opprette jboss hjemmekatalog, bruker og gruppe, og installer deretter JBoss-serveren. Noen kommandoer er prefikset med sudo fordi de er rot-privilegerte kommandoer.

Oppføring 1. Opprette jboss-kontoen og installere serveren

ekko Opprett jboss-gruppen sudo groupadd jboss echo Opprett jboss-brukeren, definer bash som brukerens standardskall og / home / jboss som hjemmekatalogekko og gjør brukeren jboss til en del av gruppen jboss sudo useradd -s / bin / bash - d / home / jboss -m -g jboss jboss echo Kopier jboss-4.2.3.GA-filen til / home / jboss eller last ned direkte til den katalogen sudo mv jboss-4.2.3.GA / home / jboss echo Bytt eier av filen til jboss sudo chown jboss: jboss /home/jboss/jboss-4.2.3.GA ekko Logg inn på jboss-kontoen sudo su jboss echo Gå til jboss-hjemmekatalogen cd ~ echo Pakk ut filen jboss-4.2.3. GA pakke ut jboss-4.2.3.GA ekko Opprett en symbolsk lenke "jboss" for "jboss-4.2.3.GA". echo Dette lar deg endre JBoss-versjoner med minimale endringer ln -s jboss-4.2.3.GA jboss

Hvis unzip-kommandoen ikke allerede er installert, skriv inn følgende kommando (mens du er logget på som en sudo-aktivert bruker) for å installere den:

Sudo apt-get install pakke ut

JBoss-serveren er nå i utgangspunktet installert. Du kan starte serveren ved hjelp av følgende kommando:

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

I dette eksemplet vil du imidlertid i stedet installere et automatisk oppstartsskript slik at tjenesten starter automatisk når verten starter. JBoss-nedlastingen kommer med tre forskjellige int.d-skript, men hver må justeres; du kan laste ned skriptet jboss-init.sh, som vil aktivere automatisk start og stopp av serveren. Kjør deretter kommandoene som vises i Oppføring 2.

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