SlideShare a Scribd company logo
Release Engineering
                with Tycho and P2
Matthias Köster
Lead SW Engineer IDE @ NumberFour AG
Eclipse DemoCamp Berlin
28. Nov 2011




                                       by jin.thai on Flickr Some rights reserved.
Me, myself and I
Me, myself and I
‣ 11 years working as SW Engineer
 ‣ 10 years part time release engineer
 ‣ 7 years eclipse user and consumer
Me, myself and I
‣ 11 years working as SW Engineer
 ‣ 10 years part time release engineer
 ‣ 7 years eclipse user and consumer
‣ POTLD @ N4
   ‣ Product Owner
   ‣ Team Lead
   ‣ Developer
N4 IDE
N4 IDE
‣ JavaScript IDE based on eclipse DLTK
N4 IDE
‣ JavaScript IDE based on eclipse DLTK
‣ Currently used company wide
 ‣ Platform team (Berlin)
 ‣ Application team (Hamburg)
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 2 weeks)
Being a release
   engineer
Being a release
         engineer
‣ 10 years part time release engineer




                                                                      picture by Perrenque
                                        http://www.flickr.com/photos/perrenque/3289017892
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
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
Why maven?
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
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
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
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!
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
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
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
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
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
                                                                                      !
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
Why difficult?




photo by huangjiahui on Flickr
Why difficult?




                                                          photo by huangjiahui on Flickr
‣ OSGi vs. Maven versions   1.0.0 < 1.0.0.quali
                                                fier
                                                    0.0
                            1.0.0-SNA  PSHOT < 1.
 ‣ work in progress @ OSGi alliance
Why difficult?




                                                                                         photo by huangjiahui on Flickr
‣ OSGi vs. Maven versions     1.0.0 < 1.0.0.quali
                                                  fier
                                                      0.0
                              1.0.0-SNA  PSHOT < 1.
 ‣ work in progress @ OSGi alliance
‣ P2 vs. Maven repositories
 ‣ tycho unifies them




                                                 PONTO DE CONVERGÊNCIA (Convergence Point)
                                                                              Von jonycunha
Why difficult?




                                                                                         photo by huangjiahui on Flickr
‣ OSGi vs. Maven versions     1.0.0 < 1.0.0.quali
                                                  fier
                                                      0.0
                              1.0.0-SNA  PSHOT < 1.
 ‣ work in progress @ 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
Why tycho?
Why tycho?
‣ active, open and helpful community
Why tycho?
‣ active, open and helpful community
‣ easy things easy to do, difficult things possible
Why tycho?
‣ active, open and helpful community
‣ easy things easy to do, difficult things possible
‣ can use good PDE tooling
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
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
 ‣ JBoss tools, EGit
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
 ‣ JBoss tools, EGit
                                                 Vintage: Girls on a Donkey
                                                                Von deflam
N4 IDE Build
with tycho on jenkins
N4 IDE Build
   with tycho on jenkins
‣ Build with tycho since version 0.9.0
   ‣ Tests running on jenkins
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
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 (mainly Mac OS X)
 ‣ Branding
 ‣ Native launchers

                                          Women on Assembly Line Stamping Hams
                                                  Von Wisconsin Historical Images
Releasing with tycho
Releasing with tycho
‣ Since 09/2011 releasing
  with tycho 0.13.0




                            Assembly Line in Detroit Historical Museum
                                                         Von harry_nl
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
Releasing with tycho
‣ Since 09/2011 releasing
  with tycho 0.13.0
‣ Branding and native launchers by using
  eclipse-repository packaging
‣ P2 repository for our IDE & SDK
  tycho-extras-plugin plugin-feature-publisher


                                           Assembly Line in Detroit Historical Museum
                                                                        Von harry_nl
Releasing with tycho
‣ Since 09/2011 releasing
  with tycho 0.13.0
‣ Branding and native launchers by using
  eclipse-repository packaging
‣ P2 repository for our IDE & SDK
  tycho-extras-plugin plugin-feature-publisher
‣ Homemade maven plugin
  for native installers (msi, dmg)
                                           Assembly Line in Detroit Historical Museum
                                                                        Von harry_nl
Challenges when
working with tycho
Challenges when
      working 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
Challenges when
       working 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
‣ 2 products, 5 features, > 60 plugins
Challenges when
       working 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
‣ 2 products, 5 features, > 60 plugins
‣ tycho version < 1.0.0
Challenges when
       working 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
