CI von Eclipse RCP Anwendungen mit Gradle/Jenkins

Ähnliche Dokumente
Build Management Tool

Build Management Tool?

Continuous Integration (CI) Workshop

Build Management Tool?

Dominik Helleberg inovex GmbH. Auf Augenhöhe mit Android Studio und Gradle

Continuous Everything

Programmieren II. Exkurs: Apache Maven. Institut für Angewandte Informatik. KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft

Buildsystem. Maven & Scons. Controls Entwicklungsforum Januar 2012

Continuous Integration in JBF. Johannes Kellner

Am Ziel angekommen? Über Ant und Maven zu SBT und Gradle. Andreas Hartmann Dr. Halil-Cem Gürsoy adesso AG

Martin. Spiller. Maven 3. Konfigurationsmanagement mit Java

Referat. Continuous Integration. mit Maven und Jenkins. Benjamin Keeser. Hochschule für angewandte Wissenschaften München FB 07 Informatik (Master)

Automatisierter Java EE Entwicklungs-Lifecycle mit WebLogic Server 12c. Robin Müller-Bady Systemberater, Oracle Deutschland

Abschlussbericht. Erstellung eines automatisierten Build-Prozesses für Eclipse-RCP- Anwendungen am Fallbeispiel Control System Studio.

Arbeiten mit Visual COBOL 3.0 for Eclipse. Rolf Becking 30. November 2017

Continuous Delivery. für Java Anwendungen. Axel Fontaine Software Development Expert

Martin Spiller. Maven 2. Konfigurationsmanagement mit Java

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

Ant + Ivy Building with dependencies

Softwareprojekte mit Kultur

20. Deutsche Anwenderkonferenz 2007 Software Entwicklung 2.0

Maven 2 Softwareprojekte mit Kultur

Andreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern

Software build (-erstellung), deployment(-verteilung) und execution(-ausführung)

Einführung in Maven und GWT

Continuous Integration mit GitLab CI Christine Koppelt Open-Source-Treffen, 26. Januar 2018

Pre-tested commit 2.0 mit Gerrit und Jenkins

Umstieg auf OSGi - aber wie? Martin Lippert & Matthias Lübken akquinet it-agile

JUGS: Maven/Tycho für Eclipse RCP-Applikationen. Maven/Tycho für Eclipse RCP-Applikationen

Was kann man in APEX automatisieren?

Platform as a Service (PaaS) & Containerization

Abhängigkeiten und Git

Wir implementieren Lösungen. + DevOps-in-the-Box. Rainer Heinold VP Technology and Services

Oracle Data Integrator Ein Überblick

Build. Ship. Run. Docker. Namics.

Spring Dynamic Modules for OSGi Service Platforms

Gerrit und Jenkins ein Traumpaar für Pre-Tested Commit

DevOps with AWS. Software Development und IT Operation Hand in Hand. Matthias Imsand CTO Amanox Solutions AG

Das neue Android Build System

Eine Einführung, aktuell zur Version An imprint of Pearson Education

Oracle9i Designer. Rainer Willems. Page 1. Leitender Systemberater Server Technology Competence Center Frankfurt Oracle Deutschland GmbH

Inhaltsverzeichnis. Bernd Weber, Patrick Baumgartner, Oliver Braun. OSGi für Praktiker

Gliederung. Einführung. Kleines Maven Wörterbuch. Maven im Unternehmenseinsatz. Was bringt die Zukunft?

Eclipse und EclipseLink

Bauen mit Tycho. Mirko Swillus Qualitype AG , JUG Saxony

Gradle. Ein kompakter Einstieg in das moderne Build-Management-System ---> Mit einem Geleitwort von Hans Dockter, Erfinder von Gradle

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi

Nils Hartmann Gerd Wütherich. Build my bundle! oder: Es muss nicht immer PDE sein

v i r t u a l 7 G m b H Consulting- und Softwarepartner Unternehmergeführt 1996 gegründet 85 Mitarbeiter 1 Team aus Spezialisten W E R W I R S I N D

Modernisierung des Entwicklungsprozesses - ein Projektbericht

Consultant & Geschäftsführer, enpit consulting OHG ugb@enpit.de

