Bug 486401 - HIPP for Platform releng
Summary: HIPP for Platform releng
Status: RESOLVED FIXED
Alias: None
Product: Community
Classification: Eclipse Foundation
Component: CI-Jenkins (show other bugs)
Version: unspecified   Edit
Hardware: PC Linux
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: CI Admin Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-01-22 16:34 EST by David Williams CLA
Modified: 2016-02-04 12:50 EST (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description David Williams CLA 2016-01-22 16:34:51 EST
This is a follow up to bug 486366 comment 9. The intent is this is for "Platform releng", with a unique "genie.*" ID specific to platform.releng, and only the eclipse.platform.releng have access. (And, myself to have "admin" access :) 

And the "genie.*" id should be member of "eclipse.platform.releng". 

Thanks,
Comment 1 Mikaël Barbero CLA 2016-01-25 03:14:35 EST
I would to take a step back and think a little bit more how the Eclipse Platform is built and how HIPPs could help.

Currently, we have a single "platform" HIPP which is mostly used to build gerrit reviews for the following projects: platform, pde, jdt, equinox, e4. I call this set of project platform-at-large. There are some sub-projects exceptions, e.g., p2 has its own HIPP.

I understand that having the build of the platform-at-large on a single HIPP or to handle the releng of all these projects from a single entry point makes it easier to manage (e.g., the releng.aggregator git repo). However, I really think we should work toward a more decoupled build and promotion. If we impose constraints on ourself to be able to build all projects independently, it will make the life of our contributors easier.

So I'm really reluctant to create a "eclipse.platform.releng" and make it cross the boundaries of the "Eclipse Platform" project (i.e. give it access to JDT, PDE, ...). It forces us to create a lot of "special rules" for the platform. I reckon that having consistency between all projects (platform and others) will help us to provide better services, more security and make our life easier if we ever need to migrate to another solution. (we should also talk about the "callisto-*" group later ;)).

Thus, instead of creating of platform-releng HIPP, I would propose to start again with the issue you had in bug 486366, and create a HIPP for equinox only, which has only access to equinox related directories? 

(Please, don't read this as me not trying to be flexible, I'm just looking for better solutions.)
Comment 2 David Williams CLA 2016-01-25 04:06:54 EST
Better solutions are great but am still not sure what it is in this case. 

If we had a "equinox" HIPP which for now would be to promote builds from build machine to DL server, the THAT user id would need access to "eclipse.platform.releng" as well as equinox-dev. 

So, that's why I was thinking a third id that was a member of equinox.dev and eclipse.platform.releng would be the most secure and safest. 

FYI, this eclipse.platform.releng id would not need access to PDE or JDT. At least, not for the purposes for which I am requesting it. If/when we did production builds on a HIPP instance, then it might, in order to 'tag' those repositories ... all the more reason to have a special "releng" instance to me. So it would play the role of our current 'e4Build' ID. 

But, fine with me to continue to discuss alternatives.
Comment 3 Mikaël Barbero CLA 2016-01-25 04:39:27 EST
(In reply to David Williams from comment #2)
> Better solutions are great but am still not sure what it is in this case. 
> 
> If we had a "equinox" HIPP which for now would be to promote builds from
> build machine to DL server, the THAT user id would need access to
> "eclipse.platform.releng" as well as equinox-dev. 

"for now" is why I would like to think about where we're going with the build of the platform. If the goal is to move to a Hudson Instance *Per Project*, then we should create one HIPP per Eclipse Project (or sub-projects like for p2). I acknowledge that during the transition time, the HIPP owner will have special permissions.

> So, that's why I was thinking a third id that was a member of equinox.dev
> and eclipse.platform.releng would be the most secure and safest. 

Agreed. I am not thinking about the the most secure and safest way "for now", but how it could be in the mid-term.

> FYI, this eclipse.platform.releng id would not need access to PDE or JDT. At
> least, not for the purposes for which I am requesting it. If/when we did
> production builds on a HIPP instance, then it might, in order to 'tag' those
> repositories ... all the more reason to have a special "releng" instance to
> me. So it would play the role of our current 'e4Build' ID. 

Don't you think that this e4Build (and others cross-projects "releng" IDs) are a bit outdated? IMHO, each project should have its own build/promotion cycle and Eclipse platform projects which have dependencies to the former should consume their build artifacts as any other consumer. E.g., the platform build should consume Equinox the same way as any other project who wants to build an Equinox based project.

> But, fine with me to continue to discuss alternatives.

and I'm willing to help with implementing the alternatives if you find them viable.
Comment 4 David Williams CLA 2016-01-25 09:01:52 EST
(In reply to Mikael Barbero from comment #3)
> Don't you think that this e4Build (and others cross-projects "releng" IDs)
> are a bit outdated? IMHO, each project should have its own build/promotion
> cycle and Eclipse platform projects which have dependencies to the former
> should consume their build artifacts as any other consumer. E.g., the
> platform build should consume Equinox the same way as any other project who
> wants to build an Equinox based project.

No, not outdated yet. That is, we could not do builds the way you are suggesting -- without a lot of work and refactoring. We still have too many "cross-project" dependencies. I think that sort of build is still a minimum of a  year away. Bug 398613 tracks such issues. If not obvious, the reason many of the Gerrit jobs work is that when they have a "cross-project" dependency they use the pre-built dependency from the previous build. We can't do production build like that, obviously. So I think your suggestion is more a long term consideration, not mid-term. 

Given that, I can not think of any other solutions, other than 'status quo' and then someone besides John should get a shell account to "take over" whatever cronjobs he is running.
Comment 5 Mikaël Barbero CLA 2016-01-25 09:15:28 EST
Ok, then let's go with a platform.releng HIPP. I've queued the creation of the HIPP. I will keep you posted when it's ready.
Comment 6 Thomas Watson CLA 2016-01-25 10:09:06 EST
I'm late to the conversation, but in order to make the Equinox build self-contained then we would have to move some components of Equinox back to platform.  For example, the Equinox security bits that depend on Eclipse UI and the p2 bits that have Eclipse UI.  Personally I would not mind if all of p2 went back to the Eclipse project, but I digress :)

Then we would have to move the test harness from the eclipse project to Equinox so that we can remove the cyclic dependencies between Equinox and Eclipse.

That would greatly simplify the Equinox build, but all that needs to be prioritized and agreed upon by Equinox leadership as well as the Eclipse PMC.  I think it could be agreed upon, but the work would not happen in a short time-frame.
Comment 7 Mikaël Barbero CLA 2016-02-01 08:39:35 EST
Sorry for the delay. Your HIPP is now available at https://hudson.eclipse.org/releng/. eclipse.platform.releng committer can log into this HIPP with their email address. 

genie.releng is part of eclipse.platform.releng group so it can write wherever committers of that group can.

I've also made you an admin on this HIPP.

Please reopen if you need more assistance.
Comment 8 David Williams CLA 2016-02-01 12:39:09 EST
Thank you. 

The only other thing needed were changes corresponding to those made in bug 486366. 

That is the 'genie.releng' userid needs to be added to the 'rt.equinox' group. 

And to "undo" the change in bug 486366. That is 'genie.platform' userid needs to be removed from the rt.equinox group (it is too broad). 

= = = = = 

I might need another "sweep" of relevant directories to make sure the group permissions are correct and that those directories have a sticky bit set for 'group', but have not looked yet (plus I am not sure what I can fix myself). 

So if ok with you I will open a new bug for that if I find out it is needed. 
I'll probably start some "conversions" over the next few days -- others may take weeks (or months?). 

= = = = = 

Thanks again
Comment 9 Mikaël Barbero CLA 2016-02-02 04:12:28 EST
(In reply to David Williams from comment #8)
> Thank you. 
> 
> The only other thing needed were changes corresponding to those made in bug
> 486366. 
> 
> That is the 'genie.releng' userid needs to be added to the 'rt.equinox'
> group. 

Done.

> 
> And to "undo" the change in bug 486366. That is 'genie.platform' userid
> needs to be removed from the rt.equinox group (it is too broad). 

Done.

> 
> = = = = = 
> 
> I might need another "sweep" of relevant directories to make sure the group
> permissions are correct and that those directories have a sticky bit set for
> 'group', but have not looked yet (plus I am not sure what I can fix myself). 
> 
> So if ok with you I will open a new bug for that if I find out it is needed. 
> I'll probably start some "conversions" over the next few days -- others may
> take weeks (or months?). 

Sure, no problem. I'm always glad to help.

> Thanks again

You're welcome. I'm always glad to help.
Comment 10 David Williams CLA 2016-02-02 15:04:43 EST
Marking as fixed. 

[Another possible complication is that I have sent John an email to "remove" (or modify) his cron job but have not heard back yet. I will get started on that one "promote" job and see how it goes.] 

Thanks again,
Comment 11 David Williams CLA 2016-02-02 17:13:01 EST
(In reply to David Williams from comment #10)
> 
> [Another possible complication is that I have sent John an email to "remove"
> (or modify) his cron job but have not heard back yet. 

I did hear from John, and he is pretty sure the equinox promote was the only thing in is cron table, so I think safe to remove it. 

You might save a copy, crontab -l before removing it 
crontab -r.
Comment 12 David Williams CLA 2016-02-02 20:34:09 EST
(In reply to David Williams from comment #11)
> (In reply to David Williams from comment #10)
> > 
> > [Another possible complication is that I have sent John an email to "remove"
> > (or modify) his cron job but have not heard back yet. 
> 
> I did hear from John, and he is pretty sure the equinox promote was the only
> thing in is cron table, so I think safe to remove it. 
> 
> You might save a copy, crontab -l before removing it 
> crontab -r.

Oh, and should have mentioned ... John was still working on the "paperwork" or he would have done it himself.
Comment 13 Mikaël Barbero CLA 2016-02-03 04:14:07 EST
I've cleared John's crontab (see bug 486366 comment 17).
Comment 14 David Williams CLA 2016-02-04 11:12:31 EST
I can not seem to access "download server" from this HIPP instance. 

A simple script with "find /home/data/httpd/download.eclipse.org/equinox/drops ..." 

replies with 

find: ‘/home/data/httpd/download.eclipse.org/equinox/drops’: No such file or directory

See the 'fixDLsite' job. 

I've tried both "direct" access, and executing a script in /shared/eclipse/equinox/  with same results.
Comment 15 David Williams CLA 2016-02-04 11:28:23 EST
Similar result when I try to "rsync" a drop there: 

rsync: mkdir "/home/data/httpd/download.eclipse.org/equinox/drops" failed: No such file or directory (2)
rsync error: error in file IO (code 11) at main.c(656) [Receiver=3.1.0]

I assume rsync is trying to "mkdir" because it "thinks" it is not there. 

This was working when using the "genie.platform" userid. (That is, this part of it was working -- I am not suggesting to revert :).
Comment 16 Mikaël Barbero CLA 2016-02-04 11:33:55 EST
/home/data/httpd/download.eclipse.org was not properly mounted on the machine of genie.releng HIPP. This should be ok now.

Matt, I think you should have a look at your mount sanity check for SLES 12. I suspect this issue comes from the reboot from last week.
Comment 17 David Williams CLA 2016-02-04 12:25:05 EST
(In reply to Mikael Barbero from comment #16)
> /home/data/httpd/download.eclipse.org was not properly mounted on the
> machine of genie.releng HIPP. This should be ok now.
> 
> Matt, I think you should have a look at your mount sanity check for SLES 12.
> I suspect this issue comes from the reboot from last week.

Thanks! That worked great. 

On to the next problem. :) 

I could do several "promotes" and several "removes" of old builds, via the HIPP, but there are some directories I could not remove, such as 

M20160127-1000
M20160128-1225

in
/home/data/httpd/download.eclipse.org/equinox/drops

Nor could I even "add" a file to them (via 'touch' -- I was going to try to "hide" them, with a trick we have using "buildHidden" file in the directory) 

but in all cases, to remove them, or 'touch' a file under them, I got permission denied. It seems that those -- and several others -- do not have "group write" bit set. 

I am not sure why. Is this something I need to fix, such "before I 'promote' them (using rsync) to make sure group write is set? Or, just something ?acls? or "sticky bit"? 

Actually, looking closer, it seems the one case that was promoted by "genie.releng" is correct. Perhaps this is just a matter of "fixing" all the earlier ones, with 'root' id? 

such as 

chmod -c -R g+w /home/data/httpd/download.eclipse.org/equinox

(I have intentionally given the "parent" of 'drops' in the example, since there are other directories under 'equinox' that I will probably need to "mess with" someday?) 

Thanks for advise, or fixing. 

And thanks again for the quick 'mount' -- I was worried there for a bit I had misunderstood something! :)
Comment 18 Mikaël Barbero CLA 2016-02-04 12:31:35 EST
It may issue with umask of users previously creating those folder... or something else.

It sounds fait enough to just fix it. I've run your chmod command. Their is no file without the g+w permission in /home/data/httpd/download.eclipse.org/equinox:

build:/home/data/httpd/download.eclipse.org/equinox # find . ! -perm -g+w | wc -l
0

Waiting for the next problem ;)
Comment 19 Mikaël Barbero CLA 2016-02-04 12:40:07 EST
I may have replied too quickly... 

/s/It may issue/It may be an issue/
/s/folder/folders/
/s/their/there/
Comment 20 David Williams CLA 2016-02-04 12:50:23 EST
(In reply to Mikael Barbero from comment #18)

> Waiting for the next problem ;)

Well, no need to wait, you can move on to other things now. 

It is working perfectly. 

Mr. "HIPP release engineer" is happy. :)