This buildstep is similar to ShellCommand, except that it captures the output of the command into a property. It is usually used like this:
from buildbot.steps import shell f.addStep(shell.SetProperty(command="uname -a", property="uname"))
This runs uname -a
and captures its stdout, stripped of leading
and trailing whitespace, in the property "uname". To avoid stripping,
add strip=False
. The property
argument can be specified
as a WithProperties
object.
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. The 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.
def glob2list(rc, stdout, stderr): jpgs = [ l.strip() for l in stdout.split('\n') ] return { 'jpgs' : jpgs } f.addStep(SetProperty(command="ls -1 *.jpg", extract_fn=glob2list))
Note that any ordering relationship of the contents of stdout and stderr is lost. For example, given
f.addStep(SetProperty( command="echo output1; echo error >&2; echo output2", extract_fn=my_extract))
Then my_extract
will see stdout="output1\noutput2\n"
and stderr="error\n"
.