SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
Continuous Automated
Deployment with

Thursday, October 31, 13
Who are we
Jago de Vreede
Senior Developer at Luminis Technologies

Marcel Offermans
Director at Luminis Technologies
Member at the Apache Software Foundation
@m4rr5
Thursday, October 31, 13
Agenda
• Traditional Continuous Integration
• From EAR to bundles
• Versioning and baselining
• ACE basics
• Build env. setup with ACE
• Demo
Thursday, October 31, 13
Traditional Continuous
Integration
(enterprise) apps before OSGi

Source
repository

Thursday, October 31, 13
Traditional Continuous
Integration
(enterprise) apps before OSGi

Source
repository

Thursday, October 31, 13

CI
Traditional Continuous
Integration
(enterprise) apps before OSGi

Source
repository

Thursday, October 31, 13

CI

Package
(EAR/WAR)
Traditional Continuous
Integration
(enterprise) apps before OSGi

Source
repository

Thursday, October 31, 13

CI

Package
(EAR/WAR)

Target
Traditional Continuous
Integration
(enterprise) apps before OSGi
Maven plugins,
scp, and many
others

Source
repository

Thursday, October 31, 13

CI

Package
(EAR/WAR)

?

Target
Monolithic to Modular
Single, big, monolithic
application

Versioned whenever
“something” changes

Modules versioned
independently

On every change the
whole application has
to be redeployed

Thursday, October 31, 13

Many, small modules
that can be combined
to form applications

Only modules that
changed need to be
redeployed
What to version?
Bundles

So we know their contents has changed
rted Packages
Expo

So we know the interface contract has changed
our focus here is on bundle versions,
because they tell us what to update
Thursday, October 31, 13
Semantic Versioning
tells us what has changed

1.0.0.abc
major.minor.micro(.qualifier)
Major: Backward incompatible change
Minor: Backward compatible change
Micro: Implementation change
Qualifier: Label, e.g. build number

Thursday, October 31, 13
Baselining
Compares build with latest release
Checks if version numbers should be
bumped
Uses byte code analysis
pse with Bndtools
Ecli
-­‐baseline:  *
-­‐removeheaders:  Bnd-­‐LastModified,Tool,Created-­‐By

Thursday, October 31, 13
Eclipse with Bndtools
demo

Thursday, October 31, 13
Apache ACE
• Software distribution framework
• Manages the installation and upgrade
of bundles, configuration, etc. to
heterogenous targets

Thursday, October 31, 13
Organizing artifacts
• group artifacts into features and

distributions to make them manageable

• Analogy: IKEA catalog
License'Repository

Store&Repository
Ar-fact

Thursday, October 31, 13

Feature

Distribu-on

Distribu1on

Target
ACE basics
Ar#fact
Feature

Target

Ar#fact
Target
Ar#fact

Feature

Distribu#on
Target

Ar#fact

Feature
Target
Distribu#on

Ar#fact
Feature
Ar#fact

Thursday, October 31, 13

Target
Initial configuration of
Apache ACE
demo

Thursday, October 31, 13
Build env. with ACE
Source
repository

Thursday, October 31, 13

CI
Build env. with ACE
Source
repository

Thursday, October 31, 13

CI

Bundles
Build env. with ACE
Source
repository

CI

Bundles

OBR

Releases

Snapshots

Thursday, October 31, 13
Build env. with ACE
Source
repository

CI

Bundles

OBR

Releases

Snapshots

Thursday, October 31, 13

ACE
Build env. with ACE
Source
repository

CI

Bundles

OBR

Releases

Snapshots

Thursday, October 31, 13

ACE

Target
Build env. with ACE

Releases

Bundles from
build
Thursday, October 31, 13

Snapshots
Versioning bundles
from a build
Assume only bundle A changed since the release
Workspace

Snapshot Repository

Release Repository

A 1.0.1.SNAPSHOT

A 1.0.1.SNAPSHOT

A 1.0.0

B 1.0.1.SNAPSHOT

B 1.0.1.SNAPSHOT

B 1.0.0

C 1.0.1.SNAPSHOT

C 1.0.1.SNAPSHOT

C 1.0.0

Thursday, October 31, 13
Versioning bundles
from a build
Assume only bundle A changed since the release
Workspace

Snapshot Repository

Release Repository

A 1.0.1.SNAPSHOT

A 1.0.1.SNAPSHOT

A 1.0.0