Git in großen Projekten

Content Management mit JSR-170 und dem Open Source CMS Magnolia

Make-loses Java für mehr Produktivität: Das z 2 -Environment. Henning Blohm

Sonargraph in 15 Minuten. Andreas Hoyer blog.hello2morrow.com

AGILE SOFTWAREENTWICKLUNG MIT ORACLE ADF

NEUIGKEITEN SAS 9.4 ARCHITEKTUR PHILLIP MANSCHEK

Spring IDE. Christian Dupuis - Spring 2.0 Release Party

Pluginbasierte Entwicklung auf Basis einer eigenen JAR Datei

Erfolgreicher Ums9eg auf Git

Ohne Build geht's besser: Makeloses Java mit dem z 2 -Environment. Henning Blohm

SAP -Schnelleinstieg: ABAP-Entwicklung in Eclipse. Christoph Lordieck

Eclipse Rieh Client Platform

Continuous Delivery in der Realität eines Großunternehmens

Spring und Eclipse Equinox kombiniert. Martin Lippert (it-agile GmbH) Gerd Wütherich (comdirect bank AG)

Installationsbeschreibung

OSGi-basierte Webapplikationen Ein Erfahrungsbericht

Gerrit und Jenkins ein Traumpaar für Pre-Tested Commit

Frank Schlüter, Techniker Krankenkasse Gerd Wütherich, Freiberuflicher Softwarearchitekt. Enterprise OSGi im wahren Leben: ein Migrationsbericht

Architekturüberblick Gradle

Persönliche Build-Höllen für Jedermann Andreas Hartmann & Dr. Halil-Cem Gürsoy

Artem Eger. Build-Systeme in java Maven & ANT

DevOps. Alexander Pacnik, Head of DevOps Engineering

Continuous Delivery mit OpenShift, 2nd Edition

Der Weisheit letzter Schluss:

Updates sicher und flexibel gestalten mit Linux

DOTS - reloaded. EntwicklerCamp René Winkelmeyer midpoints GmbH

OSGi: Toolunterstützung und Softwareentwicklungsprozess

Maven Tycho. Google Guice. Mylyn für Modelle. 7. bis 11. November Eclipse meets. Plus CD! The Westin Grand München Arabellapark

Programmieren in Java

Automatisierte Entwickler VMs works on my machine zählt nicht mehr ;-)

Build-Pipeline mit Jenkins

Container als Immutable Infrastructure. John M. Hutchison

Open Source. Hendrik Ebbers 2015

Operation am offenen Herzen

Unternehmensdokumente mit dem XML Publisher erzeugen

Micro Focus Unit Testing Framework in Visual COBOL 3.0. Rolf Becking 29.August 2017

Eine Einführung. Vortragende(r) FU Institut Berlin für Informatik Ingo Mohr

JUnit 5 Die Plattform. Johannes Link

Entwicklung und Deployment. Stefan Raabe DOAG Konferenz

APEX OOS TOOLS & HELFER

Kurzanleitung Eclipse

Builddreikampf: Ant, Maven und Gradle. Sven Bunge / Carl Düvel

Brauche ich ein DVCS?

Teile und herrsche: Integration und Automatisierung der Tools im Entwicklerstack

Immer in Bewegung bleiben Oracle Managed File Transfer

Praktische Einführung in die Versionsverwaltung mit Eclipse

PL/SQL Continuous Integration mittels Hudson Benjamin Jörger

Transkript:

Make Catchphrase Eclipse RCP gradle again CI von Eclipse RCP Anwendungen mit Gradle/Jenkins Johannes Tandler Michael Barth 09.03.2017 Dresden

Agenda 1. Eclipse IDE 2. Eclipse RCP 3. Repositories I 4. Architecture 5. Repositories II 6. Gradle/Jenkins/CI 7. BuildMonkey

Visualisierung von Maschinendaten Mobile HMI in der Industrie 4.0

HMI SUITE - MONKEY WORKS GMBH Entwicklungsumgebung für Maschinenvisualisierung Eclipse RCP-Applikation Nutzung vieler Eclipse-Technologien Grafische & Textuelle (DSL) Editoren Codegenerierung Serverkomponente (ProcessHub) Bibliotheken für mobile Plattformen

