SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
Dragan Zuvic | w11k
Continuous Integration
mit Java & JavaScript
Dragan Zuvic
@dzuvic
w11k.de
thecodecampus.de
Agenda
Motivation
Problemstellung
Kategorien
Demo & Erfahrung
Kein „Best Practice“ | Rezept | Maven | CD
CI
Grady Booch (1994):
Integration aller Komponenten
Automatische Qualitätskontrolle
Unit Testing
Integrationstests
System Test
Akzeptanz Test
CI
CD
Motivation
Routing „Server“ Routing „Browser“
Problemstellung
Use-Case: SPA mit Java Backend
➔ M & V & C im Browser
➔ Logik im Browser → Unittests ?
Integrationsproblem
Neue Tools, Neue Compiler
Neue Artefakte
Neue Repositories
Problemkategorien
Buildsystem
Repository
Dependency
Struktur
Flexibilität, Version, OS
Format, Netz, Kontrolle
Versionsordnung, Tiefe
Versionsmaster, Propagierung
Separate Projektstruktur
Unabhängige Projekte
– Einzeln Gebaut
– Einzeln Versioniert
– Problem: Versionspropagierung
– Snapshot Problem
common:1
CRM:1.2
Produkt:2
NewUI:0.1
WAR:2015.Q1
Projektstruktur Integriert
Ein Zusammenhängendes Projekt
– Zusammen gebaut
– Eine Version
– Problem: Große Projekte / Baulänge
SalesApp:15.Q1
CRM
Produkt
NewUI
WAR
JS Projekt Anatomie
JS
– Ein JS & HTML
– Assets
Generieren (CSS)
„Transpilieren“
Konkatenieren
Minifizieren
Java
– Bytecode
– Modell: JWE AR
Generieren (JAVA)
Compilieren
Paketieren
Typische Schritte
Tool Chain
JS
Node.js
Grunt, Gulp (uvm)
Bower / NPM
Ruby (compass)
Python (gyp)
Java (selenium)
GCC | Xcode
Java
JDK
Maven|Gradle|Ant
Integration – „kein Rezept“
Master-Tool
JS | JAVA | make
Tool-Verteilung
zentral | manuell
Paketsystem
GEM | JAR | rpm
cabal | NIX | deb
Ziel-Archiv
WAR | docker | ...
WAR-Archiv
webapp | separat
Entwicklung
Reload | Deploy
Integration Buildsystem
Task Basiert {ant}
Definition von
Integrationstasks
Projektmodel {mvn}
Erweiterung
Modells (Plugins)
Fixiert
Aufruf BS
Task + Model
Plugins
Integrationstasks
JS Artefakte mit JAVA
✔gradle-compass
✔gradle-js-plugin
✔gradle-css-plugin
Analog mvn (oos)
✗ Test (Jasmin)
✗ E2E (protractor)
✗ ng-annotate
✗ Typescript / ES6
✗ Ng-doc
...
Master der JS Artefakte
JAVA (gradle & co)
➢ Paralleluniversum
Integriert
JS (grunt & co)
➢ Duales System
Flexibel
●
Systemgrenze
●
Feature
●
Teams ...
Integration Grunt
Simple Call (Maven: ant-tasks)
– Lifecycle → Task ?
– Versionsmaster ?
– Installation von Node?
Gradle Plugin
– Installiert Node
– Task: grunt → gradle
– Versionsmaster via task
Repository
Funktionen: Caching, Kontrolle, Netz
Internes Repo
Private Pakete (Keine Veröffentlichung)
Versionsstabilität (Internet „gelöscht“)
Paketformate
Maven & Ivy | NPM & Bower
NPM & Bower
NPM
node.js Paket-Mgr.
Build tool
Dependencies: node_modules rekursiv
Bower
Ziel: Client-Entwicklung
Repository Format = Git Repo !
Dependencies Flach: bower_components
Internes Repo: JAVA
Maven & Ivy:
Lokale & Remote
Artifactory OSS
Nexus OSS
Archiva
webjars.org
compile 'org.webjars:jquery:2.1.3'
Internes Repo: JS
NPM
Nexus OSS (Ablage) ↔ sinopia (Cache)
URL via Scope
PublishConfig: {"registry":"…"}
Bower
Git + Tag als Paketformat → ??
registry:"http://localhost:8000"
git clone # private-bower
Beispielprojekt Triton
common: Schnittstellen-Definition
client: JS Projekt: grunt, npm, fabs
service: Rest-Implementation
server: Integrationsprojekt
client & service = web-fragments
➔https://github.com/w11k/triton
Projekte
Öffentliche Verwaltung:
• Migration von Ant nach Gradle
• Monolitischer Build
• Modularisiert (Grunt Modul + Grunt Plugin)
• Großteil nach AngularJS migriert
2 x DAX-Konzern:
• Maven Build, Integration mit ant-run,
Release-Skript
• Grunt (Fabs) Integration mit Gradle
Fazit + IMHO
Integration der JS Toolchain
– Vermeidung der Parallelwelt
Stabile Versionen (Gradle, Node)
– Versionsordnung & Versionsmaster
Build unabhängig vom OS
– Less statt SASS
Lokales Repo ermöglichen
– Bower vermeiden (aktuell)
– Paketformat (JAR vs. TAR) → Nutzer
Fragen
Dragan Zuvic
@dzuvic
w11k.de
thecodecampus.de