B 1.0.1.SNAPSHOT

B 1.0.1.SNAPSHOT

B 1.0.0

C 1.0.1.SNAPSHOT

C 1.0.1.SNAPSHOT

C 1.0.0

Thursday, October 31, 13

1.0.1.SNAPSHOT > 1.0.1
Versioning bundles
from a build
Assume only bundle A changed since the release
Workspace

Snapshot Repository

1.0.1.SNAPSHOT > 1.0.1

A 1.0.1.SNAPSHOT
even though they have the
same version, not all
snapshots are equal
B 1.0.1.SNAPSHOT
B 1.0.1.SNAPSHOT
A 1.0.1.SNAPSHOT

C 1.0.1.SNAPSHOT

Thursday, October 31, 13

C 1.0.1.SNAPSHOT

Release Repository

A 1.0.0

B 1.0.0

C 1.0.0
Versioning bundles
from a build
Assume only bundle A changed since the release
Workspace

Snapshot Repository

1.0.1.SNAPSHOT > 1.0.1

A 1.0.1.SNAPSHOT
even though they have the
same version, not all
snapshots are equal
B 1.0.1.SNAPSHOT
B 1.0.1.SNAPSHOT
A 1.0.1.SNAPSHOT

even if nothing changed,
C 1.0.1.SNAPSHOT
C 1.0.1.SNAPSHOT
you still end up with a new
snapshot bundle
Thursday, October 31, 13

Release Repository

A 1.0.0

B 1.0.0

C 1.0.0
Versioning bundles
from a build
Assume only bundle A changed since the release
Workspace

Snapshot Repository

Release Repository

A 1.0.1.20131023

A 1.0.1.20131024

A 1.0.0

B 1.0.1.20131023

B 1.0.1.20131024

B 1.0.0

C 1.0.1.20131023

C 1.0.1.20131024

C 1.0.0

Thursday, October 31, 13
Versioning bundles
from a build
Assume only bundle A changed since the release
Workspace

Snapshot Repository

Release Repository

A 1.0.1.20131023

A 1.0.1.20131024

A 1.0.0

B 1.0.1.20131023

B 1.0.1.20131024

B 1.0.0

C 1.0.1.20131023

C 1.0.1.20131024

C 1.0.0

Thursday, October 31, 13

1.0.1.20131022 > 1.0.1
Versioning bundles
from a build
Assume only bundle A changed since the release
Workspace

Snapshot Repository

1.0.1.20131022 > 1.0.1

A 1.0.1.20131024
even though they have a
different version, they
might still be equal
B 1.0.1.20131023
B 1.0.1.20131024
A 1.0.1.20131023

C 1.0.1.20131023

Thursday, October 31, 13

C 1.0.1.20131024

Release Repository

A 1.0.0

B 1.0.0

C 1.0.0
Versioning bundles
from a build
Assume only bundle A changed since the release
Workspace

Snapshot Repository

1.0.1.20131022 > 1.0.1

A 1.0.1.20131024
even though they have a
different version, they
might still be equal
B 1.0.1.20131023
B 1.0.1.20131024
A 1.0.1.20131023

even if nothing changed,
C 1.0.1.20131023
C 1.0.1.20131024
you still end up with a new
bundle
Thursday, October 31, 13

Release Repository

A 1.0.0

B 1.0.0

C 1.0.0
Versioning bundles
from a build
Assume only bundle A changed since the release
Workspace

Snapshot Repository

Release Repository

A 1.0.1

A 1.0.0.CDS001

A 1.0.0

B 1.0.0

B 1.0.0

B 1.0.0

C 1.0.0

C 1.0.0

C 1.0.0

Thursday, October 31, 13
Versioning bundles
from a build
Assume only bundle A changed since the release
Workspace

Release Repository

A 1.0.1

A 1.0.0.CDS001

A 1.0.0

B 1.0.0

B 1.0.0

B 1.0.0

C 1.0.0

Thursday, October 31, 13

Snapshot Repository

C 1.0.0

C 1.0.0

1.0.0.CDS001 < 1.0.1
Versioning bundles
from a build
Assume only bundle A changed since the release
Workspace

Snapshot Repository

Release Repository

A 1.0.0.CDS001

A 1.0.0

B 1.0.0

B 1.0.0

B 1.0.0

C 1.0.0

C 1.0.0

C 1.0.0

A 1.0.1

Thursday, October 31, 13

