continuous integration in heterogenen umgebungen
TRANSCRIPT
© Zühlke 2011
Vassilis Rizopoulos Carsten Kind
Vassilis Rizopoulos
Carsten Kind
Continuous Integration in heterogenen Umgebungen
24. November 2011 Folie 1
© Zühlke 2011
Am Anfang gab es Code
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind
der mit Hilfe von Zip-Dateien und Disketten transportiert werden musste…
und es fühlte sich so an:
24. November 2011 Folie 2
© Zühlke 2011
Versionskontrolle
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind 24. November 2011 Folie 3
© Zühlke 2011
Build-Systeme
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind 24. November 2011 Folie 4
© Zühlke 2011
Continuous Integration
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind 24. November 2011 Folie 5
© Zühlke 2011
Und was kommt danach…
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind 24. November 2011 Folie 6
© Zühlke 2011
Minimieren der Zeit zwischen Einchecken und Feedback über die Code-Qualität.
Ziel
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind 24. November 2011 Folie 7
© Zühlke 2011
Moderne Entwicklungsumgebung
Continuous Integration:
• Automatische Builds – Benachrichtigung von Build-Fehlern
• Automatische Testläufe – Benachrichtigung von fehlgeschlagene Tests
Zusätzlich:
• Anforderungen – Test Tracing, Code-Abdeckung
• Historische Sicht auf Build und Test-Fehler (Race-Conditions detektieren, Code-Schwachstellen detektieren, Fortschrittskontrolle)
Das alles muss den Entwicklern schnell und zuverlässig bereitgestellt werden. Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind 24. November 2011 Folie 8
© Zühlke 2011
Worüber wir hier nicht mehr reden wollen!
Build- & Test-Automatisierung sind akzeptierte Methoden und sollten eingesetzt werden.
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind 24. November 2011 Folie 9
© Zühlke 2011
Entwicklungsinfrastruktur
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind
Basic Infrastructure (HW
, O
S, Netzw
erkzonen usw.)
Backup
User Administration
ALM
Test
Build
Version Control
Support Services
24. November 2011 Folie 10
© Zühlke 2011
Heterogene Umgebung: Definition
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind 24. November 2011 Folie 11
© Zühlke 2011
Drei Projekte
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind
TFS
SL-Nunit / MSTest
TFSBuild
TFS
TFS
MSTest, rutema, selenium
TFSBuild
TFS
Sharepoint Portal
TFS
Unity, NUnit, Rutema, NI
Rake, Jenkins
subversion
Radiator, Blog
Embedded Project
24. November 2011 Folie 12
© Zühlke 2011
WP7-App
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind 24. November 2011 Folie 13
© Zühlke 2011
Entwicklungsumgebung für Windows Phone 7
Tools:
• Visual Studio 2010
• Silverlight Toolkit for Windows Phone
• TFS für – ALM – Versionskontrolle – Build
Aber wie kann man testen?
• .NET 4.0 Projekte mit verlinkten C#-Dateien
• Silverlight Unit Test Framework aus Toolkit
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind
TFS
SL-Nunit / MSTest
TFSBuild
TFS
24. November 2011 Folie 14
© Zühlke 2011
Unit Tests für Windows Phone 7
Entscheidung:
Unit-Testframework aus dem Silverlight Toolkit.
Vorteil:
• Kein artifizieller Code.
• Läuft direkt auf dem Gerät oder dem Emulator.
Nachteil:
• Keine Integration.
• Wie können die Tests in den Continuous Integration Build integriert werden?
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind 24. November 2011 Folie 15
© Zühlke 2011
Continous Integration Setup
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind
TFS
Build-Server
BuildService
Wp7TestActivity
Drop Build
Get Latest
Compile
Start Test-Runner
Test-Ergebnisse
Test-Runner
24. November 2011 Folie 16
© Zühlke 2011
Test-Runner
Kommunikation der WP7-Test-Activity
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind
Wp7TestActivity
MstestActivity
Result.trx
WCF Host
Tests gestartet
Kill process
Test-Ergebnis
Deployen Starten
Ausführen
Tests fertig
TFS “Publish” Testergebnisse
24. November 2011 Folie 17
© Zühlke 2011
Telematiklösung: Drei Länder, sechs Werke, weltweiter Einsatz
TU
Kunden-Sicht
Liebherr-Sicht
Funk (GPRS)
Baumaschine Liebherr RZ
Händler-Sicht
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind 24. November 2011 Folie 18
© Zühlke 2011
LiDAT: Flottenmanagement für Baumaschinen
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind
Internet
Internet
LiDAT OLTP Principal
LiDAT OLTP Mirror
LiDAT Data Warehouse
LiDAT Portal
Report Services
LiDAT Services Machine Services
Provider Services
LTP Server
Import Services
External Services
Active Directory
GIS
Inbox
24. November 2011 Folie 19
© Zühlke 2011
LiDAT: Ein Hersteller, viele Technologien
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind
• Viele Projekttypen
• Verteiltes System
• Externe Systemkopplung
• Versionswechsel
24. November 2011 Folie 20
© Zühlke 2011
• Unit Tests langsam (12s Startupzeit)
• Builds langsam (~40 Mins)
• Selenium Tests zerbrechlich
• TFS Version Control (2005/2008)
• Entwickler Builds ≠ CI Builds
LiDAT Entwicklungs-Umgebung
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind
TFS
MSTest, rutema, selenium
TFSBuild
TFS
Sharepoint Portal
24. November 2011 Folie 21
© Zühlke 2011
LiDAT: Entwicklungsansatz
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind
•VMs für alles
•Der Build Server hat immer Recht
•DB Schema unter Versionskontrolle
•Test Szenarien mit Daten
•Ein-Stop System Deployment 24. November 2011 Folie 22
© Zühlke 2011
“Embedded project”
• Zwei unterschiedliche Prozessoren, zwei Betriebssysteme
• Medizintechnik-Entwicklung nach ISO 13485, Software nach ISO 62304
• Zulassung weltweit, insbesondere in Europa, USA, Asien, …
• Hardware- und Software-Entwicklung
• TFS für Anforderungs- und Test-Management
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind
Embedded Project
24. November 2011 Folie 23
© Zühlke 2011
“Embedded Project”: Eckdaten
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind
4 Sprachen
5 Compiler
3 OS 4 IDEs
25 Leute
Safety
Guidelines
N+1
Tools Diversitär
Embedded Project
24. November 2011 Folie 24
© Zühlke 2011
Rake integriert die Umgebung:
• Ein Task für jede Aktion
• Zentrale Konfiguration der Umgebung
• Einheitliche Bedienungsschnittstelle
CI ist ein Beiprodukt
• Der Build ist nur ein weiterer Task im zentralen Script.
“Embedded Project”: Lösungsansatz
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind
TFS
Unity, NUnit, Rutema, NI
Rake, Jenkins
subversion
Radiator, Blog
Embedded Project
24. November 2011 Folie 25
© Zühlke 2011
Information Radiator: Schnelles Feedback
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind
Embedded Project
Jeder Screen ist das Ergebnis eines Tasks
24. November 2011 Folie 26
© Zühlke 2011
Zusammenfassung
• WP7: Obwohl die gesamte Entwicklungsumgebung homogen erscheint, sind dennoch erhebliche Anstrengungen notwendig um ein modernes CI zu ermöglichen.
• LiDAT: Obwohl alles ausschließlich auf Microsoft-Technologien basiert, wird die Vielzahl eingesetzter Technologien zu einer Herausforderung für Systemtests im Rahmen von CI.
• Embedded Project: Bei verschiedene Herstellern und verschieden Technologien ist die Integration der Umgebung die Hauptaufgabe. CI ist nur Teil davon.
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind
Embedded Project
24. November 2011 Folie 27
© Zühlke 2011
Fazit
Die Bereitstellung einer Entwicklungsinfrastruktur ist ein komplexes Software-Integrations-Projekt!
• Infrastruktur sollte wie alle Software Projekte behandelt werden: Versionierung, Release Management, automatische Deployments (sehr wichtig)
• Daumenregel: Ab 7+-2 Leuten braucht man jemanden, der sich hauptamtlich um die Umgebung kümmert. Dedizierte Rolle: Productivity Engineer
Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind 24. November 2011 Folie 28