[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