1.0.0.CDS001 < 1.0.1
the bundle gets a new
qualifier if it has changed
Versioning bundles
from a build
Assume only bundle A changed since the release
Workspace

A 1.0.1

B 1.0.0

C 1.0.0

Thursday, October 31, 13

Snapshot Repository

Release Repository

A 1.0.0.CDS001

A 1.0.0

B 1.0.0

B 1.0.0

1.0.0.CDS001 < 1.0.1
the bundle gets a new
qualifier if it has changed
if nothing changed, nothing
C 1.0.0
new is deployed

C 1.0.0
What do we need?
CI
Script that places bundles in the OBR
ACE
Server with snapshot and release
OBR
Target
Management agent configured to the
ACE instance
Thursday, October 31, 13
GoGo shell
• “Standard” OSGi shell (RFC-147)
• Powerful and extensible
• Available from Apache Felix
• ACE provides commands to interact
with its client API and OBRs

Thursday, October 31, 13
Script
Setup

echo “Define repositories”
sourceindex = (repo:index ../release)
sourcerepo = (repo:repo R5 $sourceindex)
targetrepo = (repo:repo OBR "http://localhost:8084/obr/repository.xml")
releaserepo = (repo:repo OBR "http://localhost:8083/obr/repository.xml")

Define
repositories

echo "Deploying bundles"
deployed = repo:cd $releaserepo $sourcerepo $targetrepo

Deploy bundles

