Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven...

78
Die Datenbank-Spezialisten. Continuous Integration für Eclipse 4 RCP-Anwendungen mit Maven/Jenkins/Nexus/Sonar Hannes Schmidt – 02.10.2015

Transcript of Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven...

Page 1: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Continuous Integration für Eclipse 4 RCP-Anwendungen mit Maven/Jenkins/Nexus/Sonar

Hannes Schmidt – 02.10.2015

Page 2: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Eclipse-Basics

Page 3: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Plugins, Features, Produkte …

Plugin A

Plugin B

Plugin C

Feature A

Feature B

Produkt

Page 4: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Manifest

Manifest-Version: 1.0

Bundle-ManifestVersion: 2

Bundle-Name: EXAMPLE-PROJECT

Bundle-SymbolicName: org.example.project;singleton:=true

Bundle-Version: 3.18.1.qualifier

Require-Bundle: org.apache.log4j;bundle-version="1.2.0";visibility:=reexport

Bundle-ActivationPolicy: lazy

Bundle-RequiredExecutionEnvironment: JavaSE-1.6

Export-Package: org.example

Import-Package: org.osgi.framework;version="1.7.0";resolution:=optional

Page 5: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Projektanalyse vor Eclipse RCP

Page 6: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Stand vor Eclipse RCP-Projekt

Ticketsystem Eigenentwicklung

Versionsverwaltung Eigenentwicklung

Ticket- und Versionsverwaltung auf selber DB, arbeiten eng miteinander zusammen

Applikationsstart über Java Webstart

Page 7: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Stand vor Eclipse RCP-Projekt

Ticket kapselt installierbaren Patch

pro Werktag 20 – 40 Tickets Durchsatz

jeder Kunde hat anderen Patchstand

Installation eines Patches mittels Apache Ant

Page 8: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Modultypen

Datenbankmodule (Tabellen, Sequenzen, Trigger, Packages, Views, Types …)

Datenbankskripte (Stammdaten, Datenmigration)

Java-Module, über Eclipse exportiert

Oracle-Forms-Module (Maske, Bibliothek)

Page 9: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Probleme

veraltete Technologie (Oracle Forms)

Komplexität: ~1000 Forms-Masken, +20000 DB-Module

sehr modulare Auslieferung

extrem kurze Patchzyklen

Page 10: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Continuous Integration

Page 11: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Continuous Integration

„Beschreibt den Prozess des fortlaufenden Zusammenfügens von Komponenten zu einer Anwendung.“

Page 12: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Motivation für CI

kurze Patchzyklen im Projekt

Release-Aufwand war mit vorheriger Technologie sehr gering

Entwicklungsgeschwindigkeit musste gleich bleiben

im RCP-Projekt sollte der Release-Aufwand genauso niedrig sein

Page 13: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Tools für CI

Versionsverwaltung

Repository-Manager

Build-Automatisierung

Continuous Integration Tool

Tool für Code-Qualität

Page 14: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Versionsverwaltung

Page 15: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Versionsverwaltung

Subversion

CVSGit

Mercurial

Bitkeeper

zentralisiert

verteilt

Page 16: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Variante 1

core core-test

Plugin Plugin.test

SCM-Repository A

branches

tags

trunk

branches

tags

trunk

Page 17: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Variante 2

core

Host

SCM-Repository A

branches

tags

trunk

Plugin

Test

Page 18: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Repositories

Page 19: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

p2 Repository

Equinox Sub-Projekt

Updateseite

Erstellen der Compile-Umgebung

content.xml

artifacts.xml

features/

plugins/

a.feature_1.0.0.xml

a.plugin_1.0.0.jar

Page 20: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Maven2 Repository

lokal

intern

öffentlich

org

example

example-project

1.0.0

example-project-1.0.0.jar

example-project-1.0.0-source.jar

Page 21: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Repository-Manager

Page 22: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Repository-Manager

Archiva

Artifactory

Nexus

Page 23: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Konfiguration Repositories

m2-Snapshot-Repo

m2-Stable-Repo

p2-Snapshot-Repo

p2-Stable-Repo

mavendeploy

release

p2-Third-party-Repo

special

P2-Capability P2-Capability

Page 24: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Build-Automatisierung

Page 25: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Build-Automatisierung

Apache Ant

Apache Maven

Gradle

Eclipse PDE

Page 26: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Maven

Lebenszyklus

– validate, compile, test, install, deploy…

Project Object Model

Convention over Configuration

Abhängigkeitsmanagement

Page 27: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Tycho

Extension für Maven

Manifest-first

unterstützt Bundles, Fragmente, Features, Update-Sites …

kaum Redundanz in Metadaten bei POM und Manifest

Page 28: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Jarcontent.xml

PluginsTargetmanifest.mf

Tycho – Funktionsweise

pom.xml Repository

src/

Page 29: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Maven Konfigurationsbaum

company-parent

tycho-parent

project-parent

core-parentmasks-parent maskparts-parent

A BC D E F

Parent und Reaktor

