2

I face a weird problem with extremly slow file upload on my windows slave buildbot. For example a file upload of a 60Mb files takes almost 2 minutes whereas the same zip on the same network is only taking a few seconds.

To work around this, I thought about using a good old scp to upload my files under Windows, but I didn't succeed there since I am not able to do a conditional choice of what function to use to upload the file given a property I previously set.

I am trying to do so like this

if(Interpolate("%(prop:osName)s")=='windows'):
    uploadWindows(args)
else:
    upload_file(args)

But I have no success doing that even if the osName property is correctly set.

MisterJ
  • 919
  • 1
  • 9
  • 24

2 Answers2

7

Personnaly I use doStepIf for my conditionnals steps. You just need to add the argument doStepIf=yourfunctionName

def yourfunctionName(step):
    if step.getProperty("buildslave") == "windows":
       return True
    return false

f.addStep(ShellCommand(command=WithProperties("scp"),
                      description=[""],
                      descriptionDone=["do my scp"],
                      doStepIf=yourfunctionName))

In your case you will need 2 steps for the same action.

You should take a look here: http://docs.buildbot.net/latest/manual/cfg-buildsteps.html#buildstep-common-parameters

Hope it could help

Poko
  • 792
  • 2
  • 8
  • 24
1

You need to make sure that the Property has been set in the time that you're trying to access it.

I'm not sure if that's your issue or not, but I was unable to get Interpolate to work at all. I ended up using a renderer function to make sure I could access the Property data.

Check the docs and example here: http://docs.buildbot.net/latest/manual/cfg-properties.html#renderer (note the "props" variable, which gives access to a Property)

Topher
  • 596
  • 4
  • 15