[Buildbot-devel] custom buildstem
mp3 at hello.lv
mp3 at hello.lv
Tue Mar 29 13:44:18 UTC 2011
On Tue, 29 Mar 2011 11:23:06 +0200, Benoît Allard <benoit at aeteurope.nl>
wrote:
> mp3 at hello.lv wrote:
>>> You'll need to implement a new command on the slave, and deploy that
>>> to all of your buildslaves, then call that command from a custom
>>> buildstep on the master.
>>
>>> Dustin
>>
>> How? Could you post a short example?
>>
>
> Actually, you can help yourself with any existing command. They already
> are Python program that run on the slave side. They are mainly meant to
> launch executable on the slave side, but if you replace the
> system.execute (or whatever is used) with your own mechanics, it should
> work fine.
>
> Pick one there for instance as a starting brick.
>
>
https://github.com/djmitche/buildbot/blob/master/slave/buildslave/commands/fs.py
>
> I don't know what you're into, but think of making it generic enough,
> maybe it can be integrated in buildbot and also help others !
>
> Regards
Thanks. I've created a class based on the MakeDirectory template.
class PrepareVxWorks66(base.Command):
"""Copies the VxWorks 6.6 related project files found in vxworks_6.6
folder to its parent folder i.e. one level up. The args dict
contains the
following keys:
- ['dir'] (required): where it should look for vxworks_6.6
directory.
It can be ablosute or relative to Builder directory.
Creates the following status messages:
- {'rc': rc} : when the process has terminated
"""
def start(self):
args = self.args
assert args['dir'] is not None
dstDirname = join(self.builder.basedir, args['dir'])
try:
srcDirname = join(dstDirname, "vxworks_6.6")
for file in get_files_of_patterns(srcDirname, ".*", "*.wpj"):
# remove destination file, if it exists
(_, srcFileName) = os.path.split(file)
try:
dstFile = open(dstDirname, srcFileName)
dstFile.close()
os.remove(dstDirname, srcFileName)
except IOError:
pass
# copy
shutil.copy(file, dstDirname)
# make a destination file writable for user and readable for
all
os.chmod(join(dstDirname, srcFileName),
stat.S_IWUSR | stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH)
self.sendStatus({'rc': 0})
except:
self.sendStatus({'rc': 1})
How do I add a new buildstep of this class?
I have to call
registerSlaveCommand("PrepareVxWorks66", PrepareVxWorks66, "0.1")
from buildmaster, right?
How to add a buildstep to some build factory?
More information about the devel
mailing list