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.ļ¬ickr.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.ļ¬ickr.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.ļ¬ickr.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
ļ¬eld, 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
ļ¬eld, 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
ļ¬eld, 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
ļ¬eld, 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
ļ¬eld, 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
ļ¬eld, 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
ļ¬eld, 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
ļ¬eld, 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
ļ¬eld, 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
ļ¬eld, 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 difļ¬cult?
photo by huangjiahui on Flickr
ā£ OSGi vs. Maven versions 1.0.0 < 1.0.0.
qualiļ¬er
1.0.0-SNAPSH
OT < 1.0.0
ā£ WIP @ OSGi alliance
23. Why difļ¬cult?
photo by huangjiahui on Flickr
ā£ OSGi vs. Maven versions 1.0.0 < 1.0.0.
qualiļ¬er
1.0.0-SNAPSH
OT < 1.0.0
ā£ WIP @ OSGi alliance
ā£ P2 vs. Maven repositories
ā£ tycho uniļ¬es them
PONTO DE CONVERGĆNCIA (Convergence Point)
Von jonycunha
24. Why difļ¬cult?
photo by huangjiahui on Flickr
ā£ OSGi vs. Maven versions 1.0.0 < 1.0.0.
qualiļ¬er
1.0.0-SNAPSH
OT < 1.0.0
ā£ WIP @ OSGi alliance
ā£ P2 vs. Maven repositories
ā£ tycho uniļ¬es 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, difļ¬cult things possible
28. Why tycho?
ā£ active, open and helpful community
ā£ easy things easy to do, difļ¬cult things possible
ā£ can use good PDE tooling
29. Why tycho?
ā£ active, open and helpful community
ā£ easy things easy to do, difļ¬cult 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, difļ¬cult 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, difļ¬cult 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 deļ¬am
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.ļ¬ickr.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.ļ¬ickr.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.ļ¬ickr.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.ļ¬ickr.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 deļ¬ned 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 ļ¬le 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 ļ¬le 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 (ļ¬xed 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