Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven:...

76
16.11.2009 1 Continuous Integration in der Praxis n Das Institut für Geistiges Eigentum (IGE) n Vom alten zum neuen Build n Continuous Integration: Übersicht n Maven n Nexus n Eclipse / m2eclipse n Hudson n Metriken n Fragen

Transcript of Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven:...

Page 1: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

16.11.2009 … 1

Continuous Integration in der Praxisn Das Institut für Geistiges Eigentum (IGE)n Vom alten zum neuen Buildn Continuous Integration: Übersichtn Mavenn Nexusn Eclipse / m2eclipsen Hudsonn Metrikenn Fragen

Page 2: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 2

Disclaimer

n Nicht nur Qualitätssicherung, Testenn Software-Qualität allgemein

n Der Build unterstützt die Entwicklern Alles, was automatisch gemacht werden kann,

wird automatisch gemacht.

Page 3: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 3

Das Institut für Geistiges Eigentum (IGE)

n Kompetenzzentrum des Bundes für Geistiges Eigentum

n Markenn Patenten Designsn Urheberrecht

Page 4: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 4

Das Institut für Geistiges Eigentum (IGE)

n Software-Entwicklung mit Java 6n 20 Entwicklern Ablösung des Kernsystems durch ESVn Architekturboard: Chef SW-Entwicklung, 4

Entwicklern Je 2 Entwickler für alten und neuen Build

Page 5: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 5

Der alte Build

n Basierend auf Apache Antn Auf spezifische Bedürfnisse zugeschnittenn Library-Verwaltung in einem Verzeichnisn Build-Reihenfolge über Properties-Datein Für Nightly Build konzipiert

Page 6: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 6

Der alte Build: Vorteile

n Man hat einen vollständigen Nightly Build!Das haben nicht alle Software-Firmen...

n Flexibel an Bedürfnisse anpassbarn Ant ist sehr stabiln Kleine Hürde für den Einstieg

Page 7: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 7

Der alte Build: Nachteile

n Jeder Build ist spezifisch für jeweilige Firman Verständnis des Builds relativ schwierig

n Missbrauch als „Programmiersprache“n Für Prüfung der Abhängigkeiten immer

vollständiger Build notwendign Metriken wurden erzeugt, aber kein Build-

Abbruch

Page 8: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 8

Der alte Build: Nachteile

n Library: JAR Helln Was für JARs in welchen Versionen gibt es?n Welches Projekt benötigt welche JARs?n Woher sind sie heruntergeladen worden?n Was ist ihre Lizenz?n Haben wir die Kontrolle, wer was herunterlädt?

Page 9: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 9

Der neue Build: Ziele

n Mehr Kontrolle über Abhängigkeitenn Schnellere Reaktionszeiten bei Problemenn Automatische Überprüfung von Guidelinesn Verbesserung der SW-Qualität durch Metrikenn Möglichst auf Standard-Produkte und Open

Source bauenn Vorhandenes Know-How nutzen

n Schnittstelle zu Betrieb vereinfachen

Page 10: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 10

Der neue Build:Continuous Integration

n Automatisierter Build und Test bei jedem Commitn Zeitnahes Feedback für den Entwickler (Mail,

RSS)n Entwicklung immer gegen aktuellste stabile

Version der anderen Komponentenn Build-Resultat wird sofort anderen zur Verfügung

gestellt

Page 11: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 11

Übersicht

Einführung

Entwickler Aentwickelt ipi­prj1

Entwickler Bentwickelt ipi­prj2

ipi­prj2 hängt von ipi­prj1 ab.

Page 12: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 12

Übersicht

Eclipse,m2eclipse

Entwickler A

Lokaler Build

Lokales Maven Repository

xy.jar

mvn installipi­prj1

xy.jar ?

ipi­prj1­SNAP­

SHOT.jar

CVS Hudson Zentrales Maven Repository

Projekt Websites

Page 13: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 13

Übersicht

Page 14: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 14

Übersicht

Page 15: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 15

Übersicht

Eclipse,m2eclipse

Entwickler A

Nightly Build

xy.jar

xy.jar ?

ipi­prj1­SNAP­

SHOT.jar

 cvs checkout ipi­prj1  

Stabil?Ja

CVS Hudson Zentrales Maven Repository

Projekt Websites

 cvs checkout ipi­prj2  

ipi­prj2­SNAP­

SHOT.jarZZZZZ Stabil?

Ja

ipi­prj2ipi­prj1

site­deploy

Lokales Maven Repository

Entwickler B

Page 16: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 16

Maven

n Build-Framework von Apachen In unzähligen Projekten eingesetzt

n Apache-Projekten JBossn Glassfishn AppFusen Geronimon ...

Page 17: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 17

Maven: Build

n Ein Projekt definiert nicht seinenBuild, sondern seine Konfiguration