Page 30: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Plan

RCP-Quellenbestehende Prozesslandschaft

?

Page 31: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Maven Release Plugin – Preparation Goals

<preparationGoals>

org.codehaus.mojo:build-helper-maven-plugin:1.8:parse-version

org.eclipse.tycho:tycho-versions-plugin:${tycho.version}:update-pom

org.eclipse.tycho:tycho-versions-plugin:${tycho.version}:set-version

-DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.

${parsedVersion.incrementalVersion}

scm:checkin

-Dincludes="META-INF/MANIFEST.MF"

-Dmessage="[maven-release-plugin] sync manifest and pom version[${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}]"

-Dtycho.mode=maven

</preparationGoals>

Page 32: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Maven Release Plugin – Completion Goals

<completionGoals>

org.codehaus.mojo:build-helper-maven-plugin:1.8:parse-version

org.eclipse.tycho:tycho-versions-plugin:${tycho.version}:update-pom

org.eclipse.tycho:tycho-versions-plugin:${tycho.version}:set-version

-DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.

${parsedVersion.incrementalVersion}.qualifier

scm:checkin

-Dincludes="META-INF/MANIFEST.MF"

-Dmessage="[maven-release-plugin] sync manifest and pom version[${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.qualifier]"

-Dtycho.mode=maven

</completionGoals>

Page 33: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Maven Release Plugin – weitere Konfiguration

<goals>deploy,signservice:sign,de.robotron.maven.plugins:rvcs-maven-plugin:${rvcs.version}:checkin</goals>

<remoteTagging>false</remoteTagging>

<suppressCommitBeforeTag>true</suppressCommitBeforeTag>

<useReleaseProfile>false</useReleaseProfile>

Page 34: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Target-Definition-Dateien

Page 35: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Aufbau

<target name="plugin-target" sequenceNumber="1">

<locations>

<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">

<repositorylocation="http://nexus.example.com/content/repositories/repoA/.meta/p2/"/>

<unit id="com.example.plugin" version="1.1.1.c201507281332"/>

<unit id="com.example.plugin.source" version="1.1.1.c201507281332"/>

</location>

<locations>

</target>

Page 36: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

unstable-plugin-target

entspricht dem Trunk im Subversion

zum Bauen von Snapshots

automatische Aktualisierung nach Snapshot-Build

keine Tags, immer Version 1.0.0-SNAPSHOT

Page 37: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

stable-plugin-target

enthält alle über Maven Release freigegebenen Module

zum Bauen von Stable-Plugins (Maven Release)

automatische Aktualisierung nach Maven Release

keine Tags, immer Version 1.0.0-SNAPSHOT

Page 38: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

feature-target

enthält alle Features des Projekts

zum Materialisieren von Produkten

händische Aktualisierung

keine Tags, immer Version 1.0.0-SNAPSHOT

Page 39: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

running-number-plugin-target

pro möglichem Patchstand ein Tag

Trunk enthält den zurzeit freigegebenen Patchstand

zum Bauen von Hotfixes

Page 40: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Continuous Integration Tool

Page 41: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Continuous Integration Tool

JenkinsHudson

Bamboo

Page 42: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

regular regularregular regular regular regular

nightlynightlynightly

Jenkins Job Overview

core-parentmasks-parent maskparts-parent

A BC D E F

Page 43: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Jenkins Jobverwaltung

Jenkins-Maven-Plugin

Job im XML definieren

Vererbung

kaum C&P-Fehler

Plugin erzeugt config.xml

Publish über Jenkins REST-API

Page 44: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Einen Job anlegen

<job><id>pluginA</id><parent>common-deploy</parent><repository>

<remote>http://svn/core/trunk/pluginA</remote><local>.</local>

</repository></job>

Page 45: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

API zur Verfügung stellen

Moduljobgav update-

target-file-job

update-target-file-job SVNtarget.xml

Nexus

Page 46: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Deployment auf Entwicklungs-Application-Server

Moduljobgav update-

target-file-job

jar

Applserv

gav deploy-to-applserv-job

deploy-to-applserv-job

Nexus

Page 47: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Module Release

Maven-release-plugin, Jenkins Maven Release Plug-in Plug-in

Page 48: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Buildflow

manche Jobs haben Vorgänger …

CloudBees Build Flow plugin

– kann Build-Pipelines abbilden

– einfache DSL build( "job1" ) build( "job2" ) build( "job3" )

Page 49: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Third-Party

Page 50: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Third-Party Repository erstellen

Nexus-Site

pom.xml

org.reficio:p2-maven-plugin

P2-Repocp / scp

Page 51: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

org.reficio:p2-maven-plugin Beispiel

Page 52: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Konfiguration ohne manifest.mf

Page 53: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Third-Party releasen

alle Plugins aus Feature-repo runterladen

wenn BSN nicht mit „your.domain.“ beginnt

über API ins Ticketsystem, wenn API-Version dort noch nicht vorhanden ist

Page 54: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Unit Tests

Page 55: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

