1. Release Engineering
with Tycho and P2
Matthias Köster
Lead SW Engineer IDE @ NumberFour AG
Eclipse DemoCamp Hamburg
14. Jun 2012
by jin.thai on Flickr Some rights reserved.
4. N4 IDE
‣ JavaScript IDE based on eclipse DLTK
‣ Currently used company wide
‣ Platform team (Berlin)
‣ Application team (Hamburg)
5. N4 IDE
‣ JavaScript IDE based on eclipse DLTK
‣ Currently used company wide
‣ Platform team (Berlin)
‣ Application team (Hamburg)
‣ Released at least after each sprint
(every 3 weeks)
7. Being a release
engineer
‣ 10 years part time release engineer
picture by Perrenque
http://www.flickr.com/photos/perrenque/3289017892
8. Being a release
engineer
‣ 10 years part time release engineer
‣ 5 years ant build for Poseidon for UML
‣ Tamed build.xml maintenance nightmare
with generator feed from UML model
picture by Perrenque
http://www.flickr.com/photos/perrenque/3289017892
9. Being a release
engineer
‣ 10 years part time release engineer
‣ 5 years ant build for Poseidon for UML
‣ Tamed build.xml maintenance nightmare
with generator feed from UML model
‣ PDE ant build for Apollo for UML
‣ Undocumented at that time
‣ One person had all build knowledge
picture by Perrenque
http://www.flickr.com/photos/perrenque/3289017892
11. Why maven?aven ks to p
avin
uste
r t in
d expe thers. The w ho
) is a tr dge on to o eans one w
(also m ass knowle dm
dish, an nowledge.
ular
a partic ord
Am ia Yid
h o see e brew, v ulation of k
field, w mes from H n accum
co a
maven nds, based on
ta
unders kipedia)
i
(from w
12. Why maven? aven ks to p
avin
uste
r t in
d expe thers. The w ho
) is a tr dge on to o eans one w
(also m ass knowle dm
dish, an nowledge.
ular
a partic ord
Am ia Yid
h o see e brew, v ulation of k
field, w mes from H n accum
co a
maven nds, based on
ta
unders kipedia)
‣ I like maven (from w
i
13. Why maven? aven ks to p
avin
uste
r t in
d expe thers. The w ho
) is a tr dge on to o eans one w
(also m ass knowle dm
dish, an nowledge.
ular
a partic ord
Am ia Yid
h o see e brew, v ulation of k
field, w mes from H n accum
co a
maven nds, based on
ta
unders kipedia)
‣ I like maven (from w
i
‣ declarative instead of procedural
14. Why maven? aven ks to p
avin
uste
r t in
d expe thers. The w ho
) is a tr dge on to o eans one w
(also m ass knowle dm
dish, an nowledge.
ular
a partic ord
Am ia Yid
h o see e brew, v ulation of k
field, w mes from H n accum
co a
maven nds, based on
ta
unders kipedia)
‣ I like maven (from w
i
r
till use ant fo
‣ declarative instead of procedural You can s
proce dural hacks!
15. Why maven? aven ks to p
avin
uste
r t in
d expe thers. The w ho
) is a tr dge on to o eans one w
(also m ass knowle dm
dish, an nowledge.
ular
a partic ord
Am ia Yid
h o see e brew, v ulation of k
field, w mes from H n accum
co a
maven nds, based on
ta
unders kipedia)
‣ I like maven (from w
i
r
till use ant fo
‣ declarative instead of procedural You can s
proce dural hacks!
‣ transitive dependency resolution
16. Why maven? aven ks to p
avin
uste
r t in
d expe thers. The w ho
) is a tr dge on to o eans one w
(also m ass knowle dm
dish, an nowledge.
ular
a partic ord
Am ia Yid
h o see e brew, v ulation of k
field, w mes from H n accum
co a
maven nds, based on
ta
unders kipedia)
‣ I like maven (from w
i
r
till use ant fo
‣ declarative instead of procedural You can s
proce dural hacks!
te rnet,
‣ transitive dependency resolution c
he in e ;-)
kup t for m
e to ba ates it
n‘t lik autom
I do aven
but m
17. Why maven? aven ks to p
avin
uste
r t in
d expe thers. The w ho
) is a tr dge on to o eans one w
(also m ass knowle dm
dish, an nowledge.
ular
a partic ord
Am ia Yid
h o see e brew, v ulation of k
field, w mes from H n accum
co a
maven nds, based on
ta
unders kipedia)
‣ I like maven (from w
i
r
till use ant fo
‣ declarative instead of procedural You can s
proce dural hacks!
te rnet,
‣ transitive dependency resolution c
he in e ;-)
kup t for m
e to ba ates it
n‘t lik autom
I do aven
‣ standard build life cycyle but m
18. Why maven? aven ks to p
avin
uste
r t in
d expe thers. The w ho
) is a tr dge on to o eans one w
(also m ass knowle dm
dish, an nowledge.
ular
a partic ord
Am ia Yid
h o see e brew, v ulation of k
field, w mes from H n accum
co a
maven nds, based on
ta
unders kipedia)
‣ I like maven (from w
i
r
till use ant fo
‣ declarative instead of procedural You can s
proce dural hacks!
te rnet,
‣ transitive dependency resolution c
he in e ;-)
kup t for m
e to ba ates it
n‘t lik autom
I do aven
‣ standard build life cycyle but m
‣ DI container allows easy extension
19. Why maven? aven ks to p
avin
uste
r t in
d expe thers. The w ho
) is a tr dge on to o eans one w
(also m ass knowle dm
dish, an nowledge.
ular
a partic ord
Am ia Yid
h o see e brew, v ulation of k
field, w mes from H n accum
co a
maven nds, based on
ta
unders kipedia)
‣ I like maven (from w
i
r
till use ant fo
‣ declarative instead of procedural You can s
proce dural hacks!
te rnet,
‣ transitive dependency resolution c
he in e ;-)
kup t for m
e to ba ates it
n‘t lik autom
I do aven
‣ standard build life cycyle but m
s
aven plugin
Writing m
‣ DI container allows easy extension is really ea
sy & useful
!
20. Why maven? aven ks to p
avin
uste
r t in
d expe thers. The w ho
) is a tr dge on to o eans one w
(also m ass knowle dm
dish, an nowledge.
ular
a partic ord
Am ia Yid
h o see e brew, v ulation of k
field, w mes from H n accum
co a
maven nds, based on
ta
unders kipedia)
‣ I like maven (from w
i
r
till use ant fo
‣ declarative instead of procedural You can s
proce dural hacks!
te rnet,
‣ transitive dependency resolution c
he in e ;-)
kup t for m
e to ba ates it
n‘t lik autom
I do aven
‣ standard build life cycyle but m
s
aven plugin
Writing m
‣ DI container allows easy extension is really ea
sy & useful
!
‣ de facto standard java build tool
22. Why difficult?
photo by huangjiahui on Flickr
‣ OSGi vs. Maven versions 1.0.0 < 1.0.0.
qualifier
1.0.0-SNAPSH
OT < 1.0.0
‣ WIP @ OSGi alliance
23. Why difficult?
photo by huangjiahui on Flickr
‣ OSGi vs. Maven versions 1.0.0 < 1.0.0.
qualifier
1.0.0-SNAPSH
OT < 1.0.0
‣ WIP @ OSGi alliance
‣ P2 vs. Maven repositories
‣ tycho unifies them
PONTO DE CONVERGÊNCIA (Convergence Point)
Von jonycunha
24. Why difficult?
photo by huangjiahui on Flickr
‣ OSGi vs. Maven versions 1.0.0 < 1.0.0.
qualifier
1.0.0-SNAPSH
OT < 1.0.0
‣ WIP @ OSGi alliance
‣ P2 vs. Maven repositories
‣ tycho unifies them
‣ Eclipse build still very complex
‣ version numbers everywhere
‣ PDE build generates build.xml!
PONTO DE CONVERGÊNCIA (Convergence Point)
Von jonycunha
27. Why tycho?
‣ active, open and helpful community
‣ easy things easy to do, difficult things possible
28. Why tycho?
‣ active, open and helpful community
‣ easy things easy to do, difficult things possible
‣ can use good PDE tooling
29. Why tycho?
‣ active, open and helpful community
‣ easy things easy to do, difficult things possible
‣ can use good PDE tooling
‣ tycho gains momentum at eclipse
‣ backed by sonatype & SAP
30. Why tycho?
‣ active, open and helpful community
‣ easy things easy to do, difficult things possible
‣ can use good PDE tooling
‣ tycho gains momentum at eclipse
‣ backed by sonatype & SAP
‣ already in use by several projects
‣ CBI, JBoss tools, EGit
31. Why tycho?
‣ active, open and helpful community
‣ easy things easy to do, difficult things possible
‣ can use good PDE tooling
‣ tycho gains momentum at eclipse
‣ backed by sonatype & SAP
‣ already in use by several projects
‣ CBI, JBoss tools, EGit
Vintage: Girls on a Donkey
Von deflam
33. N4 IDE Build
with tycho on jenkins
‣ Build with tycho since version 0.9.0
‣ Tests running on jenkins
34. N4 IDE Build
with tycho on jenkins
‣ Build with tycho since version 0.9.0
‣ Tests running on jenkins
‣ But released manually with PDE export
Women on Assembly Line Stamping Hams
Von Wisconsin Historical Images
35. N4 IDE Build
with tycho on jenkins
‣ Build with tycho since version 0.9.0
‣ Tests running on jenkins
‣ But released manually with PDE export
‣ Missing features (Mac OS X)
‣ Branding
‣ Native launchers
Women on Assembly Line Stamping Hams
Von Wisconsin Historical Images
37. Releasing with tycho
‣ Since 09/2011 releasing
with tycho 0.13.0
Assembly Line in Detroit Historical Museum
Von harry_nl
38. Releasing with tycho
‣ Since 09/2011 releasing
with tycho 0.13.0
‣ Branding and native launchers by using
eclipse-repository packaging
Assembly Line in Detroit Historical Museum
Von harry_nl
39. Releasing with tycho
‣ Since 09/2011 releasing
with tycho 0.13.0
‣ Branding and native launchers by using
eclipse-repository packaging
‣ P2 repositories for our IDE, IDL generator &
SDK
Assembly Line in Detroit Historical Museum
Von harry_nl
40. Releasing with tycho
‣ Since 09/2011 releasing
with tycho 0.13.0
‣ Branding and native launchers by using
eclipse-repository packaging
‣ P2 repositories for our IDE, IDL generator &
SDK
‣ Homemade maven plugin
for native installers (msi, dmg)
Assembly Line in Detroit Historical Museum
Von harry_nl
42. Challenges when
releasing with tycho
http://www.flickr.com/photos/koenvereeken/2088902012
photo by Koen Vereeken
‣ Version numbers everywhere
‣ Maven pom.xml
‣ Eclipse MANIFEST.MF, feature.xml, .product
‣ P2 artifact.xml, content.xml
43. Challenges when
releasing with tycho
http://www.flickr.com/photos/koenvereeken/2088902012
photo by Koen Vereeken
‣ Version numbers everywhere
‣ Maven pom.xml
‣ Eclipse MANIFEST.MF, feature.xml, .product
‣ P2 artifact.xml, content.xml
‣ 6 updatesites, 2 products, 5 features, 70 plugins
44. Challenges when
releasing with tycho
http://www.flickr.com/photos/koenvereeken/2088902012
photo by Koen Vereeken
‣ Version numbers everywhere
‣ Maven pom.xml
‣ Eclipse MANIFEST.MF, feature.xml, .product
‣ P2 artifact.xml, content.xml
‣ 6 updatesites, 2 products, 5 features, 70 plugins
‣ tycho version < 1.0.0
‣ 0.15.0 faster, not tested yet
45. Challenges when
releasing with tycho
http://www.flickr.com/photos/koenvereeken/2088902012
photo by Koen Vereeken
‣ Version numbers everywhere
‣ Maven pom.xml
‣ Eclipse MANIFEST.MF, feature.xml, .product
‣ P2 artifact.xml, content.xml
‣ 6 updatesites, 2 products, 5 features, 70 plugins
Von Tambako the Jaguar
Nice leopard portrait
‣ tycho version < 1.0.0
‣ 0.15.0 faster, not tested yet
46. Module structure
for tycho-versions-plugin
parent
rcpmail
version 1.0.0
plugin
modules feature
product
see also:
https://community.jboss.org/en/tools/blog/2011/09/17/coping-with-versions-in-large-multi-module-osgi-projects
47. Module structure
for tycho-versions-plugin
parent
rcpmail
version 1.0.0
plugin
t!
Version defined by paren
modules feature
product
see also:
https://community.jboss.org/en/tools/blog/2011/09/17/coping-with-versions-in-large-multi-module-osgi-projects
50. Our current solution
‣ Using tycho-versions-plugin
‣ plugin & features dependencies
with 0.0.0 version
51. Our current solution
‣ Using tycho-versions-plugin
‣ plugin & features dependencies
with 0.0.0 version
‣ ant script for updating product version
52. Our current solution
‣ Using tycho-versions-plugin
‣ plugin & features dependencies
with 0.0.0 version
‣ ant script for updating product version CK!!
HA
Don‘t try
!
this at home
53. Our current solution
‣ Using tycho-versions-plugin
‣ plugin & features dependencies
with 0.0.0 version
‣ ant script for updating product version CK!!
HA
Don‘t try
‣ Separate modules based this at home
!
on versioning needs
54. Our current solution
‣ Using tycho-versions-plugin
‣ plugin & features dependencies
with 0.0.0 version
‣ ant script for updating product version CK!!
HA
Don‘t try
‣ Separate modules based this at home
!
on versioning needs
‣ Linux version schema
1.0.0 < 1.0.1-SNAPSHOT < 1.0.2
56. Create native installers
http://code.google.com/a/eclipselabs.org/p/tycho-installer-plugin/
e m o
D e
T im
57. Create native installers
http://code.google.com/a/eclipselabs.org/p/tycho-installer-plugin/
e m o
‣ Reuses metadata from *.product file D e
(license, version, manufactor) T im
‣ on Mac OS X creates dmg installer
‣ on Windows creates msi installer
58. Create native installers
http://code.google.com/a/eclipselabs.org/p/tycho-installer-plugin/
e m o
‣ Reuses metadata from *.product file D e
(license, version, manufactor) T im
‣ on Mac OS X creates dmg installer
‣ on Windows creates msi installer
‣ Adapt application folder layout on
Mac OS X (fixed in P2/Juno)
‣ https://bugs.eclipse.org/bugs/show_bug.cgi?id=57349
‣ http://prapicault.blogspot.ca/2012/05/eclipse-based-applications-as-
standard.html
65. Further improvements
‣ Still not mirroring P2 sites
‣ build instability
‣ bad open source citizen
‣ open sourced nexus
p2 repository plugin didn‘t work for us