‣ 2 products, 5 features, > 60 plugins
‣ tycho version < 1.0.0
Challenges when
       working 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
‣ 2 products, 5 features, > 60 plugins




                                                                                     Von Tambako the Jaguar
                                                Nice leopard portrait
‣ tycho version < 1.0.0
Module structure
for tycho-versions-plugin
                          parent

 rcpmail
version 1.0.0
                plugin

modules         feature


                product
Module structure
for tycho-versions-plugin
                                   parent

 rcpmail
version 1.0.0
                plugin
                                                 t!
                          Version defined by paren
modules         feature


                product
Our current solution
Our current solution
‣ Using tycho-versions-plugin
Our current solution
‣ Using tycho-versions-plugin
‣ plugin & features dependencies
  with 0.0.0 version
Our current solution
‣ Using tycho-versions-plugin
‣ plugin & features dependencies
  with 0.0.0 version
‣ ant script for updating product version
Our current solution
‣ Using tycho-versions-plugin
‣ plugin & features dependencies
  with 0.0.0 version
‣ ant script for updating product version     HACK!!
                                              Don‘t try
                                                        !
                                            this at home
Our current solution
‣ Using tycho-versions-plugin
‣ plugin & features dependencies
  with 0.0.0 version
‣ ant script for updating product version     HACK!!
                                              Don‘t try
‣ Separate modules based                    this at home
                                                        !

  on versioning needs
Our current solution
‣ Using tycho-versions-plugin
‣ plugin & features dependencies
  with 0.0.0 version
‣ ant script for updating product version     HACK!!
                                              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
Our module structure
                                              parent

                       ide
                   version 1.0.0
                                   plugins
                                   plugin

                 modules           features
                                    feature

browser                                                  ide
version 15.0.0                     products
                                   product
                                                       compiler
Our module structure
                                                    parent

                       ide
                   version 1.0.0
                                   plugins
                                   plugin
                                                                     t!
                                              Version defined by paren
                 modules           features
                                    feature

browser                                                            ide
version 15.0.0                     products
                                   product
                                                               compiler
Our module structure
                                                    parent

                       ide
                   version 1.0.0
                                   plugins
                                   plugin
                                                                     t!
                                              Version defined by paren
                 modules           features
                                    feature

browser                                                            ide
version 15.0.0                     products
                                   product
  D efines own ver
                  sion  !                                      compiler
Demo
Enable tycho build
Demo
       Enable tycho build
‣ Create RCP Mail example
 ‣ make it updateable
   add feature and product
Demo
       Enable tycho build
‣ Create RCP Mail example
 ‣ make it updateable
   add feature and product
‣ Generate pom.xml files
Demo
       Enable tycho build
‣ Create RCP Mail example
 ‣ make it updateable
   add feature and product
‣ Generate pom.xml files                                                     oms
                                                          plugin:generate-p
                                          - pomgenerator-
                         pse .tycho:tycho
            mvn org.ecli               le
             -DgroupId   =com.examp
Demo
       Enable tycho build
‣ Create RCP Mail example
 ‣ make it updateable
   add feature and product
‣ Generate pom.xml files                                                      oms
                                                           plugin:generate-p
                                           - pomgenerator-
                          pse .tycho:tycho
             mvn org.ecli               le
              -DgroupId   =com.examp

‣ Add indigo repository
Demo
Enable tycho release
Demo
      Enable tycho release
‣ Fix parent versions
 ‣ change app packaging to eclipse-repository
   remove version from modules
   check parent version matches osgi version
Demo
      Enable tycho release
‣ Fix parent versions
 ‣ change app packaging to eclipse-repository
   remove version from modules
   check parent version matches osgi version
‣ Release next version
 ‣ use patched tycho-versions-plugin
Demo
      Enable tycho release
‣ Fix parent versions
 ‣ change app packaging to eclipse-repository
   remove version from modules
   check parent version matches osgi version
‣ Release next version
 ‣ use patched tycho-versions-plugin
                                                                         n
                                                       plu gin:set-versio
                                      tyc ho-versions-
              mvn org.e clipse.tycho:
               -DnewV  ersion=1.0.1
Demo
Test P2 repo
Demo
          Test P2 repo
‣ Add jetty-maven-plugin configuration
Demo
          Test P2 repo
‣ Add jetty-maven-plugin configuration
‣ Run jetty activated by maven profile
Demo
          Test P2 repo
