Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 370010

Summary: Install gerrit-trigger plugin on main hudson and migrate egit/jgit verifier jobs from sandbox hudson
Product: Community Reporter: Matthias Sohn <matthias.sohn>
Component: CI-JenkinsAssignee: Eclipse Webmaster <webmaster>
Status: RESOLVED WONTFIX QA Contact:
Severity: normal    
Priority: P3 CC: daniel_megert, denis.roy, gregory.amerson, gunnar, jan.sievers, jesse.mcconnell, remy.suen, steffen.pingel, tomasz.zarna
Version: unspecified   
Target Milestone: ---   
Hardware: All   
OS: All   
Whiteboard:
Bug Depends on: 375350    
Bug Blocks: 393422    

Description Matthias Sohn CLA 2012-01-27 16:04:40 EST
Please install the gerrit-trigger plugin on main Hudson.
it's running on the sandbox hudson without problems since 
quite some time.

As the canonical Gerrit server [1] is now live probably most
of the projects moving to Gerrit will want to use the 
gerrit-trigger plugin. 

As soon as the plugin is installed please also migrate our
gerrit verification jobs [2] from sandbox hudson to the main
hudson.

[1] https://git.eclipse.org/r/
[2] https://hudson.eclipse.org/sandbox/job/jgit.gerrit/
    https://hudson.eclipse.org/sandbox/job/egit.gerrit/
    https://hudson.eclipse.org/sandbox/job/egit-github.gerrit/
    https://hudson.eclipse.org/sandbox/job/egit-pde.gerrit/
Comment 1 Denis Roy CLA 2012-01-27 16:06:49 EST
+1

I don't think we've seen any issues with the gerrit-trigger pluggin on the sandbox.

Down the road, we may need to create gerrit-specific slaves and tie gerrit builds to them exclusively if we see gerrit is swamping Hudson with builds.  But we'll cross that bridge when we get there.
Comment 2 Matthias Sohn CLA 2012-01-27 16:19:25 EST
Yes, I think it will make sense to have dedicated slaves for the gerrit
verification jobs. Usually they are faster since they typically compile
everything and run the tests but don't package and sign. But there
are many of them as every new change pushed for code review
will trigger another build. But projects will definitively want these
jobs as they are a great way to catch bugs before the changes are
accepted into the master branch.

In order to wire the gerrit-trigger plugin to Gerrit create a Gerrit ssh
batch account [1] install that on Hudson and configure the 
gerrit-trigger plugin according to [2] (have a look at the sandbox 
hudson there it is already configured).

[1] https://git.eclipse.org/r/Documentation/cmd-create-account.html
[2] https://wiki.jenkins-ci.org/display/JENKINS/Gerrit+Trigger
Comment 3 Eclipse Webmaster CLA 2012-02-02 10:50:48 EST
OK I've added the Gerrit trigger, moved the jobs over from the sandbox and restarted things.

Denis setup the user, and the test connection widget returns 'success'.

Can we get verification that it's working as expected?

-M.
Comment 4 Tomasz Zarna CLA 2012-02-02 11:46:29 EST
I've just pushed a new Patch Set to https://git.eclipse.org/r/#/c/5045/ but nothing happens. I even tried adding "Hudson CI" as a reviewer manually, still no luck.
Comment 5 Matthias Sohn CLA 2012-02-02 19:28:05 EST
It seems it kicked of the egit.gerrit job on a new change [1], the build failed as the job looked at the old git URL, I fixed the job configuration and retriggered the build, it's currently waiting for an executor thread.

I updated account 442 to display "Hudson CI" as full name for the batch account which triggered this build. It displayed as "Anonymous Coward" since its "Full name" was null.

I'll close this bug when this works ok.

[1] https://git.eclipse.org/r/#/c/5048/
Comment 6 Matthias Sohn CLA 2012-02-02 19:37:55 EST
The batch user used by Hudson currently does not have the required privileges, it should have the "Label Verified -1..+1" privilege on "refs/heads/*" otherwise it's not able to vote on changes it built. We should have a group "Hudson" and the batch user should be a member of this group and we need to grant this privilege to that group. Do you want me to define such a group or do you want to do that in LDAP ?
Comment 7 Matthias Sohn CLA 2012-02-02 19:39:46 EST
We should grant this privilege on the "All-Projects" Ueber-project to enable Hudson to run verifications and vote accordingly for all projects using Gerrit.
Comment 8 Denis Roy CLA 2012-02-02 21:02:39 EST
Go ahead and create a group in Gerrit and assign the privs to the All-Projects.  I can't foresee needing such a group in LDAP.

Thanks
Comment 9 Matthias Sohn CLA 2012-02-03 09:43:12 EST
I can't save the job configuration when setting the choosing strategy for the git plugin to "Gerrit" since the git plugin version is much too old. This causes the exception [1]. Could you update the git plugin to at least the one used on sandbox hudson ?

[1]
Status Code: 500

