continuous integration f r
play

Continuous Integration fr Eclipse 4 RCP-Anwendungen mit - PowerPoint PPT Presentation

Continuous Integration fr Eclipse 4 RCP-Anwendungen mit Maven/Jenkins/Nexus/Sonar Hannes Schmidt 02.10.2015 Die Datenbank-Spezialisten. Eclipse-Basics Die Datenbank-Spezialisten. Plugins, Features, Produkte Produkt Feature B


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

  2. Eclipse-Basics Die Datenbank-Spezialisten.

  3. Plugins, Features, Produkte … Produkt Feature B Feature A Plugin B Plugin C Plugin A Die Datenbank-Spezialisten.

  4. 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 Die Datenbank-Spezialisten.

  5. Projektanalyse vor Eclipse RCP Die Datenbank-Spezialisten.

  6. Stand vor Eclipse RCP-Projekt  Ticketsystem Eigenentwicklung  Versionsverwaltung Eigenentwicklung  Ticket- und Versionsverwaltung auf selber DB, arbeiten eng miteinander zusammen  Applikationsstart über Java Webstart Die Datenbank-Spezialisten.

  7. 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 Die Datenbank-Spezialisten.

  8. Modultypen  Datenbankmodule (Tabellen, Sequenzen, Trigger, Packages, Views, Types …)  Datenbankskripte (Stammdaten, Datenmigration)  Java-Module, über Eclipse exportiert  Oracle-Forms-Module (Maske, Bibliothek) Die Datenbank-Spezialisten.

  9. Probleme  veraltete Technologie (Oracle Forms)  Komplexität: ~1000 Forms-Masken, +20000 DB-Module  sehr modulare Auslieferung  extrem kurze Patchzyklen Die Datenbank-Spezialisten.

  10. Continuous Integration Die Datenbank-Spezialisten.

  11. Continuous Integration „Beschreibt den Prozess des fortlaufenden Zusammenfügens von Komponenten zu einer Anwendung.“ Die Datenbank-Spezialisten.

  12. 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 Die Datenbank-Spezialisten.

  13. Tools für CI  Versionsverwaltung  Repository-Manager  Build-Automatisierung  Continuous Integration Tool  Tool für Code-Qualität Die Datenbank-Spezialisten.

  14. Versionsverwaltung Die Datenbank-Spezialisten.

  15. Versionsverwaltung CVS Git zentralisiert Mercurial verteilt Subversion Bitkeeper Die Datenbank-Spezialisten.

  16. Variante 1 … SCM-Repository A … core-test core branches branches tags tags trunk trunk Plugin.test Plugin Die Datenbank-Spezialisten.

  17. Variante 2 SCM-Repository A core branches tags trunk Plugin Host Test Die Datenbank-Spezialisten.

  18. Repositories Die Datenbank-Spezialisten.

  19. p2 Repository content.xml artifacts.xml  Equinox Sub-Projekt features/  Updateseite a.feature_1.0.0.xml  Erstellen der Compile- Umgebung plugins/ a.plugin_1.0.0.jar Die Datenbank-Spezialisten.

  20. Maven2 Repository org example example- project  lokal 1.0.0  intern  öffentlich example-project- 1.0.0.jar example-project- 1.0.0-source.jar Die Datenbank-Spezialisten.

  21. Repository-Manager Die Datenbank-Spezialisten.

  22. Repository-Manager Artifactory Archiva Nexus Die Datenbank-Spezialisten.

  23. Konfiguration Repositories p2-Snapshot- p2-Stable- Repo Repo P2-Capability P2-Capability m2-Snapshot- m2-Stable- p2-Third- Repo Repo party-Repo release deploy special maven Die Datenbank-Spezialisten.

  24. Build-Automatisierung Die Datenbank-Spezialisten.

  25. Build-Automatisierung Eclipse PDE Apache Ant Gradle Apache Maven Die Datenbank-Spezialisten.

  26. Maven  Lebenszyklus – validate, compile, test, install, deploy …  Project Object Model  Convention over Configuration  Abhängigkeitsmanagement Die Datenbank-Spezialisten.

  27. Tycho  Extension für Maven  Manifest-first  unterstützt Bundles, Fragmente, Features, Update- Sites …  kaum Redundanz in Metadaten bei POM und Manifest Die Datenbank-Spezialisten.

  28. Tycho – Funktionsweise content.xml Jar pom.xml Repository manifest.mf Target Plugins src/ Die Datenbank-Spezialisten.

  29. Maven Konfigurationsbaum company-parent tycho-parent project-parent core-parent maskparts-parent masks-parent A B E F D C Parent und Reaktor Die Datenbank-Spezialisten.

  30. Plan ? bestehende RCP-Quellen Prozesslandschaft Die Datenbank-Spezialisten.

  31. 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.incr ementalVersion}]" -Dtycho.mode=maven </preparationGoals> Die Datenbank-Spezialisten.

  32. 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> Die Datenbank-Spezialisten.

  33. 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> Die Datenbank-Spezialisten.

  34. Target-Definition-Dateien Die Datenbank-Spezialisten.

  35. Aufbau <target name="plugin-target" sequenceNumber="1"> <locations> <location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit"> <repository location="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> Die Datenbank-Spezialisten.

  36. 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 Die Datenbank-Spezialisten.

  37. 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 Die Datenbank-Spezialisten.

  38. feature-target  enthält alle Features des Projekts  zum Materialisieren von Produkten  händische Aktualisierung  keine Tags, immer Version 1.0.0-SNAPSHOT Die Datenbank-Spezialisten.

  39. running-number-plugin-target  pro möglichem Patchstand ein Tag  Trunk enthält den zurzeit freigegebenen Patchstand  zum Bauen von Hotfixes Die Datenbank-Spezialisten.

  40. Continuous Integration Tool Die Datenbank-Spezialisten.

  41. Continuous Integration Tool Bamboo Hudson Jenkins Die Datenbank-Spezialisten.

  42. Jenkins Job Overview nightly nightly nightly core-parent maskparts-parent masks-parent A B E F D C regular regular regular regular regular regular Die Datenbank-Spezialisten.

  43. Jenkins Jobverwaltung  Jenkins-Maven-Plugin  Job im XML definieren  Vererbung  kaum C&P-Fehler  Plugin erzeugt config.xml  Publish über Jenkins REST-API Die Datenbank-Spezialisten.

  44. Einen Job anlegen <job> <id>pluginA</id> <parent>common-deploy</parent> <repository> <remote>http://svn/core/trunk/pluginA</remote> <local>.</local> </repository> </job> Die Datenbank-Spezialisten.

  45. API zur Verfügung stellen gav update- Moduljob target-file-job update- target.xml SVN target-file-job Nexus Die Datenbank-Spezialisten.

  46. Deployment auf Entwicklungs-Application-Server gav update- gav deploy-to- Moduljob target-file-job applserv-job jar deploy-to- Nexus applserv-job Applserv Die Datenbank-Spezialisten.

  47. Module Release  Maven-release-plugin, Jenkins Maven Release Plug-in Plug-in Die Datenbank-Spezialisten.

Recommend


More recommend