‣ Add jetty-maven-plugin configuration
‣ Run jetty activated by maven profile                                 r
                                                      -Pr un-p2-serve
                                       ho.m ode=maven
                       mv n test -Dtyc
Demo
          Test P2 repo
‣ Add jetty-maven-plugin configuration
‣ Run jetty activated by maven profile                                 r
                                                      -Pr un-p2-serve
                                       ho.m ode=maven
                       mv n test -Dtyc

‣ Test update from previous version
Demo
          Test P2 repo
‣ Add jetty-maven-plugin configuration
‣ Run jetty activated by maven profile                                 r
                                                      -Pr un-p2-serve
                                       ho.m ode=maven
                       mv n test -Dtyc

‣ Test update from previous version
 ‣ Unzip previous version
Demo
          Test P2 repo
‣ Add jetty-maven-plugin configuration
‣ Run jetty activated by maven profile                                 r
                                                      -Pr un-p2-serve
                                       ho.m ode=maven
                       mv n test -Dtyc

‣ Test update from previous version
 ‣ Unzip previous version
 ‣ Start app and perform update
Further improvements
Further improvements
‣ Still not mirroring P2 sites
 ‣ build instability
 ‣ bad open source citizen
 ‣ open sourced nexus
   p2 repository plugin didn‘t work for us
Further improvements
‣ Still not mirroring P2 sites
 ‣ build instability
 ‣ bad open source citizen
 ‣ open sourced nexus
   p2 repository plugin didn‘t work for us




                                             and licensed for reuse under this Creative Commons Licence.
‣ Small bug fix requires
  full product update




                                             © Copyright Christine Matthews
Q &A
Q &A
‣ Thank you for your attention!
Q &A
‣ Thank you for your attention!
Q &A
‣ Thank you for your attention!




                                  hi rin g!
                      We ‘re       ro ur
                            nly fo
                      No to        m!
                             ET ea
                          ID
tycho@ohloh.net
tycho@ohloh.net

More Related Content

KEY
Release enginnering with tycho and p2
PPTX
Release engineering at Eclipse
PPTX
Java 8-eclipse-luna
PDF
[20 min Lecture] Intentional Environments: Designing a Culture of Co-creation
PDF
Intentional Environments: Designing a Culture of Co-creation
PDF
Why Hire Portent?
PDF
Tips for Effective Presentations
PDF
Introduction to-c-using-net
Release enginnering with tycho and p2
Release engineering at Eclipse
Java 8-eclipse-luna
[20 min Lecture] Intentional Environments: Designing a Culture of Co-creation
Intentional Environments: Designing a Culture of Co-creation
Why Hire Portent?
Tips for Effective Presentations
Introduction to-c-using-net

Recently uploaded (20)

PPTX
Spectroscopy.pptx food analysis technology
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Encapsulation theory and applications.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
KodekX | Application Modernization Development
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
Big Data Technologies - Introduction.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Spectroscopy.pptx food analysis technology
Unlocking AI with Model Context Protocol (MCP)
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Encapsulation theory and applications.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Digital-Transformation-Roadmap-for-Companies.pptx
KodekX | Application Modernization Development
Review of recent advances in non-invasive hemoglobin estimation
MYSQL Presentation for SQL database connectivity
Big Data Technologies - Introduction.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
Spectral efficient network and resource selection model in 5G networks
20250228 LYD VKU AI Blended-Learning.pptx
Network Security Unit 5.pdf for BCA BBA.
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Reach Out and Touch Someone: Haptics and Empathic Computing
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
NewMind AI Weekly Chronicles - August'25 Week I
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Ad
Ad

