Click here to load reader

Teile und herrsche: Integration und Automatisierung der ... · PDF file durch Maven Archetypes automatisiertes Eclipse Setup (Oomph) automatisiertes Aufsetzen von Jenkins-Jobs (JobDSL)

  • View
    5

  • Download
    0

Embed Size (px)

Text of Teile und herrsche: Integration und Automatisierung der ... · PDF file durch Maven Archetypes...

  • © Copyright 2018 GEBIT Solutions GmbH

    Teile und herrsche: Integration und Automatisierung der Tools im Entwicklerstack

    Dr.-Ing. Dehla Sokenou, Carsten Pfeiffer GEBIT Solutions GmbH

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    Typische Projektlandschaft (?)

     locker 150 Projekte im Workspace, hunderte Abhängigkeiten

     minutenlanger Build in Eclipse

     hoher Speicherbedarf

     kein Source-Code von Binärabhängigkeiten zum Debuggen

     seitenlange Anweisungen zum Aufsetzen des Workspaces

     (natürlich out-of-date)

     Aufsetzen Build-Server + Jobs

     Möglichst noch für diverse Branches

     Bauen der Projekte (IDE Build vs. Build-Job)

     paralleles Ausführen von Jobs geht nicht – Ressourcenkonflikte...!

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    Ziel

    Zeit sparen!

     schnelles Setup

     Wiederverwendung

     Anpassbarkeit

     Idealerweise Self-Service für Projekte

     Admins entlasten!

    Puzzleteile

     Tools

     Konfiguration

     Infrastruktur

     Namenskonventionen

     Regeln

     Validierungen

     Tools

     Konfiguration

     Infrastruktur

    Das geht auch anders!

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    Das große Ganze...

    Eine

    projektübergreifende einheitliche

    Entwicklungsumgebung inklusive

    einheitlichem Entwicklungsprozess

    Vom Kick-Off

    bis zur

    Wartung

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    Das große Ganze... ... zerlegt in seine Bestandteile

  • © Copyright 2018 GEBIT Solutions GmbH

    Integration durch und mit Maven

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    Schaltzentrale

    Maven als zentrale integrative Komponente

    Steuert alle Phasen der Entwicklung

     Vom Projektstart bis Release und Maintainance

    Entwickler muss "nur noch" entwickeln

     Maven-Kenntnisse und natürlich Entwicklerskills (Java, ...) erforderlich

     Das Herumschlagen mit 1001 Tool ist nicht mehr notwendig (Stichwort: seitenlange, nicht mehr aktuelle Anweisungen im Wiki...)

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    Steuerung durch Maven-Build: de.gebit.build:gebit-build

    als parent-pom eingebunden

    Bereitstellung wiederverwendbarer Konfigurationsschnipsel

    Unterstützung für

     Snapshot, Integration, Releases

     Feature Branches

    projektübergreifend einheitlich

     Develop

     Build

     Publish (Nexus)

     Release

     Branch-Benennung (features/, releases/)

  • © Copyright 2018 GEBIT Solutions GmbH

    Gern vergessen: Projekt-Setup

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    Maven-Archetypes

    Vorlagen zur Erzeugung gleichartiger Dinge

     Hier: gleichartiger Projekte, mit gebit-build als parent-pom

    Neues Projekt? – Ganz einfach!

     Interaktiver Prozess mit Abfrage projektspezifischer Parameter

    mvn org.apache.maven.plugins:maven-archetype-plugin:2.4:generate -DarchetypeGroupId=de.gebit.build.archetype -DarchetypeArtifactId=gebit-build-archetype-standard -DarchetypeVersion=2.0.0

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    Ein Archetype für jeden Fall

    Beispiele

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    Setup Entwicklungsumgebung

    Entwickler innerhalb eines Projekts sollten die gleiche Entwicklungsumgebung verwenden

    Konkret:

     IDE Aufsetzen und auf Stand halten

     Plugins aktuell halten

     Projekte aus dem Repository auschecken

     neue Projekte in den Workspace

     alte Projekte aus dem Workspace

     gemeinsame Einstellungen (Compiler, Code Formatter, Code Conventions)

    Archetypes für Projekt-Setup enthalten bereits Oomph-Setup für Eclipse

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    Oomph...!

    Erlaubt die Provisionierung eigener Eclipse-Distributionen

    Bestehend aus

     Product-Setup

     Für das Aufsetzen von Eclipse + Plugins

     Project-Setup

     Projektspezifische Einstellungen

    Leider wenig dokumentiert und mit jeder Version ein wenig anders

    Empfehlung: Oomph-Editor verwenden

    Aufruf mit Redirection auf eigenes Setup: eclipse-inst.exe -vmargs "-Doomph.redirection.setups=index:/-> http://myowngit.gebit.de/myproject/setupdir/"

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    Was wir bis hierher haben...

  • © Copyright 2018 GEBIT Solutions GmbH

    Wer baut denn hier?

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    Configuration as Code

    Erzeugtes Projekt bringt bereits alles mit, um benötigte Jenkins-Jobs automatisch zu erzeugen

     per JobDSL (Jenkins Job DSL Plugin)

     Vorlagen für Standardjobs inklusive

    Zweistufiger Prozess

    1. Seed-Creator-Job erzeugt projektspezifische Seed-Jobs

     Läuft i. d. R. einmalig zu Beginn des Projekts

    2. Projektspezifische Seed-Jobs erzeugen Projekt-Jobs

     laufen regelmäßig (bzw. getriggert durch Änderungen) und Erstellen/Aktualisieren die "richtigen"

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    Jobs erzeugen

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    Jobs erzeugen

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    Job-Framework

    Aktuell verfügbare Templates

     Seed-Build-Job (Meta-Ebene)

     Maven-Build-Job

     Pipeline-Build-Job

    Anpassungsmöglichkeiten

     Parametrisierung der Job-Erzeugung

     wenn das nicht reicht: eigene DSL-Scripts

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    Job-DSL – Beispiel (Auszug aus Maven-Job-Builder)

  • © Copyright 2018 GEBIT Solutions GmbH

    Baukasten für Entwickler

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    T(e)ile und herrsche

    Griff in die Werkzeugkiste: Maven-Tiles

     Konfigurationsschnipsel für gleichartige Aufgaben

     java: source level, debug, encoding, …

     packaging: jar, bundle, ear, war, sources

     javadoc

     checkstyle, findbugs, jacoco

     Validierung (enforcer)

     Wildfly deployment

     Einfaches Einbinden in eigene Projekte per Mixin

     Wiederverwendbar, anpassbar

     Vermeidung von Copy & Paste

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    Maven-Tiles – Definition und Verwendung

  • © Copyright 2018 GEBIT Solutions GmbH

    Der Umgang mit dem Feature

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    Feature-basiert arbeiten – git macht's vor, wer macht mit?

    Stichwort: Start und Finish

     eigene Maven-Artefaktversion zur Entkopplung vom master/maintenance-Branch

     eigene Maven-Artefaktversion nur temporär während der Feature-Entwicklung

    Stichwort: Entwicklung

     Regelmäßiges Einspielen des master (rebase) macht den Merge am Ende einfacher

    Stichwort: Bauen und Testen

     Feature-Branch sollte analog master/maintenance-Branch auf dem Buildserver gebaut und getestet werden

    Toolunterstützung notwendig!

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    Branch-Handling per git-flow-Plugin

    Feature-Branch-Erstellung

     Automatische Anpassung der Versionsnummern

     Erstellung eines Feature-Branch-Jobs auf dem Jenkins (optional)

    Feature-Rebase als Goal im git-flow-Plugin

     Automatisch, sofern möglich

     Änderungen der Version im master werden ignoriert

    Feature-Branch mergen und löschen

     Versionsnummernänderung wird aus git-Historie herausgefiltert, d.h. Commits für die Artefaktversionierung werden vor dem Feature-Merge entfernt

    Das funktioniert nicht nur für den master, sondern auch für Maintenance- Branches!

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    mvn:flow feature-finish (Auszug aus dem Protokoll)

  • We are hiring! - jobs.gebit.de © Copyright 2018 GEBIT Solutions GmbH

    Wenn 50 Entwickler in 20 Projekten an 40 Features arbeiten..

Search related