29
© Zühlke 2011 Vassilis Rizopoulos Carsten Kind Vassilis Rizopoulos Carsten Kind Continuous Integration in heterogenen Umgebungen 24. November 2011 Folie 1

Continuous Integration in heterogenen Umgebungen

  • Upload
    zuehlke

  • View
    959

  • Download
    0

Embed Size (px)

Citation preview

© 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

© Zühlke 2011

Vielen Dank

Continuous Integration in heterogenen Umgebungen | Vassilis Rizopoulos, Carsten Kind 24. November 2011 Folie 29