n POM = Project Object Modeln Fixer Build-Ablauf mit so

genannten Goals (analog zuAnts Tasks)

n Das Goal ruft alle vorhergehendenGoals auf

Page 18: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 18

Maven: Build

n Maven definiert Plugin-Architektur

n Plugins hängen sichin Goal ein

n Plugins sind wieder-verwendbar

n Durch eigene Pluginserweiterbar

n Aber quasi für alles gibt es schon ein Plugin

Page 19: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 19

Maven: POM

n POMs werden vererbtn ipi-parent

Definiert für alle Projekte die eingesetzten Maven-Plugins und die generelle Build-Konfiguration

n esv-parent erbt von ipi-parentDefiniert die Abhängigkeiten für das Projekt ESV

n esv-ipi-versions erbt von esv-parentDefiniert die Versionen der Komponenten des Projekts ESV

Page 20: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 20

Maven: Abhängigkeiten

n Beschreibung, von welchen anderen Projekten und Bibliotheken dieses Projekt abhängt

n Jedes Build-Artefakt (JAR, WAR, ...) weltweit eindeutig identifizierbargroupId, artifactId, version

n Transitive Abhängigkeiten unterstütztProjekt A braucht B, aber B braucht C

n Scopes: compile, runtime, test, provided

Page 21: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 21

Maven: Abhängigkeiten

n Zentrale Kontrolle über Abhängigkeitenn Projekt darf nur vorgegebene Abhängigkeiten benutzenn Dies wird automatisch überprüft

n Maven Enforcer Pluginn Welche Abhängigkeiten (von allen zugelassenen) darf ein

Projekt haben?n Z.B. Abhängigkeit auf API, nicht auf Implementationn Z.B. Abhängigkeit nur innerhalb des gleichen Projekts

(Basisklassen, Utilities etc.)n Vorsicht: Build-Zyklen!

Page 22: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 22

Maven: Version

n Versionierungskonzept in Mavenn <major>.<minor>.<bug fix>-<qualifier>n Vergleich als Text, nicht als Zahlen, daher

teilweise schlechte Vergleichen Versionskollisionen löst Maven automatischn Versionierte Abhängigkeit ändert sich nie mehrn Für die aktive Entwicklung gibt es SNAPSHOTs

n Wird immer auf neuere Datei-Version überprüft

Page 23: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 23

Maven: Projekt-Layout

n Verzeichnis- und Dateistruktureines Projekts standardisiert

n Abhängig vom Projekt-Typn (JAR, EAR, WAR, JSF, GWT, ...)

n Generierung möglichn Klare Trennung von Quell-Dateien und

generierten Dateienn Generierte Dateien werden mit clean gelöschtn Generierte Dateien werden nie eingecheckt

Page 24: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 24

Maven: Projekt

n Aufteilung in Module möglich:1 Projekt = n Module

n Architektonische Aufteilungn xyz-apin xyz-impln xyz-clientn xyz-batchn etc.

n Automatisch richtige Build-Reihenfolge bei Abhängigkeiten

Page 25: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 25

Maven: Projekt-Layout

n Vorteilen Schnelle Einarbeitungn Gleiche Packages in Klassen und Testklassen

n Weniger Methoden publicn Nachteile

n Man sollte nicht davon abweichenn Gut für neue Projekte, schlecht für bestehende

Page 26: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 26

Maven

n Schnittstelle zumBetrieb

n EARn WARn ZIP

n Immer ab Root-Verzeichnis (C:\ oder /)n Quasi alles möglich mit Maven Assembly Plugin

n Allerdings relativ komplex

Page 27: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 27

Maven-Site: About

Page 28: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 28

Maven-Site: Summary

Page 29: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 29

Maven-Site: Team

Page 30: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 30

Maven-Site: SCM

Page 31: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 31

Maven-Site: CI

Page 32: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 32

Maven-Site: Bugs

Page 33: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 33

Maven-Site: Changes

Page 34: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 34

Maven-Site: Dependencies

Page 35: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 35

Maven-Site: Analyse

Page 36: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 36

Maven-Site: Plugins

Page 37: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 37

Maven-“Site“: Updates?

Page 38: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 38

Maven-Site: Javadoc

Page 39: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 39

Maven-Site: Source

Page 40: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 40

Maven-Site: Tag List

Page 41: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 41

Maven-Site: Dokumentation

n Weitere Dokumentation kann generiert werdenn XDoc (ähnlich XHTML)n APT (ähnlich Wiki)n FML (XML für FAQs)n DocBook (XML, kann auch PDFs generieren)

Page 42: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 42

Maven: Vorteile

n Der De-facto-Standardn Viel Know-How vorhandenn (Inzwischen) gute Grunddokumentation auffindbar

