Continuous Integration mit Hudson

9.003 Aufrufe

Veröffentlicht am

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

Beispiele zum Projekt-Setup.

Veröffentlicht in: Technologie
0 Kommentare
2 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
9.003
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
275
Aktionen
Geteilt
0
Downloads
96
Kommentare
0
Gefällt mir
2
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

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

×