URL-Trigger

Test-Job Nexus

latest unstable-plugin-target

Starte Job

Version von Host geändert

Page 56: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Unit Tests – warum so kompliziert? SVN-Struktur

core core-test

Plugin Plugin.test

trunk trunk

Host

Plugin

Test

Page 57: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

pom.xml

pom.xml

Unit Tests – neuer Ansatz

Job SVN

Generische Reaktor-POM

Host

Test

pom.xml

Host

Test

schnelleres Feedback

weniger Jobs

Page 58: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Code-Qualität

Page 59: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Code-Qualität

SonarQube

manuell automatischPMD

CheckstyleFindbugs

SonargraphInspektion

AuditPair Programming

Walkthrough

Atlassian Crucible

Page 60: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Sonar

Nightly Build aktualisiert Sonar

deshalb lokale Analysen:

– Sonarqube for Eclipse

– Preview-Analysis mit maven-sonar-plugin und HTML-Report

Sonar-Analyse vor dem Release

… langsames Feedback

Page 61: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Quality Gates

Page 62: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Release Sonar Test

Build Breaker-Plugin für Sonar

erreicht die Sonar-Analyse vor dem Release das Quality-Gate nicht, dann wird das Release abgebrochen

Page 63: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Release Sonar Test Umsetzung

Release-Build

IS_RELEASEBUILD

SNAPSHOT-Build

ConditionalBuildStepPlugin

mvn -B -e sonar:sonar

-Dsonar.profile="Profilname"

-Dsonar.qualitygate="QualityGateName"

-Dsonar.buildbreaker.skip=false

-Dsonar.branch=release

-P maven-sonar-release,module-release

Page 64: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Weitere Integrationstests

Page 65: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Schritte nach Maven-Release

Integration des Patches auf das Integrationssystem mittels Apache ANT

Nach Deployment folgen Integrationstests …

Page 66: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Entity-Integration-Test

Datenmodell-Änderungen brechen Entitäten-API

Entitäten-API-Erweiterungen werden ohne Datenmodell-Änderung abgegeben

deshalb: Gleichzeitige Integration von Datenmodell-Änderungen und Entitäten Prüfung

– aller abgegebenen Entitäten gegen das Datenmodell

– aller abgegebenen Datenmodelländerungen gegen Entitäten

Bei Inkompatibilität schlägt der Integrationsbuild fehl

Page 67: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

OSGi-Integration-Test

OSGi mit allen Bundles starten

OSGi-Konsole: „ss -s installed“

werden Bundles ausgegeben, schlägt der Build fehl

Beispiel-Whitelist: ^.+\.win32.+$

Page 68: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Epilog

Page 69: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Contra

Releasen dauert pro Plugin 10 – 15 min

teils große Abhängigkeitsbäume für Patches

viele Jobs im Jenkins

Page 70: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Pro

häufige Integration (trigger durch commit)

schnelles Feedback

relativ genaue Problemzuordnung möglich

automatisierte Quellcodeanalyse

Vorbereitung für modulare Auslieferung

Page 71: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Fragen?

Hannes SchmidtKonfigurationsmanager

www.robotron.de

Page 72: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Quellen

https://de.wikipedia.org/w/index.php?title=Kontinuierliche_Integration&stableid=144464982

https://de.wikipedia.org/w/index.php?title=Versionsverwaltung&stableid=142123493

https://maven.apache.org/repository-management.html

https://de.wikipedia.org/w/index.php?title=Apache_Subversion&stableid=145933763

https://cwiki.apache.org/confluence/display/MAVENOLD/Repository+Layout+-+Final

https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins

https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin

Page 73: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Anhang: Tools – Versionen und Plugins

Page 74: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Maven

Version 3.0.4

org.apache.maven.plugins:maven-compiler-plugin:3.1

org.apache.maven.plugins:maven-deploy-plugin:2.7

org.apache.maven.plugins:maven-source-plugin:2.2.1

org.apache.maven.plugins:maven-scm-plugin:1.9

org.apache.maven.plugins:maven-release-plugin:2.3.2

org.codehaus.mojo:build-helper-maven-plugin:1.8:parse-version

org.reficio:p2-maven-plugin:1.0.2

Page 75: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Tycho

Version 0.19.0

org.eclipse.tycho:tycho-packaging-plugin

org.eclipse.tycho:tycho-source-plugin

org.eclipse.tycho:target-platform-configuration

org.eclipse.tycho:tycho-versions-plugin:update-pom

org.eclipse.tycho:tycho-versions-plugin:set-version

Page 77: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Nexus

Version 2.5.1-01

Nexus p2 Repository Plugin 2.3.2

Page 78: Continuous Integration für Eclipse 4 RCP … › wp-content › uploads › slides › V27...maven deploy release p2-Third-party-Repo special P2-Capability P2-Capability Die Datenbank-Spezialisten.

Die Datenbank-Spezialisten.

Sonar

Version 4.5.5

Build Breaker 1.1

Issues Report 1.3