n „Gemeinsame Sprache“, d.h. auch fremde Builds sind schneller verständlich

n Konvention statt Konfigurationn Konfiguration trotzdem nicht zu unterschätzen

n Beschreibt Projekt, nicht den Build-Ablaufn Daher Unterscheidung Anwender / Autor möglich

Page 43: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 43

Maven: Vorteile

n Es gibt quasi für alles ein Pluginn Wenn nicht, schreibt man eines

n Es können sehr reichhaltige Informationen generiert werden

n Testen im Ablauf eingebautn Build schlägt fehl wenn Tests fehlschlagenn Unterscheidung Unit Test / Integrationstest

Page 44: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 44

Maven: Nachteile

n The people who love Maven love the theory. The people who hate Maven hate the reality. (Zutubi)

n Schwieriges Debuggingn Spezialisten-Knowhow ist notwendig

n Am Markt verfügbarn Kommerzieller Support durch Sonatypen Unterschied zwischen Entwickler und Build-

Administratorn POM kann gross werden (geschwätziges XML)

Page 45: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 45

Maven: Nachteile

n Teilweise schlechte bis nur spärliche Dokumentation

n Absolutes Muss: Maven: The Definitive Guiden Weiteres Muss: Archiv der Mailing-Liste

n Plugins: Teilweise Bugs und schlechter Supportn Alpha-Versionen über Monaten Bekannte Bugs: „Fix it yourself“n Support auf der Mailing-Liste von null bis sehr gut

n Plugin-Versionen festlegen, sonst unvorhersehbarer Build

Page 46: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 46

Nexus

n Ein Proxy für Maven Repositories im Internetn Gruppierung von Repositories

n Von den Maven-Kernentwicklern (Sonatype) geschrieben

n Open Source und kommerziell (Nexus Pro)n Andere Produkte

n Artifactoryn Apache Archiva

Page 47: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 47

Nexus: Vorteile

n Schnellere Ladezeiten von Abhängigkeitenn Totale Kontrolle über Abhängigkeiten, bis hin zur

Versionn Verwaltung von Abhängigkeiten mit restriktiver

Lizenzn Z.B. Oracle JDBC-Treiber

n Auch als Eclipse Repository verwendbar

Page 48: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 48

Nexus: Vorteile

n Schnelle Suche von Abhängigkeitenn Web-GUI

Page 49: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 49

Nexus: Vorteile

n Schnelle Suche vonAbhängigkeiten

n m2eclipse überNexus-Index

Page 50: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 50

Nexus: Nachteile

n Eine weitere Software zum Verwalten und Verstehen

n Single Point of Failuren Totale Kontrolle bedingt eine Kontrollstelle

n Kann unter Umständen SW-Entwicklung behindern

Page 51: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 51

m2eclipse

n Integration von Maven in Eclipsen Bequeme Suche nach Abhängigkeiten

n Auch Source Code und Javadocn Eigene Projektabhängigkeiten werden

intelligent verwaltetn Projekt geschlossen? à JARn Projekt offen? à Projekt

n Source Code lesbarn Debugging möglich

Page 52: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 52

m2eclipse

Page 53: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 53

m2eclipse: Vorteile

n Verheiraten zweier unterschiedlicher Welten:Es funktioniert!

n Gute Integration in Eclipsen Theoretisch Unterstützung von speziellen

Eclipse-Projektarten (WTP)n Web-Projektn EAR-Projekt

n Sonatype will in 1.0 den inkrementellen Build von Eclipse vollständig unterstützen

Page 54: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 54

m2eclipse: Nachteile

n Teilweise langsamn Besonders Öffnen und Schliessen von Projekten

n Work in progress (0.9.7)n Unterschiedliche Builds

n Maven: Voller Buildn Eclipse: Inkrementeller Build

n Manchmal ist Handarbeit nötig, um Eclipse aufzufrischen

Page 55: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 55

Hudson

n Der Build-Butlern „Shooting Star“ unter den Build/CI-Servernn Plugin-Architektur, es gibt ca. 200 verfügbaren Verteilte Builds auf x Servern

n Verteilte Lastn Andere Betriebssysteme

n Kommerzieller Support durch Sun

Page 56: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 56

Hudson

n Benutzt durchn Glassfishn JBossn Sonatype (Maven)n NetBeansn SwingLabsn Apache Lucenen ...

Page 57: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 57

Hudson

n Flexibler Einsatz von Build-Frameworksn Ant, NAntn Mavenn Grailsn Pythonn Rubyn Gantn Buckminstern Gradlen MSBuildn ...

Page 58: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 58

Hudson

n Stösst automatisch Builds von Projekten an, die das erzeugte Projekt als Abhängigkeit haben

n Wird bei Maven-Projekten automatisch erkanntn Läuft zwar länger, dafür 100% stabiler Zustand

