Felix,

But if it's a single source base, for multiple platforms, wouldn't building
and publishing for a single platform be considered not fully tested?

If the developer wants to share his WIP code with another, why wouldn't he
just use a patch instead? [or, build it for the other platforms, test it,
then commit it all so that CI does it's job]

side-note: yeah, you can do the build pipeline similar to Shawn's with
Hudson [and Go, and Bamboo, etc.]

On Wed, Jan 12, 2011 at 11:23 PM, Felix Drueke <fdru...@orga-systems.com>wrote:

> Shawn, thanks for that valuable input.
>
> I assume we're going for a pretty similar procedure.
> We're using Hudson to verify that the build still works on all platforms
> and compilers.
> So I guess it's also possible to have Hudson publish the artifacts right
> away
> (didn't try that yet).
>
> However there's still one reason why I think that artifacts for just one
> platform should be publishable (at least for dev-snapshots).
> That is if a developer wants to publish the results of his latest work
> in his current workspace. In that case he'll just want to publish for
> just one platform and that's sufficient in that situation.
>
> Felix
>
>
> Shawn Castrianni wrote, on 01/12/2011 05:19 PM:
>
>  I can't answer your question, but I can tell you how I handle this.
>>
>> I felt it was a bad idea to publish a partial module such that one
>> platform's artifacts are present and other are not.  If this happens because
>> of a compiler error on one platform but not others, then you can get into a
>> bad situation.  Such as, someone saying that my new feature works on linux
>> but not on windows, not knowing that it works on linux because the new
>> feature was compiled successfully on that platform and he is using the new
>> published module.  But when he tries on windows, he is picking up on old
>> published module since a new one with windows artifacts is not present due
>> to the compile error.  Stuff like that.
>>
>> Therefore, what I do is just as you describe, using separate configuration
>> for each platform.  But then I use a good automated build system (QuickBuild
>> 3.1) to wrap ivy commands.  So my QB build workflow is:
>>
>> 0. randomly select a master build machine from the pool, let's call it
>> MASTER
>> 1. MASTER:  checkout source on any machine
>> 2. MASTER:  tar up source
>> 3. MASTER:  copy source to other platform build machines
>> 4. EACH PLATFORM:  untar onto each of those machines
>> 5. MASTER:  delete tar file
>> 6. MASTER:  clean.all
>> 7. MASTER:  ivy dependencies (specifying proper conf setting so that All
>> platforms dependency artifacts are downloaded)
>> 8. MASTER:  perform java compile
>> 9. MASTER:  copy dependencies and resulting jars from java compile to
>> other platform build machines
>> 10: EACH PLATFORM:  perform native code build
>> 11: EACH PLATFORM:  perform unit testing
>> 12: EACH PLATFORM:  copy resulting artifacts from each platform machine to
>> master machine
>> 13: MASTER:  publish all platform artifacts at once
>>
>> By using a good automated build system, you can easily handle this multi
>> platform build workflow and the hand off of control from one node to
>> another.  Then the publishing ONLY happens if ALL platforms are successful.
>>  Therefore, I do not need the ability to publish a partial module.
>>
>> I am sure there are other ways to do this and there is probably debate as
>> to how efficient this is, but it works very well in a production
>> environment.  If this sounds like an advertisement for QuickBuild, I
>> apologize.  I do not work for them.  I am just a passionate happy customer.
>>
>> ---
>> Shawn Castrianni
>>
>> -----Original Message-----
>> From: Felix Drueke [mailto:fdru...@orga-systems.com]
>> Sent: Wednesday, January 12, 2011 4:59 AM
>> To: ivy-user@ant.apache.org
>> Subject: Publishing C-module artifacts from different platforms
>>
>> Hi,
>>
>> I'd like to manage the dependencies of a set of C-modules with ivy.
>> Each of these modules needs to be compiled on different platforms (i.e.
>> Solaris, Linux, HP-UX and others).
>>
>> This requires that the same sources are compiled in separate workspaces
>> (on the different hosts).
>>
>> In a first attempt I setup one ivy.xml with a set of configurations - one
>> for
>> each platform on that I have to build&publish artifacts.
>>
>> Being unexperienced with Ivy I didnd't find a way to just publish the
>> artifact for the one configuration that I built in a workspace.
>> For example I built module XYZ on Solaris and of course I can only
>> publish the Solaris-artifact from that workspace. In another worlspace
>> I got the artifact for Linux and of course I can only publish that.
>>
>> How do you accomplish to publish just the artifacts for one particular
>> configuration?
>>
>> Thanks for any hint,
>> Felix
>>
>> The information included in this e-mail and any files transmitted with it
>> is strictly confidential and may be privileged or otherwise protected from
>> disclosure. If you are not the intended recipient, please notify the sender
>> immediately by e-mail and delete this e-mail as well as any attachment from
>> your system. If you are not the intended recipient you are not authorized to
>> use and/or copy this message and/or attachment and/or disclose the contents
>> to any other person.
>>
>> ----------------------------------------------------------------------
>> This e-mail, including any attached files, may contain confidential and
>> privileged information for the sole use of the intended recipient.  Any
>> review, use, distribution, or disclosure by others is strictly prohibited.
>>  If you are not the intended recipient (or authorized to receive information
>> for the intended recipient), please contact the sender by reply e-mail and
>> delete all copies of this message.
>>
>>
> The information included in this e-mail and any files transmitted with it
> is strictly confidential and may be privileged or otherwise protected from
> disclosure. If you are not the intended recipient, please notify the sender
> immediately by e-mail and delete this e-mail as well as any attachment from
> your system. If you are not the intended recipient you are not authorized to
> use and/or copy this message and/or attachment and/or disclose the contents
> to any other person.
>

Reply via email to