Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Continuous Integration mit Hudson

9,236 views

Published on

Präsentation im Rahmen der Java User Group Hamburg (JUGHH.org) zum Thema Hudson und Continuous Integration.

Beispiele zum Projekt-Setup.

Published in: Technology
  • Be the first to comment

Continuous Integration mit Hudson

  1. 1. Continuous Integration mit Hudson https://hudson.dev.java.net/ » Dr. Christian Betz https://www.xing.com/profle/Christian_Betz http://twitter.com/vizMind
  2. 2. Über mich Studium und Promotion in Informatik an der Uni Würzburg In Hamburg seit 2005 Geschäftsführer knowIT-Software GmbH Software-Architekt bei der Plath GmbH 2
  3. 3. Continous Integration integriert nicht nur Software-Komponenten 3
  4. 4. Architektur 4
  5. 5. Coding 5
  6. 6. Qualitätssicherung 6
  7. 7. Projektmanagement 7
  8. 8. Hudson „An extensible continuous integration engine“ 8
  9. 9. Hudson einrichten 9
  10. 10. Starten Per WebStart » java -jar hudson.war » WAR in WebContainer » deployen Webbrowser öfnen (per default http://localhost:8080/) 10
  11. 11. Konfgurieren Browser-basiert: » System-Konfguration (eMail-Server, Pfade, Environment-Variablen) » Plugins » Nodes » Monitoring » Skript-Konsole » XML-basiert » Während Hudson läuft » 11
  12. 12. „Free Style Software-Projekt“ Erlaubt die Kombination von „jedem“ Versions-Kontrollsystem » (VCS) mit „jedem“ Buildverfahren SVN, CVS out-of-the-box » Maven, ANT, Shell, Batch out-of-the-box, auch beliebige Kombinationen » Build-Auslöser » Abhängig von Projekten » Zeitgesteuert » Abhängig vom VCS » Trigger über http-requests » 12
  13. 13. Build-Ergebnisse Je nach Projekt baut man unterschiedliche Artefakte » JARs, WARs » Installer » Source-Bundles » Builds können folgendes Ergebnis haben » Stable » Instable (Build läuft durch, aber z.B. Coverage ist unter Schwellwert) » Failed » Hudson kann Artefakte selbst archivieren oder fngerprinten » 13
  14. 14. Hudson im Einsatz bei Plath 14
  15. 15. Ein Beispiel-Projekt Server-Applikation als WAR » Deployment in einen JBoss-Cluster » Eclipse RCP Rich Client » zu starten per WebStart, verpackt in WAR » Deployment in den JBoss-Cluster » Eclipse Online-Hilfe » WAR mit OSGi-Bundles der Eclipse Hilfe » Deployment in den Jboss-Cluster » Client + Integrationstest » Ausführen auf Windows-Maschine » 15
  16. 16. Continous Build Baut nach jedem Check-in » Projekte werden über Maven gebaut (Multi-Module Projects) » Eclipse Client wird über Eclipse PDE Build (ANT) integriert » Build-Ergebnis » Compilierter Code, wird außerhalb von Hudson nicht weiterverwendet » Unit-Tests (JUnit) » Reporting von ToDo, Code Coverage, Checkstyle, FindBugs, PMD » Email bei Veränderung des Build-Ergebnisses » 16
  17. 17. Nightly Build Baut jede Nacht » Projekte werden über Maven gebaut, anderes Profl » Eclipse Client wird diesmal signiert und in WebStart-Archiv » „verpackt“ Services, Client-WebStart und Online-Hilfe werden in ein ZIP- » File gepackt Build-Ergebnis » Deploybares Artefakt, wird in ein Nexus-Repository „deployt“ » Cleanup der Datenbank (wird neu mit Testdaten gefüllt) » Deployment per Gant (aus Nexus-Repository) auf » JBoss-Cluster, wenn Build vorher erfolgreich 17
  18. 18. Integration Test Baut im Anschluss an erfolgreichen Nightly Build » Ist gebunden auf einen Windows-Slave » Führt einen Rich Client + Integrationstest-Bundle aus » Reporting über Junit » Zusammenfassen der Testergebnisse von Nightly-Build und » Integration Test 18
  19. 19. Hudson erweitern 19
  20. 20. Plugins Hudson hat einen eigenen » Plugin-Mechanismus eingebaut (inkl. Updates) VCS » ClearCase, GIT, Mercurial, Perforce » Build » Gant, Gradle, Grails, » NAnt (.NET), Phing (PHP), rake (Ruby) 20
  21. 21. Interessante Plugins ActiveDirectory Continous Integration Game » » LDAP Email Plugin Messaging » » IssueTracking-Plugins IRC » » Jabber » Bugzilla » Email » JIRA » Twitter » Trac » Deployment » Metriken » SCP » Checkstyle » FTP » Findbugs » Deploy (via Cargo) » Promoted Build Plugin » 21
  22. 22. Ofene Issues Erlaubt Commit von fehlerhaftem Code (anders als z.B. » Teamcity) Synchronisation der Build-Prozesse in der IDE und auf dem » Build-Server Vordefnierte Projekttypen noch nicht ausgereift » Fehlende Plugins für Spezialfälle » bazaar » 22
  23. 23. Continuous Integration als Schlüssel zum Projekterfolg? 23
  24. 24. Für Hudson spricht einiges... Open Source Auch zum Monitoring » » externer Jobs geeignet (z.B. Einfach aufzusetzen » Cleanup der Testumgebung) Leicht zu erweitern (Plugins) » File fngerprinting » Einfach zu bedienen » Trend reports » Sehr stabil » Verteiltes Bauen möglich » Permanente URLs (z.B. auf » latest-build) 24
  25. 25. … und noch mehr für Continuous Integration Kürzere Release-Zyklen » Fehler werden schneller entdeckt » Metriken können zentral gemessen werden » Automatische Changelogs » Transparenz für alle » 25
  26. 26. 26

×