echo "Create workspace"
workspace = (ace:cw)
echo "For each bundle"
each $deployed {
echo "Get metadata from bundle"
identity = $it getIdentity
version = $it getVersion
name = "$identity - $version"
url = $it getUrl
mimetype = $it getMimetype
echo "Bundle exists?"
Thursday, October 31, 13

Create
workspace

For each
bundle

done

next bundle
Get metadata
from bundle

yes

Bundle
exists?
echo "For each bundle"
each $deployed {
echo "Get metadata from bundle"
identity = $it getIdentity
version = $it getVersion
name = "$identity - $version"
url = $it getUrl
mimetype = $it getMimetype
echo "Bundle exists?"
if { (coll:first
($workspace la "(&(Bundle-SymbolicName=$identity)
(Bundle-Version=$version))")) } {
echo "$name already exists"
} {
echo "Create artifact for bundle"
$workspace ca [
	
artifactName="$name"
	
url="$url"
	
mimetype="$mimetype"
	
Bundle-SymbolicName="$identity"
	
Bundle-Version="$version"
]
}
}
echo "Commit workspace"
$workspace commit
exit 0
Thursday, October 31, 13

For each
bundle

done

next bundle
Get metadata
from bundle

yes

Bundle
exists?

no
Create artifact for
bundle

Commit
workspace

Quit
Demo
• With the Amdatu Showcase (extended)
• https://bitbucket.org/amdatu/showcase

demo

Thursday, October 31, 13
ovisioning Server
Pr
ce.apache.org/
http://a

Eclipse OSGi plugin
http://bndtools.org/

Thursday, October 31, 13

Cloud OSGi services
http://www.amdatu.org/

That’s us
http://luminis.eu/
Thursday, October 31, 13
kU
an
D

Maha

Merci

lo

Danke
Grazie

Takk

Obrigado

racias
G

Thursday, October 31, 13

Thank
you

Weitere ähnliche Inhalte

Ähnlich wie Continuous Automated Deployment with Apache Ace - Jago de Vreede, Marcel Offermans

Continuous Automated Deployment with Apache ACE
Continuous Automated Deployment with Apache ACEContinuous Automated Deployment with Apache ACE
Continuous Automated Deployment with Apache ACEJan Willem Janssen
 
Managing Change
Managing ChangeManaging Change
Managing ChangeMirko Jahn
 
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020AWSKRUG - AWS한국사용자모임
 
stackconf 2022: It’s Time to Debloat the Cloud with Unikraft
stackconf 2022: It’s Time to Debloat the Cloud with Unikraftstackconf 2022: It’s Time to Debloat the Cloud with Unikraft
stackconf 2022: It’s Time to Debloat the Cloud with UnikraftNETWAYS
 
Kernel Recipes 2013 - Crosstool-NG, a cross-toolchain generator
Kernel Recipes 2013 - Crosstool-NG, a cross-toolchain generatorKernel Recipes 2013 - Crosstool-NG, a cross-toolchain generator
Kernel Recipes 2013 - Crosstool-NG, a cross-toolchain generatorAnne Nicolas
 
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Bram Adams
 
Ciao: Continuous Integration for Apps on OpenStack
Ciao: Continuous Integration for Apps on OpenStackCiao: Continuous Integration for Apps on OpenStack
Ciao: Continuous Integration for Apps on OpenStackEverett Toews
 
Zure Azure PaaS Zero to Hero - DevOps training day
Zure Azure PaaS Zero to Hero - DevOps training dayZure Azure PaaS Zero to Hero - DevOps training day
Zure Azure PaaS Zero to Hero - DevOps training dayOkko Oulasvirta
 
Archetype autoplugins
Archetype autopluginsArchetype autoplugins
Archetype autopluginsMark Schaake
 
Eclipse Training - Introduction
Eclipse Training - IntroductionEclipse Training - Introduction
Eclipse Training - IntroductionLuca D'Onofrio
 
Angular version 10 is here check out the new features, notable changes, depr...
Angular version 10 is here  check out the new features, notable changes, depr...Angular version 10 is here  check out the new features, notable changes, depr...
Angular version 10 is here check out the new features, notable changes, depr...Katy Slemon
 
The Ring programming language version 1.3 book - Part 8 of 88
The Ring programming language version 1.3 book - Part 8 of 88The Ring programming language version 1.3 book - Part 8 of 88
The Ring programming language version 1.3 book - Part 8 of 88Mahmoud Samir Fayed
 
Cross Cloud CI Intro
Cross Cloud CI IntroCross Cloud CI Intro
Cross Cloud CI IntroW Watson
 
Why so continuous
Why so continuousWhy so continuous
Why so continuousMax Lobur
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsAmazon Web Services
 
2 whats-new-in-ios7-m2-xcode-slides
2 whats-new-in-ios7-m2-xcode-slides2 whats-new-in-ios7-m2-xcode-slides
2 whats-new-in-ios7-m2-xcode-slidesMasterCode.vn
 
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with ConcourseContinuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with ConcourseVMware Tanzu
 
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWERContinuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWERIndrajit Poddar
 
Arquitectura en detalle de una anatomia devops
Arquitectura en detalle de una anatomia devopsArquitectura en detalle de una anatomia devops
Arquitectura en detalle de una anatomia devopsOrlando Chamorro
 
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineAnatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineRobert McDermott
 

Ähnlich wie Continuous Automated Deployment with Apache Ace - Jago de Vreede, Marcel Offermans (20)

Continuous Automated Deployment with Apache ACE
Continuous Automated Deployment with Apache ACEContinuous Automated Deployment with Apache ACE
Continuous Automated Deployment with Apache ACE
 
Managing Change
Managing ChangeManaging Change
Managing Change
 
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
goployer, 코드 기반의 배포 도구 - 송주영 (beNX) :: AWS Community Day 2020
 
stackconf 2022: It’s Time to Debloat the Cloud with Unikraft
stackconf 2022: It’s Time to Debloat the Cloud with Unikraftstackconf 2022: It’s Time to Debloat the Cloud with Unikraft
stackconf 2022: It’s Time to Debloat the Cloud with Unikraft
 
Kernel Recipes 2013 - Crosstool-NG, a cross-toolchain generator
Kernel Recipes 2013 - Crosstool-NG, a cross-toolchain generatorKernel Recipes 2013 - Crosstool-NG, a cross-toolchain generator
Kernel Recipes 2013 - Crosstool-NG, a cross-toolchain generator
 
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!
 
Ciao: Continuous Integration for Apps on OpenStack
Ciao: Continuous Integration for Apps on OpenStackCiao: Continuous Integration for Apps on OpenStack
Ciao: Continuous Integration for Apps on OpenStack
 
Zure Azure PaaS Zero to Hero - DevOps training day
Zure Azure PaaS Zero to Hero - DevOps training dayZure Azure PaaS Zero to Hero - DevOps training day
Zure Azure PaaS Zero to Hero - DevOps training day
 
Archetype autoplugins
Archetype autopluginsArchetype autoplugins
Archetype autoplugins
 
Eclipse Training - Introduction
Eclipse Training - IntroductionEclipse Training - Introduction
Eclipse Training - Introduction
 
Angular version 10 is here check out the new features, notable changes, depr...
Angular version 10 is here  check out the new features, notable changes, depr...Angular version 10 is here  check out the new features, notable changes, depr...
Angular version 10 is here check out the new features, notable changes, depr...
 
The Ring programming language version 1.3 book - Part 8 of 88
The Ring programming language version 1.3 book - Part 8 of 88The Ring programming language version 1.3 book - Part 8 of 88
The Ring programming language version 1.3 book - Part 8 of 88
 
Cross Cloud CI Intro
Cross Cloud CI IntroCross Cloud CI Intro
Cross Cloud CI Intro
 
Why so continuous
Why so continuousWhy so continuous
Why so continuous
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
 
2 whats-new-in-ios7-m2-xcode-slides
2 whats-new-in-ios7-m2-xcode-slides2 whats-new-in-ios7-m2-xcode-slides
2 whats-new-in-ios7-m2-xcode-slides
 
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with ConcourseContinuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
 
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWERContinuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
 
Arquitectura en detalle de una anatomia devops
Arquitectura en detalle de una anatomia devopsArquitectura en detalle de una anatomia devops
Arquitectura en detalle de una anatomia devops
 
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineAnatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
 

Mehr von mfrancis

Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...mfrancis
 
OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)mfrancis
 
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)mfrancis
 
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank LyaruuOSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruumfrancis
 
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...mfrancis
 
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...mfrancis
 
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...mfrancis
 
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)mfrancis
 
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...mfrancis
 
OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)mfrancis
 
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...mfrancis
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...mfrancis
 
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...mfrancis
 
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)mfrancis
 
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)mfrancis
 
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)mfrancis
 
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...mfrancis
 
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)mfrancis
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...mfrancis
 
How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)mfrancis
 

Mehr von mfrancis (20)

Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
 
OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)
 
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
 
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank LyaruuOSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
 
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
 
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
 
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
 
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
 
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
 
OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)
 
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
 
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
 
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
 
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
 
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
 
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
 
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
 
How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)
 

Kürzlich hochgeladen

Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 

Kürzlich hochgeladen (20)

Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 

Continuous Automated Deployment with Apache Ace - Jago de Vreede, Marcel Offermans

  • 2. Who are we Jago de Vreede Senior Developer at Luminis Technologies Marcel Offermans Director at Luminis Technologies Member at the Apache Software Foundation @m4rr5 Thursday, October 31, 13
  • 3. Agenda • Traditional Continuous Integration • From EAR to bundles • Versioning and baselining • ACE basics • Build env. setup with ACE • Demo Thursday, October 31, 13
  • 4. Traditional Continuous Integration (enterprise) apps before OSGi Source repository Thursday, October 31, 13
  • 5. Traditional Continuous Integration (enterprise) apps before OSGi Source repository Thursday, October 31, 13 CI
  • 6. Traditional Continuous Integration (enterprise) apps before OSGi Source repository Thursday, October 31, 13 CI Package (EAR/WAR)
  • 7. Traditional Continuous Integration (enterprise) apps before OSGi Source repository Thursday, October 31, 13 CI Package (EAR/WAR) Target
  • 8. Traditional Continuous Integration (enterprise) apps before OSGi Maven plugins, scp, and many others Source repository Thursday, October 31, 13 CI Package (EAR/WAR) ? Target
  • 9. Monolithic to Modular Single, big, monolithic application Versioned whenever “something” changes Modules versioned independently On every change the whole application has to be redeployed Thursday, October 31, 13 Many, small modules that can be combined to form applications Only modules that changed need to be redeployed
  • 10. What to version? Bundles So we know their contents has changed rted Packages Expo So we know the interface contract has changed our focus here is on bundle versions, because they tell us what to update Thursday, October 31, 13
  • 11. Semantic Versioning tells us what has changed 1.0.0.abc major.minor.micro(.qualifier) Major: Backward incompatible change Minor: Backward compatible change Micro: Implementation change Qualifier: Label, e.g. build number Thursday, October 31, 13
  • 12. Baselining Compares build with latest release Checks if version numbers should be bumped Uses byte code analysis pse with Bndtools Ecli -­‐baseline:  * -­‐removeheaders:  Bnd-­‐LastModified,Tool,Created-­‐By Thursday, October 31, 13
  • 14. Apache ACE • Software distribution framework • Manages the installation and upgrade of bundles, configuration, etc. to heterogenous targets Thursday, October 31, 13
  • 15. Organizing artifacts • group artifacts into features and distributions to make them manageable • Analogy: IKEA catalog License'Repository Store&Repository Ar-fact Thursday, October 31, 13 Feature Distribu-on Distribu1on Target
  • 17. Initial configuration of Apache ACE demo Thursday, October 31, 13
  • 18. Build env. with ACE Source repository Thursday, October 31, 13 CI
  • 19. Build env. with ACE Source repository Thursday, October 31, 13 CI Bundles
  • 20. Build env. with ACE Source repository CI Bundles OBR Releases Snapshots Thursday, October 31, 13
  • 21. Build env. with ACE Source repository CI Bundles OBR Releases Snapshots Thursday, October 31, 13 ACE
  • 22. Build env. with ACE Source repository CI Bundles OBR Releases Snapshots Thursday, October 31, 13 ACE Target
  • 23. Build env. with ACE Releases Bundles from build Thursday, October 31, 13 Snapshots
  • 24. Versioning bundles from a build Assume only bundle A changed since the release Workspace Snapshot Repository Release Repository A 1.0.1.SNAPSHOT A 1.0.1.SNAPSHOT A 1.0.0 B 1.0.1.SNAPSHOT B 1.0.1.SNAPSHOT B 1.0.0 C 1.0.1.SNAPSHOT C 1.0.1.SNAPSHOT C 1.0.0 Thursday, October 31, 13
  • 25. Versioning bundles from a build Assume only bundle A changed since the release Workspace Snapshot Repository Release Repository A 1.0.1.SNAPSHOT A 1.0.1.SNAPSHOT A 1.0.0 B 1.0.1.SNAPSHOT B 1.0.1.SNAPSHOT B 1.0.0 C 1.0.1.SNAPSHOT C 1.0.1.SNAPSHOT C 1.0.0 Thursday, October 31, 13 1.0.1.SNAPSHOT > 1.0.1
  • 26. Versioning bundles from a build Assume only bundle A changed since the release Workspace Snapshot Repository 1.0.1.SNAPSHOT > 1.0.1 A 1.0.1.SNAPSHOT even though they have the same version, not all snapshots are equal B 1.0.1.SNAPSHOT B 1.0.1.SNAPSHOT A 1.0.1.SNAPSHOT C 1.0.1.SNAPSHOT Thursday, October 31, 13 C 1.0.1.SNAPSHOT Release Repository A 1.0.0 B 1.0.0 C 1.0.0
  • 27. Versioning bundles from a build Assume only bundle A changed since the release Workspace Snapshot Repository 1.0.1.SNAPSHOT > 1.0.1 A 1.0.1.SNAPSHOT even though they have the same version, not all snapshots are equal B 1.0.1.SNAPSHOT B 1.0.1.SNAPSHOT A 1.0.1.SNAPSHOT even if nothing changed, C 1.0.1.SNAPSHOT C 1.0.1.SNAPSHOT you still end up with a new snapshot bundle Thursday, October 31, 13 Release Repository A 1.0.0 B 1.0.0 C 1.0.0
  • 28. Versioning bundles from a build Assume only bundle A changed since the release Workspace Snapshot Repository Release Repository A 1.0.1.20131023 A 1.0.1.20131024 A 1.0.0 B 1.0.1.20131023 B 1.0.1.20131024 B 1.0.0 C 1.0.1.20131023 C 1.0.1.20131024 C 1.0.0 Thursday, October 31, 13
  • 29. Versioning bundles from a build Assume only bundle A changed since the release Workspace Snapshot Repository Release Repository A 1.0.1.20131023 A 1.0.1.20131024 A 1.0.0 B 1.0.1.20131023 B 1.0.1.20131024 B 1.0.0 C 1.0.1.20131023 C 1.0.1.20131024 C 1.0.0 Thursday, October 31, 13 1.0.1.20131022 > 1.0.1
  • 30. Versioning bundles from a build Assume only bundle A changed since the release Workspace Snapshot Repository 1.0.1.20131022 > 1.0.1 A 1.0.1.20131024 even though they have a different version, they might still be equal B 1.0.1.20131023 B 1.0.1.20131024 A 1.0.1.20131023 C 1.0.1.20131023 Thursday, October 31, 13 C 1.0.1.20131024 Release Repository A 1.0.0 B 1.0.0 C 1.0.0
  • 31. Versioning bundles from a build Assume only bundle A changed since the release Workspace Snapshot Repository 1.0.1.20131022 > 1.0.1 A 1.0.1.20131024 even though they have a different version, they might still be equal B 1.0.1.20131023 B 1.0.1.20131024 A 1.0.1.20131023 even if nothing changed, C 1.0.1.20131023 C 1.0.1.20131024 you still end up with a new bundle Thursday, October 31, 13 Release Repository A 1.0.0 B 1.0.0 C 1.0.0
  • 32. Versioning bundles from a build Assume only bundle A changed since the release Workspace Snapshot Repository Release Repository A 1.0.1 A 1.0.0.CDS001 A 1.0.0 B 1.0.0 B 1.0.0 B 1.0.0 C 1.0.0 C 1.0.0 C 1.0.0 Thursday, October 31, 13
  • 33. Versioning bundles from a build Assume only bundle A changed since the release Workspace Release Repository A 1.0.1 A 1.0.0.CDS001 A 1.0.0 B 1.0.0 B 1.0.0 B 1.0.0 C 1.0.0 Thursday, October 31, 13 Snapshot Repository C 1.0.0 C 1.0.0 1.0.0.CDS001 < 1.0.1
  • 34. Versioning bundles from a build Assume only bundle A changed since the release Workspace Snapshot Repository Release Repository A 1.0.0.CDS001 A 1.0.0 B 1.0.0 B 1.0.0 B 1.0.0 C 1.0.0 C 1.0.0 C 1.0.0 A 1.0.1 Thursday, October 31, 13 1.0.0.CDS001 < 1.0.1 the bundle gets a new qualifier if it has changed
  • 35. Versioning bundles from a build Assume only bundle A changed since the release Workspace A 1.0.1 B 1.0.0 C 1.0.0 Thursday, October 31, 13 Snapshot Repository Release Repository A 1.0.0.CDS001 A 1.0.0 B 1.0.0 B 1.0.0 1.0.0.CDS001 < 1.0.1 the bundle gets a new qualifier if it has changed if nothing changed, nothing C 1.0.0 new is deployed C 1.0.0
  • 36. What do we need? CI Script that places bundles in the OBR ACE Server with snapshot and release OBR Target Management agent configured to the ACE instance Thursday, October 31, 13
  • 37. GoGo shell • “Standard” OSGi shell (RFC-147) • Powerful and extensible • Available from Apache Felix • ACE provides commands to interact with its client API and OBRs Thursday, October 31, 13
  • 38. Script Setup echo “Define repositories” sourceindex = (repo:index ../release) sourcerepo = (repo:repo R5 $sourceindex) targetrepo = (repo:repo OBR "http://localhost:8084/obr/repository.xml") releaserepo = (repo:repo OBR "http://localhost:8083/obr/repository.xml") Define repositories echo "Deploying bundles" deployed = repo:cd $releaserepo $sourcerepo $targetrepo Deploy bundles echo "Create workspace" workspace = (ace:cw) echo "For each bundle" each $deployed { echo "Get metadata from bundle" identity = $it getIdentity version = $it getVersion name = "$identity - $version" url = $it getUrl mimetype = $it getMimetype echo "Bundle exists?" Thursday, October 31, 13 Create workspace For each bundle done next bundle Get metadata from bundle yes Bundle exists?
  • 39. echo "For each bundle" each $deployed { echo "Get metadata from bundle" identity = $it getIdentity version = $it getVersion name = "$identity - $version" url = $it getUrl mimetype = $it getMimetype echo "Bundle exists?" if { (coll:first ($workspace la "(&(Bundle-SymbolicName=$identity) (Bundle-Version=$version))")) } { echo "$name already exists" } { echo "Create artifact for bundle" $workspace ca [ artifactName="$name" url="$url" mimetype="$mimetype" Bundle-SymbolicName="$identity" Bundle-Version="$version" ] } } echo "Commit workspace" $workspace commit exit 0 Thursday, October 31, 13 For each bundle done next bundle Get metadata from bundle yes Bundle exists? no Create artifact for bundle Commit workspace Quit
  • 40. Demo • With the Amdatu Showcase (extended) • https://bitbucket.org/amdatu/showcase demo Thursday, October 31, 13
  • 41. ovisioning Server Pr ce.apache.org/ http://a Eclipse OSGi plugin http://bndtools.org/ Thursday, October 31, 13 Cloud OSGi services http://www.amdatu.org/ That’s us http://luminis.eu/