Der konkrete Fall Es war einmal Eclipse

Eclipse IDE Geschichte Release 2001 als IDE mit Schwerpunkt JAVA 2004 Wechsel auf OSGI-Basis (Equinox) Heute Riesiges Universum an Projekten und Distributionen Multi - Language Support

Eclipse RCP Eclipse zugrundeliegendes Applikationsframework Eclipse und jede Variante davon ist eigene RCP - Applikation XMind, IBM Rational Developer MONKEY WORKS HMI Suite Workbench Dependency Injection, Services, Build tooling Abbildung: Eclipse RCP-Applikation XMind

Eclipse RCP Theorie Produkt = Features + Plugins + Configuration + Assets + Binaries Feature = Plugins + Andere Features Ein Plugin (Projekt) = Java Bibliothek + zusätzliche Konfiguration Praxis Eclipse RCP Produkt = Target Platform + Product File + Magie

Eclipse RCP Eigenes Buildsystem (PDE) Eigenes Dependencymanagement Als Teil der MANIFEST.MF Eigenes Management von Repositories und Nutzung derer Target-Platform Abbildung: Target-Platform Definition

Eclipse provisioning platform - P2 Provisioning Platform für OSGI-Applikationen Geschichte Veröffentlichung mit Eclipse Ganymede Als Ersatz des alten Update - Mechanismus Abbildung: Logo von Eclipse Ganymede

Eclipse P2 Begriffe Repository Metadata Installable Unit Feature Plugin Artifact Abbildung: Begrifflichkeiten in der P2-Domäne

Eclipse P2 Struktur Trennung von Metadaten : Beschreibung von Inhalt und Abhängigkeiten Artefakten : URL, Artefaktgröße, Hash, etc. Zentraler Index notwendig Abbildung: Beispiel eines P2-Repositories

Eclipse P2 Architektur Abbildung: Architektur von Eclipse P2

Maven Build-Management-Tool für Java-Projekte Deskriptiver Ansatz Geschichte: Release 1.0 im Jahr 2002 Release 3.0 im Jahr 2010 Aktuell Version 3.3.9 Repository-Format von anderen Buildwerkzeugen adoptiert Umfangreiche Unterstützung Konvention vor Konfiguration

Maven Begriffe Project Pom Dependencies GroupID Artifact Abbildung: Beispiel einer pom.xml aus der offiziellen Mavendokumentation

Maven Architektur pom s Project Object Model Dependency Manager M2 Repository Project lifecycle plugin plugin plugin src gen bin Abbildung: Architektur von Maven

Maven Struktur Gesamtes Repository ist an einem Ort gespeichert Konvention für Ordnerbenennung Buildbeschreibung (Pom) wird mitgespeichert Kein zentraler Index notwendig Abbildung: Beispiel eines Maven Repositories

Build Das sollte doch ganz einfach sein...

Problematik External P2 Eclipse Plugin - Projekt MF src Buildtool External M2

Exist. Lösungsansätze Eclipse Orbit Umwandlung von Maven- Abhängigkeiten in Eclipse Plugins Bereitstellung mit P2-Repository Eclipse Projekte Verschiedene Eclipse Projekte deployen Artefakte nach Maven Central

Exist. Lösungsansätze Tycho Sammlung von Maven-Mojos für Eclipse Projekte Erlaubt den Zugriff auf P2-Repositories mit Maven P2 Maven / Tycho M2 Erlaubt den Zugriff auf Maven-Abhängigkeiten aus Eclipse-Plugins (m2e) Produkterstellung möglich Build lokales P2 lokales M2 Produkt Abbildung: Funktionsweise von Maven / Tycho

Buildsystem - Alt Codebasis XXX.XXX Zeilen 3+ Programmiersprachen Branchspezifische Builds Produktdeployment für Master Buildzeiten von 2 Stunden Inkonsistente Builds Komplex Keine Abhängigkeitspflege Kein Continuous Delivery

Buildsystem - Wünsche Viel kürzere Buildzeiten Deployment von Branches möglich Leichtere Pflege von Abhängigkeiten durch Entwickler Komplette Isolation von Buildzweigen Continuous Delivery

