Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
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

9.201 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
  • Als Erste(r) kommentieren

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

×