Weitere ähnliche Inhalte

Was ist angesagt?

SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreiben
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreibenSQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreiben
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreiben
Jan Hentschel
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
s0enke
 

Was ist angesagt? (20)

SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreiben
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreibenSQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreiben
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreiben
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
 
Kann ich mit Grails Enterprise Applikationen umsetzen?
Kann ich mit Grails Enterprise Applikationen umsetzen?Kann ich mit Grails Enterprise Applikationen umsetzen?
Kann ich mit Grails Enterprise Applikationen umsetzen?
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Webpack
WebpackWebpack
Webpack
 
Jenkins Acceleration
Jenkins AccelerationJenkins Acceleration
Jenkins Acceleration
 
GWT
GWTGWT
GWT
 
Enterprise 2.0 Portale mit Grails. Geht das?
Enterprise 2.0 Portale mit Grails. Geht das?Enterprise 2.0 Portale mit Grails. Geht das?
Enterprise 2.0 Portale mit Grails. Geht das?
 
Informatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und GrailsInformatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und Grails
 
Jug nbg containerplattform dcos
Jug nbg containerplattform dcosJug nbg containerplattform dcos
Jug nbg containerplattform dcos
 
Continuous Delivery - Aber Sicher?!
Continuous Delivery - Aber Sicher?!Continuous Delivery - Aber Sicher?!
Continuous Delivery - Aber Sicher?!
 
ColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep DiveColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep Dive
 
Citrix Fit4Cloud Reihe: Citrix XenServer in der Cloud
Citrix Fit4Cloud Reihe: Citrix XenServer in der CloudCitrix Fit4Cloud Reihe: Citrix XenServer in der Cloud
Citrix Fit4Cloud Reihe: Citrix XenServer in der Cloud
 
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Electron.NET: Cross-Platform Desktop Software mit ASP.NET CoreElectron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
 
Web-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishWeb-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnish
 
Deployment 2.0
Deployment 2.0Deployment 2.0
Deployment 2.0
 
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
 
Arquillian
ArquillianArquillian
Arquillian
 
Build Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build ProzessBuild Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build Prozess
 
Deployment pipeline mit maven, chef und jenkins
Deployment pipeline mit maven, chef und jenkinsDeployment pipeline mit maven, chef und jenkins
Deployment pipeline mit maven, chef und jenkins
 

Andere mochten auch

Wells Community AcademyPresentation
Wells  Community AcademyPresentationWells  Community AcademyPresentation
Wells Community AcademyPresentation
Ernesto Matias
 
Presentacion de hardware
Presentacion de hardwarePresentacion de hardware
Presentacion de hardware
JULIANITAMART
 

Andere mochten auch (18)

Leichtgewichtige Webwenwendungen mit dem MEAN-Stack
Leichtgewichtige Webwenwendungen mit dem MEAN-StackLeichtgewichtige Webwenwendungen mit dem MEAN-Stack
Leichtgewichtige Webwenwendungen mit dem MEAN-Stack
 
WJAX 2012 - Web Apps With AngularJS
WJAX 2012 - Web Apps With AngularJSWJAX 2012 - Web Apps With AngularJS
WJAX 2012 - Web Apps With AngularJS
 