n Im IGEn CI-Server mit schnellem Build

n Rasches Feedback per Mail an „Schuldige“n „Schuldige“ per Source Code Management ermittelt

n Vollständiger Nightly Build mit Erzeugen der Maven-Siten Integrationstest nach Deploy des EARs

Page 59: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 59

Hudson

Page 60: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 60

Hudson

Page 61: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 61

Hudson: Vorteile

n Extrem einfach zu installierenn Vieles läuft einfach ohne Arbeitn Gute Communityn Macht Spass: Schönes GUI (AJAX), tolle

Funktionalität – und alles gratis!n Schnelle Release-Zyklenn Build-Information: Mail, RSS,

Firefox-Plugin, Eclipse-Plugin,iPhone, Spezial-Displays, ...

Page 62: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 62

Hudson: Vorteile

n Historische Diagramme mitausgewählten Daten

n Metrikenn Compiler-Warnungenn Tests (erfolgreich, ignoriert, fehlerhaft)

n Permanente Linksn Z.B. letzter erfolgreicher Build

von Projekt xyzn Ideal für Dokumentation

z.B. über ein Wiki

Page 63: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 63

Hudson: Nachteile

n Releases haben oft Regressionsfehlern Konfiguration nicht vererbt: x-fach kopiert und

angepasstn Wir generieren sie teilweise mit Shell-Scripts

n Gehostet auf dev.java.net: Extrem langsamn Upstream/Downstream Builds mit Maven z.T.

fehlerhaftn Fehlerhafte Tests ergeben nur Warnung, keinen

gebrochenen Build

Page 64: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 64

Metriken: JDepend

Page 65: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 65

Metriken: JavaNCSS

n Momentanausser Betrieb

n Kommt mit gewissenGenerics nicht zurecht!

Page 66: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 66

Metriken: FindBugs

n Untersucht Bytecode nach bekannten Bug-Patterns

n Jedes Pattern hat eine IDZ.B. ES_COMPARING_PARAMETER_STRING_WITH_EQ

Page 67: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 67

Metriken: Checkstyle

n Umsetzung von Java-Guidelines, z.B. Sun Code Conventions

n Teilweise auch Bug Patternsn Javadoc-Überprüfung

Page 68: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 68

Metriken: PMD

n Sucht potenzielle Probleme im Source Coden Bugsn Toter Coden Kopierter Coden Suboptimaler Code

Page 69: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 69

„Metriken“: Compiler Warnings

n In Maven konfigurierbar (-Xlint)

Page 70: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 70

Metriken: Cobertura (Testabdeckung)

Page 71: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 71

Metriken: Cobertura (Testabdeckung)

Page 72: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 72

Metriken: Vorteile

n Laufen automatisch ab, im Gegensatz zu Code Reviewsn Grafische historische Übersicht motiviert (hoffentlich):

„Ist mein Projekt jetzt besser?“n Sind auf individuelle Bedürfnisse anpassbar

n Konfigurationn Eigene Regeln schreiben

n Wenn Regeln festgelegt worden sind, kann der Build entsprechend abbrechen

n SW-Qualität „erzwingen“?

Page 73: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 73

Metriken: Nachteile

n Mecker, mecker, mecker...n Build Game einführen?

n Teilweise Bugs (False Positives), daher müssen Schwellwerte erhöht werden

n In Hudson: Anzahl Fehler nur absolut konfigurierbar, nicht relativ zur Projektgrösse

n Compiler-Konfiguration in Eclipse: Toll, aber nicht wiederverwendbar

n Nicht einmal für den Eclipse Headless Build!n Teile davon können in Checkstyle und PMD emuliert

werden

Page 74: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 74

Fazit

n Continuous Integration lohnt sich auf jeden Falln Verringert Reaktionszeit bei Fehlernn Wiederkehrende Arbeit automatisieren

n Metriken zwingen zu Disziplinn Gesundes Mass an Vorschriften findenn Es werden nie alle mit allem einverstanden sein

n Der Build ist nicht ein Nebengeräusch der Entwicklungn Er ist zentral und braucht Betreuungn Out-of-the-box-Lösung gibt es nicht, Anpassungen immer

nötign Alles zusammen kann relativ komplex werden

Page 75: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

…16.11.2009 75

Fragen

n Zuerst eine an Sie:Was passiert bei Ihnen, wenn jemand den Build bricht?

n Ihre Fragen?

Page 76: Continuous Integration in der Praxis · Administrator n POM kann gross ... n Absolutes Muss: Maven: The Definitive Guide n Weiteres Muss: ... n Artifactory n Apache Archiva. 16.11.2009

16.11.2009 … 76

Links

n Institut für Geistiges Eigentumn Mavenn Nexusn Hudsonn FindBugs, Checkstyle, PMD, Cobertura