Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[buckminster-dev] Re: Tutorial for building an RCP from hudson

Johannes,

I totally agree that the best strategy for integration builds is to have the 
CI server checkout/update the source. Buckminster can populate the workspace 
using a local resolver. This is much faster than having Buckminster perform 
the checkout.

Having said that, I see the point in the example showing SVN checkout 
instead of local resolution. Maybe we can have _both_ resolvers in the RMAP 
and select the appropriate one using a resolutionFilter? It would default to 
SVN checkout, but in the presence of a "integrationBuild" property, the RMAP 
could then select the local resolver.

I'd like to bring up another point for a _really_ comprehensive example: 
target platform. I am a strong proponent for defining a target platform up 
front that everybody, i.e. all developers and the integration build, compile 
against. So the first step in a build process would be to populate the 
target platform. We're currently using Buckminster to do this, although I 
really like PDE's new target platform story. At the moment, though, it can 
only deal with exact bundle versions, which is not really what I want. A 
combination of Buckminster and PDE would be great. Maybe we can hook 
Buckminster into PDE as a target platform source. I'll investigate that...

Cheers,
 Achim


Johannes Utzig wrote:

> Hi Thomas,
> 
> comments inline as well
> 
> Thomas Hallgren schrieb:
>> Hi Johannes,
>> Comments inline...
>> 
>> Johannes Utzig wrote:
>>> !MESSAGE Missing requirement: Equinox Provisioning Engine
>>> 1.0.100.v20090525 (org.eclipse.equinox.p2.engine 1.0.100.v20090525)
>>> requires 'package org.eclipse.equinox.internal.p2.persistence 0.0.0'
>>> but it could not be found
>>>
>> This sounds like a regression of some kind. It used to work but it's
>> been a while since anyone tried it.
>> 
> I see :)
> 
>>> First of all, do you think a tutorial like that would make sense in
>>> the wiki?
>> Yes, absolutely. I think it's great that you do this. We are in a bad
>> shape when it comes to examples and tutorials so a contribution like
>> that is very valuable and appreciated.
>> 
> I'm glad you like the idea
>>> And if so, do you agree with the way I'm building things, or should I
>>> change something for the wiki page?
>>>
>> I agree that the sample should have an RMAP of its own but I'm not too
>> keen about using an approach where Hudson populates the workspace. By
>> doing that, you bypass the whole resolution/materialization piece in
>> Buckminster. Not so good if the purpose is to use it all as an example.
>> It would also impede future examples of more advanced features such as
>> CQUERY based branch/tag selection.
> 
> I don't think it's really bypassing. Materialization takes still place
> (kinda :) )since there is no workspace, just checked out modules.
> Resolution also takes place, just a simplified version with only two
> possible location: filesystem or target platform (other would be
> possible as well if you want for example some maven artifacts from your
> company's repository).
> The simple file-system resolution makes a lot of things easier for
> Hudson in my opinion:
> -you do not need to configure VCS credentials since this is done
> globally (by the administrator) in the hudson config
> -you get the change log on every build
> -the logs can be used to do advanced automated stuff like blaming test
> failures, updating bugzilla, report and changelog generation...
> -workspaces do not usually get deleted in hudson before/after a build
> and I'm not even sure if buckminster can do a cvs/svn update, or if you
> always have to do a full checkout (which is way slower). If it can, the
> only way to achieve this would be to maintain an additional mspec, or is
> there another way?
> 
> But I definetly do get your point, for an example it would make sense to
>   demonstrate the buckminster capabilities, I'm just not so sure if it
> really is the best, or rather, easiest approach in a CI server.
> 
>> 
>> Would it be possible to make Hudson understand that it should use
>> Buckminster as the check-out tool? Or perhaps we could make Hudson use
>> the information that it finds in a BOM file (the intermediate file that
>> Buckminster creates when it runs the resolver) to do the check-out?
>> 
> That actually sounds very interesting. I can't answer that just now, but
> I will think about how that could be done.
> However, if for example the buckminster hudson plugin would also
> register itself as as SCM plugin there's still the question I asked
> above: can buckminster currently do svn, cvs, perforce,... updates, or
> only checkout? Can the commit comments be retrieved? Can it be done
> without an additional mspec?
> Without commit logs, updates in favor of full check-outs and globally
> configured credientials, I doubt that many hudson users would do the
> check out with buckminster.
> But I definetly like the idea, and if you think that there is a way to
> preserve those features, then I'd be in.
> 
> About the later (using the bom to check-out) I'm not completly sure, but
> I don't think it will work because SCM plugins always run before build
> plugins run and all the check-out/update stuff is not done by the hudson
> core, but specific plugins depending on the SCM in use. I'll have a look
> but I don't think it could currently be done without changing a lot of
> hudson code for this very special use-case.
> 
> 
>>> To make the example really useful for people, the mail app would need
>>> to be buildable and I'd need the extra files available in SVN (see
>>> attached  patch). Would you be willing to apply the patch and
>>> eventually host the new cquery that points to the simplified
>>> local-resolution rmap (I'll deliver both if you are ok with my general
>>> approach) so that they will be available for public?
>>>
>> Yes, we'd be willing to do that. I think you should open a bugzilla
>> where you can paste a copy of this discussion and then attach patches.
>> The reason for that is that Eclipse.org cannot accept patches unless
>> they come as proper bugzilla attachments. An accepted patch also means
>> that your name is added to the contributor list of our IP-log.
>> 
>> Regards,
>> Thomas Hallgren
> 
> Ok, done. See https://bugs.eclipse.org/bugs/show_bug.cgi?id=281503
> I hope it is ok like that...
> 
> 
> Best regards,
> Johannes




Back to the top