[Buildbot-devel] slave os.environ['HOME']

Ryan Raasch ryan.raasch at gmail.com
Thu Jun 25 18:52:22 UTC 2009


Thanks for the feedback.

What i thought to do would be to have a build slave for each platform 
(wince,winxp,and linux) using mingw32, mingw32ce and gcc. The trick was 
all slaves on the same slave machine.

And since each use the same code base, but generate, compile different 
stuff, it is more logic to build each out of tree with the common svn repos.

HOWEVER :)

After reflection (thanks), i guess it is easier to have one build slave 
with the ALL the various steps.

Summary:
	updateSVN(workdir='trunk')
	buildWith_mingw32
	buildWith_mingwce
	buildWith_gcc

And within each step, the working dir will be the slave's base dir + the 
target.

Thanks again.
Ryan

Dustin J. Mitchell wrote:
> On Thu, Jun 25, 2009 at 9:14 AM, Ryan Raasch<ryan.raasch at gmail.com> wrote:
>> To do this, though, i need to find the HOME directory on the slave. I am
>> not that great with python (like it a lot, but moreless newbie).
> 
> Maybe you could back up a bit and think about why you need this?  I
> don't really understand your description.  Do you just need to find a
> common place from which to access the source code, without copying it
> into each build dir?
> 
> The problem is that, when the master.cfg is parsed, the slaves aren't
> connected yet.  So there's absolutely no way to get a value from the
> slaves into a local variable.
> 
> You're right that SVN doesn't accept properties, because it is
> intended to run as the first step.
> 
> If my guess is correct, then you don't want to use the SVN step in
> your builders (because you don't want to do a checkout for each
> builder).  Instead, you'll need to find some way to atomically update
> your common repository (or a shell command that uses some kind of
> locking to prevent simultaneous updates?) on each buildslave.  If you
> can, just make that common repository appear in the same place on
> every slave.  Otherwise, since you're using a shell script to update
> the repo, just use $HOME in that shell script.  Then each buildfactory
> starts with this "update-the-common-repo" step, probably followed by
> an 'rm -rf foo; mkdir foo' to clean out the build directory, followed
> by the regular steps for your build.
> 
> Dustin
> 





More information about the devel mailing list