Release enginnering with tycho and p2

  • 1. Release Engineering with Tycho and P2 Matthias Köster Lead SW Engineer IDE @ NumberFour AG Eclipse DemoCamp Berlin 28. Nov 2011 by jin.thai on Flickr Some rights reserved.
  • 3. Me, myself and I ‣ 11 years working as SW Engineer ‣ 10 years part time release engineer ‣ 7 years eclipse user and consumer
  • 4. Me, myself and I ‣ 11 years working as SW Engineer ‣ 10 years part time release engineer ‣ 7 years eclipse user and consumer ‣ POTLD @ N4 ‣ Product Owner ‣ Team Lead ‣ Developer
  • 6. N4 IDE ‣ JavaScript IDE based on eclipse DLTK
  • 7. N4 IDE ‣ JavaScript IDE based on eclipse DLTK ‣ Currently used company wide ‣ Platform team (Berlin) ‣ Application team (Hamburg)
  • 8. 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 2 weeks)
  • 9. Being a release engineer
  • 10. Being a release engineer ‣ 10 years part time release engineer picture by Perrenque http://www.flickr.com/photos/perrenque/3289017892
  • 11. 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
  • 12. 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
  • 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 (from w
  • 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
  • 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 ‣ declarative instead of procedural
  • 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!
  • 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! ‣ transitive dependency resolution
  • 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 but m
  • 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
  • 21. 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
  • 22. 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 !
  • 23. 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
  • 24. Why difficult? photo by huangjiahui on Flickr
  • 25. Why difficult? photo by huangjiahui on Flickr ‣ OSGi vs. Maven versions 1.0.0 < 1.0.0.quali fier 0.0 1.0.0-SNA PSHOT < 1. ‣ work in progress @ OSGi alliance
  • 26. Why difficult? photo by huangjiahui on Flickr ‣ OSGi vs. Maven versions 1.0.0 < 1.0.0.quali fier 0.0 1.0.0-SNA PSHOT < 1. ‣ work in progress @ OSGi alliance ‣ P2 vs. Maven repositories ‣ tycho unifies them PONTO DE CONVERGÊNCIA (Convergence Point) Von jonycunha
  • 27. Why difficult? photo by huangjiahui on Flickr ‣ OSGi vs. Maven versions 1.0.0 < 1.0.0.quali fier 0.0 1.0.0-SNA PSHOT < 1. ‣ work in progress @ 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
  • 29. Why tycho? ‣ active, open and helpful community
  • 30. Why tycho? ‣ active, open and helpful community ‣ easy things easy to do, difficult things possible
  • 31. Why tycho? ‣ active, open and helpful community ‣ easy things easy to do, difficult things possible ‣ can use good PDE tooling
  • 32. 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
  • 33. 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 ‣ JBoss tools, EGit
  • 34. 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 ‣ JBoss tools, EGit Vintage: Girls on a Donkey Von deflam
  • 35. N4 IDE Build with tycho on jenkins
  • 36. N4 IDE Build with tycho on jenkins ‣ Build with tycho since version 0.9.0 ‣ Tests running on jenkins
  • 37. 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
  • 38. 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 (mainly Mac OS X) ‣ Branding ‣ Native launchers Women on Assembly Line Stamping Hams Von Wisconsin Historical Images
  • 40. Releasing with tycho ‣ Since 09/2011 releasing with tycho 0.13.0 Assembly Line in Detroit Historical Museum Von harry_nl
  • 41. 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
  • 42. Releasing with tycho ‣ Since 09/2011 releasing with tycho 0.13.0 ‣ Branding and native launchers by using eclipse-repository packaging ‣ P2 repository for our IDE & SDK tycho-extras-plugin plugin-feature-publisher Assembly Line in Detroit Historical Museum Von harry_nl
  • 43. Releasing with tycho ‣ Since 09/2011 releasing with tycho 0.13.0 ‣ Branding and native launchers by using eclipse-repository packaging ‣ P2 repository for our IDE & SDK tycho-extras-plugin plugin-feature-publisher ‣ Homemade maven plugin for native installers (msi, dmg) Assembly Line in Detroit Historical Museum Von harry_nl
  • 45. Challenges when working 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
  • 46. Challenges when working 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 ‣ 2 products, 5 features, > 60 plugins
  • 47. Challenges when working 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 ‣ 2 products, 5 features, > 60 plugins ‣ tycho version < 1.0.0
  • 48. Challenges when working 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 ‣ 2 products, 5 features, > 60 plugins ‣ tycho version < 1.0.0
  • 49. Challenges when working 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 ‣ 2 products, 5 features, > 60 plugins Von Tambako the Jaguar Nice leopard portrait ‣ tycho version < 1.0.0
  • 50. Module structure for tycho-versions-plugin parent rcpmail version 1.0.0 plugin modules feature product
  • 51. Module structure for tycho-versions-plugin parent rcpmail version 1.0.0 plugin t! Version defined by paren modules feature product
  • 53. Our current solution ‣ Using tycho-versions-plugin
  • 54. Our current solution ‣ Using tycho-versions-plugin ‣ plugin & features dependencies with 0.0.0 version
  • 55. Our current solution ‣ Using tycho-versions-plugin ‣ plugin & features dependencies with 0.0.0 version ‣ ant script for updating product version
  • 56. Our current solution ‣ Using tycho-versions-plugin ‣ plugin & features dependencies with 0.0.0 version ‣ ant script for updating product version HACK!! Don‘t try ! this at home
  • 57. Our current solution ‣ Using tycho-versions-plugin ‣ plugin & features dependencies with 0.0.0 version ‣ ant script for updating product version HACK!! Don‘t try ‣ Separate modules based this at home ! on versioning needs
  • 58. Our current solution ‣ Using tycho-versions-plugin ‣ plugin & features dependencies with 0.0.0 version ‣ ant script for updating product version HACK!! 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
  • 59. Our module structure parent ide version 1.0.0 plugins plugin modules features feature browser ide version 15.0.0 products product compiler
  • 60. Our module structure parent ide version 1.0.0 plugins plugin t! Version defined by paren modules features feature browser ide version 15.0.0 products product compiler
  • 61. Our module structure parent ide version 1.0.0 plugins plugin t! Version defined by paren modules features feature browser ide version 15.0.0 products product D efines own ver sion ! compiler
  • 63. Demo Enable tycho build ‣ Create RCP Mail example ‣ make it updateable add feature and product
  • 64. Demo Enable tycho build ‣ Create RCP Mail example ‣ make it updateable add feature and product ‣ Generate pom.xml files
  • 65. Demo Enable tycho build ‣ Create RCP Mail example ‣ make it updateable add feature and product ‣ Generate pom.xml files oms plugin:generate-p - pomgenerator- pse .tycho:tycho mvn org.ecli le -DgroupId =com.examp
  • 66. Demo Enable tycho build ‣ Create RCP Mail example ‣ make it updateable add feature and product ‣ Generate pom.xml files oms plugin:generate-p - pomgenerator- pse .tycho:tycho mvn org.ecli le -DgroupId =com.examp ‣ Add indigo repository
  • 68. Demo Enable tycho release ‣ Fix parent versions ‣ change app packaging to eclipse-repository remove version from modules check parent version matches osgi version
  • 69. Demo Enable tycho release ‣ Fix parent versions ‣ change app packaging to eclipse-repository remove version from modules check parent version matches osgi version ‣ Release next version ‣ use patched tycho-versions-plugin
  • 70. Demo Enable tycho release ‣ Fix parent versions ‣ change app packaging to eclipse-repository remove version from modules check parent version matches osgi version ‣ Release next version ‣ use patched tycho-versions-plugin n plu gin:set-versio tyc ho-versions- mvn org.e clipse.tycho: -DnewV ersion=1.0.1
  • 72. Demo Test P2 repo ‣ Add jetty-maven-plugin configuration
  • 73. Demo Test P2 repo ‣ Add jetty-maven-plugin configuration ‣ Run jetty activated by maven profile
  • 74. Demo Test P2 repo ‣ Add jetty-maven-plugin configuration ‣ Run jetty activated by maven profile r -Pr un-p2-serve ho.m ode=maven mv n test -Dtyc
  • 75. Demo Test P2 repo ‣ Add jetty-maven-plugin configuration ‣ Run jetty activated by maven profile r -Pr un-p2-serve ho.m ode=maven mv n test -Dtyc ‣ Test update from previous version
  • 76. Demo Test P2 repo ‣ Add jetty-maven-plugin configuration ‣ Run jetty activated by maven profile r -Pr un-p2-serve ho.m ode=maven mv n test -Dtyc ‣ Test update from previous version ‣ Unzip previous version
  • 77. Demo Test P2 repo ‣ Add jetty-maven-plugin configuration ‣ Run jetty activated by maven profile r -Pr un-p2-serve ho.m ode=maven mv n test -Dtyc ‣ Test update from previous version ‣ Unzip previous version ‣ Start app and perform update
  • 79. Further improvements ‣ Still not mirroring P2 sites ‣ build instability ‣ bad open source citizen ‣ open sourced nexus p2 repository plugin didn‘t work for us
  • 80. Further improvements ‣ Still not mirroring P2 sites ‣ build instability ‣ bad open source citizen ‣ open sourced nexus p2 repository plugin didn‘t work for us and licensed for reuse under this Creative Commons Licence. ‣ Small bug fix requires full product update © Copyright Christine Matthews
  • 81. Q &A
  • 82. Q &A ‣ Thank you for your attention!
  • 83. Q &A ‣ Thank you for your attention!
  • 84. Q &A ‣ Thank you for your attention! hi rin g! We ‘re ro ur nly fo No to m! ET ea ID

Editor's Notes