Exception: 
Stacktrace:
java.lang.NoClassDefFoundError: org/spearce/jgit/lib/ObjectId
	at java.lang.Class.getDeclaredMethods0(Native Method)
	at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
	at java.lang.Class.getDeclaredMethods(Class.java:1791)
	at com.google.inject.spi.InjectionPoint.getInjectionPoints(InjectionPoint.java:662)
	at com.google.inject.spi.InjectionPoint.forInstanceMethodsAndFields(InjectionPoint.java:356)
	at com.google.inject.spi.InjectionPoint.forInstanceMethodsAndFields(InjectionPoint.java:375)
	at org.hudsonci.inject.injecto.internal.InjectomaticImpl.isInjectable(InjectomaticImpl.java:94)
	at org.hudsonci.inject.injecto.internal.InjectomaticImpl.inject(InjectomaticImpl.java:114)
	at org.hudsonci.inject.injecto.internal.InjectomaticAspectHelper.inject(InjectomaticAspectHelper.java:76)
	at org.hudsonci.inject.injecto.internal.InjectableAspect.ajc$afterReturning$org_hudsonci_inject_injecto_internal_InjectableAspect$1$cc99ea6d(InjectableAspect.aj:43)
	at com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTriggerBuildChooser.(GerritTriggerBuildChooser.java:39)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at org.kohsuke.stapler.RequestImpl.invokeConstructor(RequestImpl.java:419)
	at org.kohsuke.stapler.RequestImpl.access$300(RequestImpl.java:75)
	at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:626)
	at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:372)
	at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:368)
	at hudson.plugins.git.GitSCM$DescriptorImpl.newInstance(GitSCM.java:1104)
	at hudson.plugins.git.GitSCM$DescriptorImpl.newInstance(GitSCM.java:980)
	at hudson.scm.SCMS.parseSCM(SCMS.java:66)
	at hudson.model.AbstractProject.submit(AbstractProject.java:1709)
	at hudson.model.Project.submit(Project.java:191)
	at hudson.model.FreeStyleProject.submit(FreeStyleProject.java:99)
	at hudson.model.Job.doConfigSubmit(Job.java:1009)
	at hudson.model.AbstractProject.doConfigSubmit(AbstractProject.java:668)
Comment 10 Denis Roy CLA 2012-02-03 11:16:34 EST
I've updated the Git plugin to 2.2.0...  Just waiting for jobs to complete to restart.
Comment 11 Matthias Sohn CLA 2012-02-03 11:31:47 EST
(In reply to comment #8)
> Go ahead and create a group in Gerrit and assign the privs to the All-Projects.
>  I can't foresee needing such a group in LDAP.
> 
> Thanks

Added a group "Hudson" and made "Hudson CI" the only member. Granted the Verified Label -1..+1 to this group so that Hudson can vote on changes it ran a verification build for.
Comment 12 Matthias Sohn CLA 2012-02-03 17:31:19 EST
(In reply to comment #10)
> I've updated the Git plugin to 2.2.0...  Just waiting for jobs to complete to
> restart.

I still get the same exception.

I guess you installed the gerrit-trigger plugin from [1]. As this plugin is no longer 
maintained for Hudson this is outdated, this probably causes the error I reported, 
see [2]. Try to install the gerrit-trigger plugin from the Jenkins site (also explained
in [2]) where it is maintained [3]. [4] specifies the plugin versions we used on
sandbox hudson earlier.

The Hudson / Jenkins split is really a mess :-(

[1] http://wiki.hudson-ci.org/display/HUDSON/Gerrit+Trigger
[2] http://issues.hudson-ci.org/browse/HUDSON-9008
[3] https://wiki.jenkins-ci.org/display/JENKINS/Gerrit+Trigger
[4] http://dev.eclipse.org/mhonarc/lists/egit-dev/msg02431.html
Comment 13 Matthias Sohn CLA 2012-02-14 01:35:23 EST
ping - any update here ? 

We really would like to re-enable our verification builds.
Comment 14 Denis Roy CLA 2012-02-14 08:49:27 EST
> ping - any update here ? 

Please be patient...  Since disabling the 'old' Gerrit plugin Hudson has been quite stable.  We are investigating, but we must avoid jeopardizing our Hudson's stability.
Comment 15 Eclipse Webmaster CLA 2012-02-14 08:52:40 EST
The plugin is still installed on the sandbox(and I updated it to point at our Gerrit intance), so I'm willing to copy your jobs to the sandbox and you can run them there until we get this resolved.

If that sounds like a plan just let me know which jobs need to move.

-M.
Comment 16 Steffen Pingel CLA 2012-03-01 12:35:45 EST
Why is it so important that the trigger jobs run on the main server? Considering security wouldn't it be much better to run the trigger jobs on separate infrastructure with separate privileges? AFAIK, trigger jobs need to be specifically configured for Gerrit so most projects will end up with a separate snapshot/release job anyways.
Comment 17 Denis Roy CLA 2012-03-01 13:44:13 EST
> Considering security wouldn't it be much better to run the trigger jobs on
> separate infrastructure

As more and more jobs become trigger jobs, it's definitely in our plans to force them onto separate hardware.
Comment 18 Denis Roy CLA 2012-03-21 13:30:54 EDT
*** Bug 373429 has been marked as a duplicate of this bug. ***
Comment 19 Denis Roy CLA 2013-10-18 16:33:05 EDT
We won't install it on the main Hudson, but we do support it on individual HIPP instances.