Continuous Integration mit Hudson
                   https://hudson.dev.java.net/
               »




                   ...
Über mich
             Studium und Promotion in
        Informatik an der Uni Würzburg

                 In Hamburg seit 2...
Continous Integration
integriert nicht nur
Software-Komponenten




                        3
Architektur   4
Coding   5
Qualitätssicherung   6
Projektmanagement   7
Hudson
„An extensible continuous integration
engine“




                                        8
Hudson einrichten   9
Starten
    Per WebStart
»

    java -jar hudson.war
»

    WAR in WebContainer
»
    deployen


    Webbrowser öfnen
    ...
Konfgurieren
    Browser-basiert:
»

        System-Konfguration (eMail-Server, Pfade, Environment-Variablen)
    »

     ...
„Free Style Software-Projekt“
    Erlaubt die Kombination von „jedem“ Versions-Kontrollsystem
»
    (VCS) mit „jedem“ Buil...
Build-Ergebnisse
    Je nach Projekt baut man unterschiedliche Artefakte
»

        JARs, WARs
    »

        Installer
  ...
Hudson im Einsatz bei Plath   14
Ein Beispiel-Projekt
    Server-Applikation als WAR
»

        Deployment in einen JBoss-Cluster
    »

    Eclipse RCP Ri...
Continous Build
    Baut nach jedem Check-in
»

    Projekte werden über Maven gebaut (Multi-Module Projects)
»

    Eclip...
Nightly Build
    Baut jede Nacht
»

    Projekte werden über Maven gebaut, anderes Profl
»

    Eclipse Client wird diesm...
Integration Test
    Baut im Anschluss an erfolgreichen Nightly Build
»

    Ist gebunden auf einen Windows-Slave
»

    F...
Hudson erweitern   19
Plugins
    Hudson hat einen eigenen
»
    Plugin-Mechanismus eingebaut
    (inkl. Updates)
    VCS
»

        ClearCase, ...
Interessante Plugins
    ActiveDirectory             Continous Integration Game
»                           »

    LDAP Em...
Ofene Issues
    Erlaubt Commit von fehlerhaftem Code (anders als z.B.
»
    Teamcity)
    Synchronisation der Build-Proze...
Continuous Integration als
Schlüssel zum Projekterfolg?   23
Für Hudson spricht einiges...
    Open Source                         Auch zum Monitoring
»                               ...
… und noch mehr für
Continuous Integration
    Kürzere Release-Zyklen
»

    Fehler werden schneller entdeckt
»

    Metri...
26
Nächste SlideShare
Wird geladen in …5
×

Continuous Integration mit Hudson

8.989 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
8.989
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
277
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

×