Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilDamián Dušek
1
Technologická středa Continuous Integration with Maven and Hudson Vlastimil Menčík 11.9.2009
2
© 2009 ET NETERA a.s. Continuous Integration 11.9.2009 Obsah 1.Motivace 2.Hudson 3.První pokus o CI 4.Maven 5.Druhý pokus o CI 6.Integrační testy
3
© 2009 ET NETERA a.s. Continuous Integration 11.9.2009 Motivace Všeobecně známá: Automatizace buildů, testování a deploymentu Včasné odhalení chyb Ušetření práce developerů, maintainerů i administrátorů Není potřeba shánět „někoho, kdo to buildne“ Úspora času a nervů
4
© 2009 ET NETERA a.s. Continuous Integration 11.9.2009 Hudson Open source CI nástroj Běží v servletovém containeru Podporuje SCM nástroje (CVS, SVN a další) Umí spouštět ant, maven, případně custom shell skripty Buildy lze plánovat časově, sledovat změny v SCM, případně spouštět řetězově
5
© 2009 ET NETERA a.s. Continuous Integration 11.9.2009 Hudson + ant Necháme Hudson buildovat naše projekty tak, jak jsou Jenom „trochu“ upravíme antovský buildfile Problém: už jsme mimo prostředí Eclipse Musíme kompilovat Musíme definovat kompilační classpath Musíme tedy udržovat classpath pro Eclipse i pro ant Uděláme další plugin do antu, který do bude dělat za nás?
6
© 2009 ET NETERA a.s. Continuous Integration 11.9.2009 Ukázka – JNP_JASPER_REPORTS
7
© 2009 ET NETERA a.s. Continuous Integration 11.9.2009 Hudson + ant Hlavním problémem jsou závislosti Udržovat classpath pro Eclipse i pro Hudson Hudson musí mít přístup do installu Pokud nechceme commitovat jary do SCM Dohromady ale získáme jenom automatizaci buildu Všechno další (řešení závislostí, spouštění testů, deployment) si musíme vyřešit sami v antu Tato cesta znamená hodně „programování“ v antu
8
© 2009 ET NETERA a.s. Continuous Integration 11.9.2009 Apache Maven Buildovací nástroj Koncepce se ale od Antu výrazně liší Convention over configuration Project Object Model (POM) Popis projektu – ne procedurální zápis buildu Obsahuje závislosti na dalších projektech Životní cykly buildu Fáze Pluginy
9
© 2009 ET NETERA a.s. Continuous Integration 11.9.2009 Maven - repositáře Centrální - http://repo1.maven.org/maven2/http://repo1.maven.org/maven2/ Lokální – slouží hlavně jako cache Lze přidávat další V POMu V nastaveních instalace Mavenu Typicky firemní repositář a repositáře třetích stran Podpora proxování
10
© 2009 ET NETERA a.s. Continuous Integration 11.9.2009 Maven - pluginy Pugin má několik cílů (goals) MOJO = implementace cíle pluginu Cíle bývají automaticky spojené s určitou fází buildu Např. surefire:test s fází test Pluginů je hodně http://maven.apache.org/plugins/index.html http://mojo.codehaus.org/plugins.html Jedním z nich je antrun – lze tedy volat ant Můžeme si napsat vlastní
11
© 2009 ET NETERA a.s. Continuous Integration 11.9.2009 Maven – integrace do IDE Plugin do Eclipse – m2eclipse Grafický editor POMu Spouštění buildů Vyváření Maven projektů Přidání závislostí do Eclipse classpath projektu
12
© 2009 ET NETERA a.s. Continuous Integration 11.9.2009 Ukázka – mavenized JNP_JASPER_REPORTS
13
© 2009 ET NETERA a.s. Continuous Integration 11.9.2009 Hudson + Maven Externí závislosti a classpath vyřešil přímo Maven Maven má i spoustu dalších výhod Tranzitivní závislosti ušetří spoustu času Na čem všem závisí Hibernate? Méně „programování“ v Antu Je potřeba řešit jenom „speciální“ případy „non-mavenized“ závislosti si musíme sami přidat do repositáře
14
© 2009 ET NETERA a.s. Continuous Integration 11.9.2009 Maven a testy Jednotkové testy Vestavěný surefire-plugin automaticky ve fázi „test“ Integrační testy failsafe-plugin Související fáze: pre-integration-test, integration-test, post- integration-test, verify Nasazení na integrační prostředí, běh testů, úklid, vyhodnocení testů (a případný fail buildu) Integrační prostředí vždy uklizeno (torn down) Výsledky testů se ukládají a lze je prohlížet v Hudsonu nebo někam publikovat
15
© 2009 ET NETERA a.s. Continuous Integration 11.9.2009 Ukázka – JNP_4_TICKETPRO
16
© 2009 ET NETERA a.s. Continuous Integration 11.9.2009 Převod jNP projektu na Maven Nemáme ETN Maven repository Přidat všechny ETN knihovny do lokálního repositáře Enhancování assetů Není plugin pro naší implementaci JDO Volání antu Native2Ascii a licence pro Xstandard vyřešeny pomocí existujících pluginů Nasazování na integrační prostředí Problém při použití Tomcat Manageru (PermGen space)
17
© 2009 ET NETERA a.s. Continuous Integration 11.9.2009 Pozorování Kombinace Hudson + Ant sama o sobě tolik nepřinese a i dlouhodobě je dost pracná Hudson + Maven vyžaduje značnou počáteční investici, přináší však mnoho výhod, které do budoucna můžou ušetřit velké množství práce Řadu výhod přináší samotný Maven i bez CI Bez jednotkových a integračních testů ztrácí CI efekt
18
© 2009 ET NETERA a.s. Continuous Integration 11.9.2009 Odkazy http://maven.apache.org/ http://maven.apache.org/ https://hudson.dev.java.net/ https://hudson.dev.java.net/ http://www.mvnrepository.com/ (vyhledávač artefaktů) http://www.mvnrepository.com/ http://m2eclipse.sonatype.org/ http://m2eclipse.sonatype.org/
19
© 2009 ET NETERA a.s. Continuous Integration 11.9.2009 Závěr Prostor k diskuzi
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.