Lösungsidee Wünsche Reduzierung von Maven Buildtool soll sich nach Entwicklung richten nicht andersherum Manifest First Integration von externen Abhängigkeiten in Eclipse Keine exotischen Eclipse-Plugins Persistenz von Abhängigkeiten

Lösungsarchitektur External P2 Eclipse Internal P2 Plugin - Projekt gradle - m2 MF src gradle - p2 gradle - build Internal M2 gradle External M2

Repositories II OSGi-Repository Im P2 und M2 Format Beinhaltet alle Abhängigkeiten aus Eclipse-Ökosystem Unterstützt Branching Thirdparty-Repository Im P2 und M2 Format Umfasst alle Abhängigkeiten aus externen Quellen Unterstützt Branching Feature/Branch-Repositories Im M2 Format Umfasst Buildartefakte des jeweiligen Branch

Buildpipeline Wenn Sie jetzt noch wach sind...

Gradle/Jenkins/CI Continuous Integration Eclipse Development Jenkins DSL Gradle tasks Build Artefacts Maven Artefacts Java Gradle Source Scripts Build Process Artefact Server Artifactory Git SCM Build Server Dependencies Maven Artefacts Jenkins

Gradle/Jenkins/CI Erstellen der Target Platform gradle mirrorp2repository Source Platform Mirror task Public P2 Repositories gradle mavenizep2repository One local P2 Repository Mavenize task Local Maven Repository gradle artifactoryupload_1 gradle artifactoryupload_0 Artifactory/ Osgi/p2 Upload tasks Artifactory/ Osgi/m2 gradle createtargetplatform Target file task Target Platform gradle publishtargetplatform Publish target file task Git/ TargetPlatforms

Gradle/Jenkins/CI Erstellen des Third Party Features gradle updatesite (bnd-tools) Libraries Update site task Maven Repositories gradle mavenizep2repository gradle artifactoryupload_1 gradle artifactoryupload_0 One local P2 Repository Artifactory/ Thirdparty/p2 Mavenize task Upload tasks Local Maven Repository Artifactory/ Thirdparty/m2 gradle updatetargetplatform Update Target file task Target Platform Git/ TargetPlatforms

Gradle/Jenkins/CI Aufbau eines Features Plugins als Unterprojekte Root Gradle Script, Jenkins Script, Feature Properties Aufbau eines Plugins Source- Verzeichnis Mavenkonform Manifest Datei, Eclipse Projekt Dateien, Plugin Properties

Gradle/Jenkins/CI Bauen eines Features Feature aus SCM Gemeinsame Gradle Skripte build (assemble, test, check) publish trigger upstream

Gradle/Jenkins/CI Erstellen eines Produktes.product prepareproduct Feature list gradle publishproduct bnd-tools updatesite materialise lokales P2 Produkt

BuildMonkey Open Source Projekt initiiert von MONKEY WORKS https://github.com/monkey-works/buildmonkey Ziel ist die Abbildung der gesamten Buildpipeline in gradle gradle build.gradle commons.gradle Plugins 4 Hauptprojekte: ArtifactoryUpload Compilation Repository Materialisation Mitarbeit ausdrücklich gewünscht

BuildMonkey ArtifactoryUpload kopiert jede Filestruktur in ein Artifactory Repository gradle artifactoryclearrepository gradle artifactoryupload_n

BuildMonkey Compilation ManifestDependencyPlugin FixDependencyVersion ModifyBundle

BuildMonkey Repository P2MirrorPlugin MavenizerPlugin P2DeployerPlugin MavenArtefactsPlugin

BuildMonkey Materialisation Build Product Execute Tests

Fazit Buildzeiten drastisch reduziert auf 5 Minuten (komplett ca. 30 Minuten) Continuous Delivery ist möglich Buildskripte sind selten länger als 1 Bildschirmseite und lesbar Dependency- Pflege viel einfacher Branches nutzen konsistente Umgebung Produkte sind auch von Branches aus erstellbar

Wir danken für Ihre Aufmerksamkeit und den Projekten Wuff, Buildship, Tycho und bnd-tools