Karlsruher Entwicklertag 2013 - Webanwendungen mit AngularJS
Karlsruher Entwicklertag 2013 - Webanwendungen mit AngularJSKarlsruher Entwicklertag 2013 - Webanwendungen mit AngularJS
Karlsruher Entwicklertag 2013 - Webanwendungen mit AngularJS
 
Web Applications with AngularJS
Web Applications with AngularJSWeb Applications with AngularJS
Web Applications with AngularJS
 
2009 12 London
2009 12 London2009 12 London
2009 12 London
 
Dianne rogers cv march 2016
Dianne rogers cv march 2016Dianne rogers cv march 2016
Dianne rogers cv march 2016
 
Dohdemo
DohdemoDohdemo
Dohdemo
 
Fail Festival DC 2015
Fail Festival DC 2015Fail Festival DC 2015
Fail Festival DC 2015
 
Wells Community AcademyPresentation
Wells  Community AcademyPresentationWells  Community AcademyPresentation
Wells Community AcademyPresentation
 
Presentacion de hardware
Presentacion de hardwarePresentacion de hardware
Presentacion de hardware
 
Bidirektionale Verbindungen für Webanwendungen
Bidirektionale Verbindungen für WebanwendungenBidirektionale Verbindungen für Webanwendungen
Bidirektionale Verbindungen für Webanwendungen
 
Tutorial: Develop Mobile Applications with AngularJS
Tutorial: Develop Mobile Applications with AngularJSTutorial: Develop Mobile Applications with AngularJS
Tutorial: Develop Mobile Applications with AngularJS
 
Ch01 Kotabe
Ch01 KotabeCh01 Kotabe
Ch01 Kotabe
 
Competitive Intelligence in the Digital Age
Competitive Intelligence in the Digital AgeCompetitive Intelligence in the Digital Age
Competitive Intelligence in the Digital Age
 
Legacy WebApps mit AngularJS pimpen
Legacy WebApps mit AngularJS pimpenLegacy WebApps mit AngularJS pimpen
Legacy WebApps mit AngularJS pimpen
 
Webanwendungen mit Apache HBase entwickeln
Webanwendungen mit Apache HBase entwickelnWebanwendungen mit Apache HBase entwickeln
Webanwendungen mit Apache HBase entwickeln
 
Ajax, Comet & Co.
Ajax, Comet & Co.Ajax, Comet & Co.
Ajax, Comet & Co.
 
Concurrency Paradigmen
Concurrency ParadigmenConcurrency Paradigmen
Concurrency Paradigmen
 

Ähnlich wie JAX 2015 - Continuous Integration mit Java & Javascript

Collaboration Days 2011 - Damit die Tester schneller ran können.
Collaboration Days 2011 - Damit die Tester schneller ran können.Collaboration Days 2011 - Damit die Tester schneller ran können.
Collaboration Days 2011 - Damit die Tester schneller ran können.
David Schneider
 

Ähnlich wie JAX 2015 - Continuous Integration mit Java & Javascript (20)

Von Maven zu Gradle in 45 Minuten
Von Maven zu Gradle in 45 MinutenVon Maven zu Gradle in 45 Minuten
Von Maven zu Gradle in 45 Minuten
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 
Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsSoftwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration Tools
 
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
 
BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als Entwickler
 
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
 
Ant Maven
Ant MavenAnt Maven
Ant Maven
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)
 
Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit Maven
 
Workshop Vue js
Workshop Vue jsWorkshop Vue js
Workshop Vue js
 
Collaboration Days 2011 - Damit die Tester schneller ran können.
Collaboration Days 2011 - Damit die Tester schneller ran können.Collaboration Days 2011 - Damit die Tester schneller ran können.
Collaboration Days 2011 - Damit die Tester schneller ran können.
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
 
Implementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBRImplementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBR
 
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
 
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
 
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
 
Scala - OSGi Bundles from Outer (Java) Space
Scala - OSGi Bundles from Outer (Java) SpaceScala - OSGi Bundles from Outer (Java) Space
Scala - OSGi Bundles from Outer (Java) Space
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development Environments
 

JAX 2015 - Continuous Integration mit Java & Javascript