[Buildbot-devel] Buildbot workdir issues

Brian Warner warner-buildbot at lothar.com
Tue Apr 17 07:24:14 UTC 2007


Simon Fraser <smfr at mac.com> writes:

> myBuildFactory = factory.BuildFactory()
> myBuildFactory.addStep(step.ShellCommand, command=["/usr/local/ 
> buildbot/svn_bless"])
> myBuildFactory.addStep(step.SVN, mode='update', svnurl='https://svnrepo.example.com/svn/root/')
> myBuildFactory.addStep(step.Compile, command="make")

> The problem is that the svn step starts by blowing away the 'build'
> dir (i.e. the workdir):
>
> starting svn operation
> rm -rf /usr/local/buildbot/foopy/full/build
>
> so if that svn operation fails, I'm left without a workdir.

Hm. One quick answer I'd throw out is to add an explicit 'mkdir' step. But
that makes me wonder how you get this thing bootstrapped, if you have to have
a valid SVN working directory before you can run svn_bless?

I'm also tempted to recommend using mode='copy', in the hopes that it would
keep your SVN working directory around from one build to the next, and reduce
the need to get credentials cached a lot. But the same bootstrap problems
exists.

If it were easy to replace the copy of 'svn' you're running (like, if
step.SVN took an svnbin= argument), then you could point it at a separate
script which added the username/password arguments without showing what they
were to stdout (and thus into the logs). But we don't. A really gross hack
would be to run that buildslave with a special PATH that made it see a
completely different 'svn' than everyone else, inside which you could add
those arguments.

> Is there some way to ensure that the workdir is created before any  
> steps run?

Apart from an explicit 'mkdir' ShellCommand, no, not really. It's kind of
optimized for the VC-checkout-creates-workdir model.


cheers,
 -Brian




More information about the devel mailing list