[Buildbot-devel] dynamically finding the workdir for some build step

Matthew Morse matt at apple.com
Sat Apr 30 04:10:14 UTC 2011


Amber,

WithProperties was exactly what I needed. Took me some time to figure out how to use it, but it boiled down to:

desired_path = "desired_path" # property name
def set_lagos_bookshelf_path(rc, stdout, stderr):
        sc_path = stdout.strip()
        return { desired_path : sc_path }

builder.addStep(
        shell.SetProperty,
        command="<some_command_that_returns_the_path>",
        workdir="some_path",
        extract_fn=set_lagos_bookshelf_path,
   )

builder.addStep(
        shell.ShellCommand,
        command="<some_command>",
        workdir=WithProperties("%s", desired_path),
    )

> Also your SetProperty step needs a property name specified.
> 
I think that with the extract_fn form, I'm not supposed to set the property name:

The more advanced usage allows you to specify a function to extract properties from the command output. Here you can use regular expressions, string interpolation, or whatever you would like. In this form,extract_fn should be passed, and not property. The extract_fn function is called with three arguments: the exit status of the command, its standard output as a string, and its standard error as a string. It should return a dictionary containing all new properties.

 (http://buildbot.net/buildbot/docs/latest/full.html#SetProperty)

Thanks for your help,
- Matt

On Apr 29, 2011, at 7:18 PM PDT, Amber Yust wrote:

> WithProperties. Also your SetProperty step needs a property name specified.
> 
> ~Amber (sent from Droid, please forgive any typos!)
> 
> On Apr 29, 2011 7:09 PM, "Matthew Morse" <matt at apple.com> wrote:
> > Hi,
> > 
> > I haven't been having luck figuring this out, and it seems like it should be easy (so I'm frustrated ;-).
> > 
> > The problem is that I don't know the workdir for some step until runtime (the folder name has a git hash in it that changes).
> > 
> > But, I have a command that will find the proper path for me. So, I want to run that command, get the path, and use it for the next build step. It looks like a SetProperty step is what I want, but how do I pass the property between buildsteps?
> > 
> > 
> > Here's the situation in code:
> > 
> > --------------------------------------------------------------------------------
> > def new_working_dir_path(rc, stdout, stderr):
> > desired_path = stdout.strip()
> > return { "desired_path" : desired_path }
> > 
> > 
> > # Get path for following step
> > builder.addStep(
> > shell.SetProperty,
> > command=some_command_that_prints_desired_path_to_stdout,
> > extract_fn=new_working_dir_path,
> > )
> > 
> > 
> > builder.addStep(
> > shell.ShellCommand,
> > command=some_command_that_needs_to_execute_at_the_desired_path,
> > workdir=<how do I get to the desired_path property?>,
> > )
> > --------------------------------------------------------------------------------
> > 
> > 
> > Thanks,
> > - Matt
> > 
> > 
> > ------------------------------------------------------------------------------
> > WhatsUp Gold - Download Free Network Management Software
> > The most intuitive, comprehensive, and cost-effective network 
> > management toolset available today. Delivers lowest initial 
> > acquisition cost and overall TCO of any competing solution.
> > http://p.sf.net/sfu/whatsupgold-sd
> > _______________________________________________
> > Buildbot-devel mailing list
> > Buildbot-devel at lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/buildbot-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://buildbot.net/pipermail/devel/attachments/20110429/beee55ac/attachment.html>


More information about the devel mailing list