Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 399023 - CBI (Maven/Tycho) based build for Orion
Summary: CBI (Maven/Tycho) based build for Orion
Status: RESOLVED FIXED
Alias: None
Product: Orion
Classification: ECD
Component: Releng (show other bugs)
Version: unspecified   Edit
Hardware: PC Mac OS X
: P2 enhancement (vote)
Target Milestone: 3.0 RC2   Edit
Assignee: Szymon Brandys CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on: 408169 408171 409397 410174 410176
Blocks: 410717 410719 410720 410798 410917
  Show dependency tree
 
Reported: 2013-01-24 17:04 EST by Matthias Sohn CLA
Modified: 2013-06-17 09:10 EDT (History)
10 users (show)

See Also:


Attachments
Remove tests patch (1.89 KB, patch)
2013-04-22 10:56 EDT, Thanh Ha CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Matthias Sohn CLA 2013-01-24 17:04:01 EST
We are trying to adapt Orion to run on Virgo, the first obstacle we face is the PDE build which is hard to reproduce on a local developer machine.

Hence we think it would simplify contributing to Orion if its build would be implemented with CBI (Maven/Tycho). This should simplify running reproducible builds both on developer machines and Hudson for continuous integration and release builds.
Comment 2 Andrea Ross CLA 2013-04-02 09:25:06 EDT
Very cool! How are things going on this?
Comment 3 Ken Walker CLA 2013-04-02 10:39:47 EDT
Not well on the Orion side.  However, we will start looking at this now.  We can't  continue to use our existing build infrastructure, it's just not usable by others.
Comment 4 Thanh Ha CLA 2013-04-02 15:36:59 EDT
I rebased Matthias' patch for orion.server against the latest master branch and was able to successfully build after making some modifications in my clone at:

    https://github.com/zxiiro/orion.server/commits/tycho


Specifically I had to add a new requirement org.eclipse.orion.server.npm:
    https://github.com/zxiiro/orion.server/commit/1d0aafb994482ff8a8b36a5e7bf413388d5c2ca1


I'm happy to help where I can to move this bug forward.
Comment 5 Matthias Sohn CLA 2013-04-10 17:39:27 EDT
I am going to rebase my proposal onto current master soon.
Comment 6 Matthias Sohn CLA 2013-04-10 19:52:51 EDT
I rebased onto current master, resolved conflicts and added pom.xmls for the new server bundles, also fixed the license headers for orion.client pom.xml files.

Find the new version here:

https://github.com/msohn/orion.client/tree/tycho
https://github.com/msohn/orion.server/tree/tycho
Comment 7 Szymon Brandys CLA 2013-04-15 11:25:41 EDT
(In reply to comment #6)
I managed to build Orion. When start Orion I get this:

rion\orion.conf
2013-04-15 17:23:02.041 [Start Level Event Dispatcher] INFO  org.eclipse.orion.server.config - No server configuration file found at: C:\home\orions\o
rion\serverworkspace\orion.conf
!SESSION 2013-04-15 17:23:00.646 -----------------------------------------------
eclipse.buildId=@qualifier@
java.fullversion=JRE 1.6.0 IBM J9 2.4 Windows 7 amd64-64 jvmwa6460sr13-20130114_134867 (JIT enabled, AOT enabled)
J9VM - 20130114_134867
JIT  - r9_20130108_31100
GC   - 20121212_AA
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=pl_PL
Command-line arguments:  -os win32 -ws win32 -arch x86_64 -consoleLog -console -data serverworkspace

!ENTRY org.eclipse.equinox.ds 4 0 2013-04-15 17:23:02.821
!MESSAGE Could not bind a reference of component org.eclipse.orion.server.authentication.form. The reference is: Reference[name = GuestUserAdmin, inte
rface = org.eclipse.orion.server.useradmin.IOrionGuestCredentialsService, policy = dynamic, cardinality = 0..1, target = null, bind = setGuestUserAdmi
n, unbind = unsetGuestUserAdmin]

!ENTRY org.eclipse.equinox.ds 4 0 2013-04-15 17:23:02.826
!MESSAGE Could not bind a reference of component org.eclipse.orion.server.authentication.form. The reference is: Reference[name = GuestUserAdmin, inte
rface = org.eclipse.orion.server.useradmin.IOrionGuestCredentialsService, policy = dynamic, cardinality = 0..1, target = null, bind = setGuestUserAdmi
n, unbind = unsetGuestUserAdmin]

!ENTRY org.eclipse.equinox.ds 4 0 2013-04-15 17:23:02.837
!MESSAGE Could not bind a reference of component org.eclipse.orion.server.core.useradmin. The reference is: Reference[name = GuestUserAdmin, interface
 = org.eclipse.orion.server.useradmin.IOrionGuestCredentialsService, policy = dynamic, cardinality = 0..1, target = null, bind = setGuestUserAdmin, un
bind = unsetGuestUserAdmin]

!ENTRY org.eclipse.equinox.ds 4 0 2013-04-15 17:23:02.842
!MESSAGE Could not bind a reference of component org.eclipse.orion.server.core.useradmin. The reference is: Reference[name = GuestUserAdmin, interface
 = org.eclipse.orion.server.useradmin.IOrionGuestCredentialsService, policy = dynamic, cardinality = 0..1, target = null, bind = setGuestUserAdmin, un
bind = unsetGuestUserAdmin]
osgi>

Probably related to latest Mark's changes. When this is fixed, I would like to merge poms to master right after M1.
Comment 8 Szymon Brandys CLA 2013-04-15 11:32:57 EDT
I also get this error when I try to open http://localhost:8080

!ENTRY org.eclipse.equinox.ds 4 0 2013-04-15 17:23:02.842
!MESSAGE Could not bind a reference of component org.eclipse.orion.server.core.useradmin. The reference is: Reference[name = GuestUserAdmin, interface
 = org.eclipse.orion.server.useradmin.IOrionGuestCredentialsService, policy = dynamic, cardinality = 0..1, target = null, bind = setGuestUserAdmin, un
bind = unsetGuestUserAdmin]
osgi> 2013-04-15 17:28:52.372 [qtp438966826-41] WARN  o.e.jetty.servlet.ServletHandler - Error for /index.html
java.lang.AbstractMethodError: org/eclipse/jetty/http/gzip/CompressedResponseWrapper.newCompressedStream(Ljavax/servlet/http/HttpServletRequest;Ljavax
/servlet/http/HttpServletResponse;)Lorg/eclipse/jetty/http/gzip/AbstractCompressedStream;
        at org.eclipse.jetty.http.gzip.CompressedResponseWrapper.getOutputStream(CompressedResponseWrapper.java:393) ~[org.eclipse.jetty.http_8.1.9.v2
0130131.jar:8.1.9.v20130131]
        at org.eclipse.equinox.http.servlet.internal.ResourceServlet$1.run(ResourceServlet.java:111) ~[na:na]
        at java.security.AccessController.doPrivileged(AccessController.java:310) ~[na:na]
        at org.eclipse.equinox.http.servlet.internal.ResourceServlet.writeResource(ResourceServlet.java:60) ~[na:na]
        at org.eclipse.equinox.http.servlet.internal.ResourceServlet.service(ResourceServlet.java:50) ~[na:na]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) ~[javax.servlet_3.0.0.v201112011016.jar:na]
        at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61) ~[na:na]
        at org.eclipse.equinox.http.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:38) ~[na:na]
        at org.eclipse.orion.internal.server.hosting.HostedSiteRequestFilter.doFilter(HostedSiteRequestFilter.java:50) ~[na:na]
        at org.eclipse.equinox.http.registry.internal.FilterManager$FilterWrapper.doFilter(FilterManager.java:173) ~[na:na]
        at org.eclipse.equinox.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:81) ~[na:na]
        at org.eclipse.equinox.http.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:35) ~[na:na]
        at org.eclipse.orion.server.configurator.servlet.WelcomeFileFilter.doFilter(WelcomeFileFilter.java:99) ~[na:na]
        at org.eclipse.equinox.http.registry.internal.FilterManager$FilterWrapper.doFilter(FilterManager.java:173) ~[na:na]
        at org.eclipse.equinox.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:81) ~[na:na]
        at org.eclipse.equinox.http.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:35) ~[na:na]
        at org.eclipse.orion.server.configurator.servlet.CacheFilter.doFilter(CacheFilter.java:73) ~[na:na]
        at org.eclipse.equinox.http.registry.internal.FilterManager$FilterWrapper.doFilter(FilterManager.java:173) ~[na:na]
        at org.eclipse.equinox.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:81) ~[na:na]
        at org.eclipse.equinox.http.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:35) ~[na:na]
        at org.eclipse.orion.server.configurator.servlet.CacheFilter.doFilter(CacheFilter.java:73) ~[na:na]
        at org.eclipse.equinox.http.registry.internal.FilterManager$FilterWrapper.doFilter(FilterManager.java:173) ~[na:na]
        at org.eclipse.equinox.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:81) ~[na:na]
        at org.eclipse.equinox.http.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:35) ~[na:na]
        at org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:77) ~[na:na]
        at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:226) ~[na:na]
        at org.eclipse.orion.server.configurator.servlet.ExcludedExtensionGzipFilter.doFilter(ExcludedExtensionGzipFilter.java:42) ~[na:na]
        at org.eclipse.equinox.http.registry.internal.FilterManager$FilterWrapper.doFilter(FilterManager.java:173) ~[na:na]
        at org.eclipse.equinox.http.servlet.internal.FilterRegistration.doFilter(FilterRegistration.java:81) ~[na:na]
        at org.eclipse.equinox.http.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:35) ~[na:na]
        at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:132) ~[na:na]
        at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:76) ~[na:na]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) ~[javax.servlet_3.0.0.v201112011016.jar:na]
        at org.eclipse.equinox.http.jetty.internal.HttpServerManager$InternalHttpServiceServlet.service(HttpServerManager.java:386) ~[org.eclipse.equi
nox.http.jetty_3.0.100.v20130327-1442.jar:na]
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:669) ~[org.eclipse.jetty.servlet_8.1.9.v20130131.jar:8.1.9.v20130131]
Comment 9 Szymon Brandys CLA 2013-04-15 11:33:40 EDT
(In reply to comment #8)
This is about win32.x86_64 package.
Comment 10 Mark Macdonald CLA 2013-04-15 12:46:32 EDT
I get the service warnings in Comment 7 when I launch Orion normally from the Eclipse IDE or the current builds using orion.exe (see bug 405740). It's unrelated to the Tycho build.
Comment 11 John Arthorne CLA 2013-04-15 13:33:49 EDT
java.lang.AbstractMethodError: org/eclipse/jetty/http/gzip/CompressedResponseWrapper.newCompressedStream(Ljavax/servlet/http/HttpServletRequest;Ljavax
/servlet/http/HttpServletResponse;)Lorg/eclipse/jetty/http/gzip

This one likely *is* a problem with the tycho build. If you check I suspect you have a mix of jetty bundles from different jetty releases? I have seen this error in my workspace. Orion really needs to move up to the latest Jetty as consumed by the platform in Kepler, but this may point to some inconsistency in where the Tycho build is pulling pre-requisites from.
Comment 12 Szymon Brandys CLA 2013-04-16 07:33:52 EDT
(In reply to comment #11)
> This one likely *is* a problem with the tycho build. If you check I suspect
> you have a mix of jetty bundles from different jetty releases?

You are right. I changed the target definition and now it works.
Comment 13 Matthias Sohn CLA 2013-04-16 12:08:02 EDT
I'll look into updating the target platform. 

Also feedback on the client would be helpful as I am not a Javascript expert so I am not sure what might be missing. 

Any hints on how you want to run client side tests (which test framework to use) in the client build ?

Should we run some static code checks like jslint in the client build ?

Another problem I recognized right now is the current split of server and client build. With this version of the patch both client and server need to be built in one build run which is convenient when running the build locally but isn't so easy on Hudson since it assumes a 1-1 mapping of repository to build jobs i.e. it's not so simple to track and fetch 2 repositories in the same Hudson job. Currently the common parent pom.xml is located in the server repository but also is needed by the client build.

I see 2 solutions here:
- 1. solution: define 3 jobs
  - orion.parent job which just builds the parent pom in the server repository
    and deploys it to Nexus
  - orion.client job which builds the client and deploys the results to Nexus. 
    For that we need to add another client reactor pom.xml in order to be able to 
    run a maven build for all client bundles.
  - orion.server job which builds the server, runs the server tests, builds all      
    the features, the p2 repository and the product

- 2. solution: introduce git submodules and 1 build job
  - the super project (requiring another git repository) will just contain the
    parent pom and other global stuff if there is any
  - the build job tracks and fetches the super project's git repository and      
    updates all submodules accordingly and the runs the build for everything
  - disadvantage of this solution is that at least those who are involved in
    changing the build have to learn how to work with submodules

I'd propose we first go for solution 1 and then talk to some other projects using submodules to explore if this approach would be better in the long run.
Comment 14 Szymon Brandys CLA 2013-04-16 12:15:49 EDT
Matthias, please wait till I merge your commit to master. I already updated the target and fixed licenses. When the code is in master, we can add fixes incrementally.
Comment 15 Matthias Sohn CLA 2013-04-16 12:20:50 EDT
for the IP records:
- I am the author 100% of the content of this patch, some of the ideas came
  from Michael Ochmann (also SAP employee) hence some files contain also his
  name in the license header
- SAP owns the copyright of the contributed content
- We have the right to contribute the content to Eclipse.
Comment 16 Szymon Brandys CLA 2013-04-16 12:25:33 EDT
Thanks Matthias. I am waiting when 3.0M1 is announces and then I will merge the commit. It will be likely tomorrow morning (in EU).
Comment 17 John Arthorne CLA 2013-04-16 13:58:25 EDT
(In reply to comment #13)
> Any hints on how you want to run client side tests (which test framework to
> use) in the client build ?

We currently run javascript tests using a framework call jstestdriver:

http://code.google.com/p/js-test-driver/

We already have a separate hudson job for performing these tests that we could probably continue using in some form (orion-jstest-windows). Currently we just have a job for running tests on windows but we could run Linux tests in the same way. We have had a lock of difficulty with stability of the hudson.eclipse.org windows slave so these tests have been failing recently. This test is kicked off remotely by our build so it can't be run independently.

> Should we run some static code checks like jslint in the client build ?

That would be nice to have. We have jslint integration in Orion editor but still errors get through. This isn't the highest priority but it would be cool to have it.

> Another problem I recognized right now is the current split of server and
> client build...

Splitting apart client and server builds sounds reasonable. In reality they are pretty tightly related - if you were building the client to be used separately from the Orion server you likely wouldn't bundle it up as OSGi bundles. However multiple jobs could enable us to do things like run the client or server tests automatically on gerrit checkin independently from each other.
Comment 18 Szymon Brandys CLA 2013-04-17 06:51:35 EDT
I merged client and server changes + made some changes e.g. added license feature.
Comment 19 Matthias Sohn CLA 2013-04-18 18:31:51 EDT
I pushed another 2 patches to github in order to enable separate build of client and server on Hudson:

client change: https://github.com/msohn/orion.client/commit/efcc76f700b0a8fc4439977023b12ca5101d09bd

server change:
https://github.com/msohn/orion.server/commit/6c49d19d0d5cd3f63a3ec6ae1d367524d434b278

as soon as these changes are in I could setup the corresponding Hudson jobs. I propose to name these jobs "orion.client" and "orion.server"
Comment 20 Szymon Brandys CLA 2013-04-22 06:37:16 EDT
(In reply to comment #19)
In comment for the server commit you say that there is no easy way to fetch from many git repos in one Hudson job. I don't know how Hudson and Jenkins are similar, but in Jenkins there is Multiple Scm plug-in that lets you do it.
Comment 21 Szymon Brandys CLA 2013-04-22 06:50:24 EDT
When I run mvn clean install on pom in the server bundle, I get this:

[ERROR] Internal error: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from org.eclipse.j
git 3.0.0.201304220225 to package javaewah 0.5.6.", "Unable to satisfy dependency from org.eclipse.orion.server.tests.feature.feature.group 1.0.0.v20130419-0910
 to org.eclipse.orion.server.tests [1.0.0.v20130419-0910].", "No solution found because the problem is unsatisfiable."] -> [Help 1]
org.apache.maven.InternalErrorException: Internal error: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to sati
sfy dependency from org.eclipse.jgit 3.0.0.201304220225 to package javaewah 0.5.6.", "Unable to satisfy dependency from org.eclipse.orion.server.tests.feature.f
eature.group 1.0.0.v20130419-0910 to org.eclipse.orion.server.tests [1.0.0.v20130419-0910].", "No solution found because the problem is unsatisfiable."]
Comment 22 Thanh Ha CLA 2013-04-22 09:36:22 EDT
(In reply to comment #21)
> When I run mvn clean install on pom in the server bundle, I get this:
> 

This is because the test features are commented out for some reason.

https://git.eclipse.org/c/orion/org.eclipse.orion.server.git/tree/pom.xml#n114

lines 114 and 128 - 129, Uncommenting them allowed me to successfully build.
Comment 23 Szymon Brandys CLA 2013-04-22 10:33:32 EDT
(In reply to comment #22)

You are right. I uncommented them because build was failing when subsequent Jenkins tasks were triggered. The problem was Orion instance started each time and using a port. The next time I got an error that the port is already bound. Any idea how to workaround that or fix?
Comment 24 Thanh Ha CLA 2013-04-22 10:56:31 EDT
Created attachment 229968 [details]
Remove tests patch
Comment 25 Thanh Ha CLA 2013-04-22 10:57:51 EDT
(In reply to comment #23)
> (In reply to comment #22)
> 
> You are right. I uncommented them because build was failing when subsequent
> Jenkins tasks were triggered. The problem was Orion instance started each
> time and using a port. The next time I got an error that the port is already
> bound. Any idea how to workaround that or fix?

I attached a patch in comment #24 which removes the tests requirement from the repository module's category.xml file. This should allow the build to continue without tests that were commented out.
Comment 26 Matthias Sohn CLA 2013-04-22 19:35:14 EDT
(In reply to comment #20)
> (In reply to comment #19)
> In comment for the server commit you say that there is no easy way to fetch
> from many git repos in one Hudson job. I don't know how Hudson and Jenkins
> are similar, but in Jenkins there is Multiple Scm plug-in that lets you do
> it.

I didn't know multiple Scm plugin. I couldn't find a Hudson variant for that, also the Jenkins home page for this plugin says: "This plugin is more of a proof-of-concept than a robust and fully functional component." and I checked hudson.eclipse.org and found that it's not installed there.

Being able to build the Orion client bundles separately also has other advantages, e.g. as soon as the client bundles have been built js tests could be executed and first feedback could be sent back to Gerrit (as soon as we use Gerrit for Orion ;-).
Comment 27 Matthias Sohn CLA 2013-04-22 19:38:06 EDT
(In reply to comment #23)
> (In reply to comment #22)
> 
> You are right. I uncommented them because build was failing when subsequent
> Jenkins tasks were triggered. The problem was Orion instance started each
> time and using a port. The next time I got an error that the port is already
> bound. Any idea how to workaround that or fix?

I'll look into that soon, seems we have to wait until the Orion instance is properly shutdown before starting the next test.
Comment 28 John Arthorne CLA 2013-04-23 08:57:31 EDT
(In reply to comment #27)
> I'll look into that soon, seems we have to wait until the Orion instance is
> properly shutdown before starting the next test.

This is what we do in current Orion js tests on hudson:


for /F "tokens=2" %%I in ('TASKLIST /NH /FI "Imagename eq orion.exe"') do set ORION_PID=%%I
taskkill /f /t /pid %ORION_PID%
taskkill /f /im chrome.exe
tasklist /v
Comment 29 Matthias Sohn CLA 2013-05-13 19:24:15 EDT
(In reply to comment #19)
> I pushed another 2 patches to github in order to enable separate build of
> client and server on Hudson:
> 
> client change:
> https://github.com/msohn/orion.client/commit/
> efcc76f700b0a8fc4439977023b12ca5101d09bd
> 
> server change:
> https://github.com/msohn/orion.server/commit/
> 6c49d19d0d5cd3f63a3ec6ae1d367524d434b278
> 
> as soon as these changes are in I could setup the corresponding Hudson jobs.
> I propose to name these jobs "orion.client" and "orion.server"

I pushed a new version of these 2 commits separating the build of client and server bundles so that they can be built using separate Hudson jobs:

orion.client change:
https://github.com/msohn/orion.client/commit/4ff96053e6de03692363db63568898e6e6ae5c60

orion.server change:
https://github.com/msohn/orion.server/commit/b1d0a0fccd0d3bbeadbd5e6b2bdd2fef1d29533e

In addition I pushed another server change enabling the Orion server tests by using the build-helper-maven-plugin to reserve a free port number for running the tests:
https://github.com/msohn/orion.server/commit/f2885c712c72c9ca638a3d2ded3664d7a879ba1b
Comment 30 Szymon Brandys CLA 2013-05-14 08:42:31 EDT
I released all 3 commits + one minor fix in the server parent pom. I think the next step would be to run minification.
Comment 31 Matthias Sohn CLA 2013-05-14 18:13:19 EDT
(In reply to comment #30)
> I released all 3 commits + one minor fix in the server parent pom. 

I'll setup some Hudson jobs to get a regular Maven CI build up and running.
Any preference for naming these jobs ?

> I think the next step would be to run minification.

Which minifier do you want to use ? It seems the following maven plugin is popular
to be used to minify Javscript, it supports YUI or Google Closure Compiler
http://samaxes.github.io/minify-maven-plugin/

Do you want a build option to skip minification to simplify debugging ?

Regarding static checks for javascript sources: do you use jslint or jshint ?
Comment 32 John Arthorne CLA 2013-05-15 09:03:01 EDT
(In reply to comment #31)
> Which minifier do you want to use ? It seems the following maven plugin is
> popular
> to be used to minify Javscript, it supports YUI or Google Closure Compiler
> http://samaxes.github.io/minify-maven-plugin/
> 
> Do you want a build option to skip minification to simplify debugging ?

We currently use r.js [1], which is a minification tool that is aware of the AMD module syntax we use in Orion. Under the covers it actually uses google closure for the minification. It looks like there is a Maven plugin for it [2] that has had some positive reviews [3]. If you could get an initial hudson job setup, either myself or someone here should be able to help with getting the minification going.


[1] https://github.com/jrburke/r.js/
[2] https://github.com/mcheely/requirejs-maven-plugin
[3] http://pseudobry.com/maven-and-r-js-optimization/
Comment 33 Ken Walker CLA 2013-05-15 09:25:50 EDT
I'm adding our current student to this bug.  He can help out after you get the build added.
Comment 34 Szymon Brandys CLA 2013-05-15 09:34:15 EDT
When we have the job ready, will it publish the artifacts in some public repo?
Comment 35 Matthias Sohn CLA 2013-05-15 09:36:35 EDT
(In reply to comment #34)
> When we have the job ready, will it publish the artifacts in some public
> repo?

I'll configure it to deploy artifacts to Nexus available at http://repo.eclipse.org
Comment 36 Matthias Sohn CLA 2013-05-15 15:53:10 EDT
Bug 408169: requested Nexus repositories for Orion
Comment 37 Matthias Sohn CLA 2013-05-15 16:08:48 EDT
Bug 408171: requested Hudson jobs for Orion
Comment 38 Matthias Sohn CLA 2013-05-15 19:09:19 EDT
I pushed 2 more changes to enable using Nexus:
- orion client: https://github.com/msohn/orion.client/commit/42fd6601609c4b30c241c7dee0a62001875ea81f
- orion server: https://github.com/msohn/orion.server/commit/048efe3a705fa33a02a93a88f3c0d8e32ee0045f
Comment 39 Szymon Brandys CLA 2013-05-16 03:56:37 EDT
(In reply to comment #38)
> I pushed 2 more changes to enable using Nexus:
Both commits merged to master.
Comment 40 Matthias Sohn CLA 2013-05-16 07:20:48 EDT
we've made some progress:
- Hudson jobs created [1]
- client job works and deploys artifacts to Nexus [2]

still some open issues:

The orion-server job can't directly consume the client bundles from Nexus, Tycho can only consume the client bundles from a p2 repository hence the client job needs to creates a p2 repository. 

I propose the following solution:
- we move the client feature and the doc plugins (which are packed into the client feature) to orion.client. If you don't want to move the doc bundles we could put them into a separate feature in orion.server.
- and create a client p2 repo which the server build can then consume via Nexus.

Let me know if this approach is ok.

[1] https://hudson.eclipse.org/hudson/job/orion-client/
    https://hudson.eclipse.org/hudson/job/orion-server/
[2] https://repo.eclipse.org/content/repositories/orion-snapshots/org/eclipse/orion/
Comment 41 Matthias Sohn CLA 2013-05-16 10:37:17 EDT
(In reply to comment #40)
> we've made some progress:
> - Hudson jobs created [1]
> - client job works and deploys artifacts to Nexus [2]
> 
> still some open issues:
> 
> The orion-server job can't directly consume the client bundles from Nexus,
> Tycho can only consume the client bundles from a p2 repository hence the
> client job needs to creates a p2 repository. 
> 
> I propose the following solution:
> - we move the client feature and the doc plugins (which are packed into the
> client feature) to orion.client. If you don't want to move the doc bundles
> we could put them into a separate feature in orion.server.
> - and create a client p2 repo which the server build can then consume via
> Nexus.

This doesn't work as it would break the old PDE build, so I'll create a client
p2 repository without moving any parts from orion.server to orion.client.
We can clean this up later when PDE build isn't needed anymore.
Comment 42 Matthias Sohn CLA 2013-05-16 11:48:52 EDT
(In reply to comment #41)
> This doesn't work as it would break the old PDE build, so I'll create a
> client p2 repository without moving any parts from orion.server to
> orion.client.

I pushed a solution for this to github:
"Bug 399023 - Add a p2 repository for assembling client bundles"
https://github.com/msohn/orion.client/commit/ffa96dc4491f847c232a91bf9b3ff07868dcef27

Two more improvements for orion.server:
"Add test features to p2 repository"
https://github.com/msohn/orion.server/commit/05f4eb60cf14c8f857103a1085b10300fbda7324

"Update Maven build to use Tycho 0.17"
https://github.com/msohn/orion.server/commit/5dcba4a40cd936122f2a0c490c85f3c9969fff7a
Comment 43 Szymon Brandys CLA 2013-05-21 04:17:27 EDT
I merged all three commits to master.
Comment 44 Matthias Sohn CLA 2013-05-21 12:18:41 EDT
We've reached a working hudson build, find the resulting output on Nexus:

---------------------------------------------------
client p2 repository built by orion-client job
https://hudson.eclipse.org/hudson/job/orion-client/
---------------------------------------------------
- zipped: https://repo.eclipse.org/content/groups/orion/org/eclipse/orion/org.eclipse.orion.client.repository/1.0.0-SNAPSHOT/

- unzipped:
https://repo.eclipse.org/content/unzip/snapshots.unzip/org/eclipse/orion/org.eclipse.orion.client.repository/1.0.0-SNAPSHOT/org.eclipse.orion.client.repository-1.0.0-SNAPSHOT.zip-unzip/

---------------------------------------------------
server p2 repository built by orion-server job
https://hudson.eclipse.org/hudson/job/orion-server/ 
---------------------------------------------------
- zipped:
https://repo.eclipse.org/content/groups/orion/org/eclipse/orion/org.eclipse.orion.server.repository/1.0.0-SNAPSHOT/

- unzipped:
https://repo.eclipse.org/content/unzip/snapshots.unzip/org/eclipse/orion/org.eclipse.orion.server.repository/1.0.0-SNAPSHOT/


next steps I'll look into now:
- configure Maven/Hudson to sign build results
- minify js bundles
Comment 45 Szymon Brandys CLA 2013-06-14 06:02:01 EDT
The latest artifacts for orion-server build at Hudson should be good to deploy to orion.eclipse.org.