检查“buildbot sendchange”命令发送的构建请求的状态

时间:2016-02-02 05:53:10

标签: buildbot

我有一个案例,我可以使用sendchange命令成功触发buildbot中的构建。虽然这有效,但我无法找到命令来检查sendchange触发的构建是否已完成。

有没有办法在buildbot中实现这个目标?

谢谢!

1 个答案:

答案 0 :(得分:0)

由于buildbot是异步的,因此您需要轮询构建器以查找与您的sendchange匹配的构建,然后轮询该构建以获取构建状态。使用例如python,它使用请求(https://pypi.python.org/pypi/requests)检索构建的json并从命令行检查状态是相当简单的。

" API"在这种情况下,使用requests.get(url).json()并遍历buildbot构建以查找您的更改请求。 buildbot json记录在" REST API"文档的一部分(http://docs.buildbot.net/latest/developer/rest.html),您必须找出如何存储变更请求。

以下是一些可以帮助您入门的代码:

import pprint, requests

def get_url_base(serv,port):
    return 'http://%(serv)s:%(port)d' % locals()

def get_bldr_json(serv,port,bldr):
    url = 'http://%(serv)s:%(port)d/json/builders/%(bldr)s' % locals()
    print "get_bldr_json: %s ..." % url
    jdata = requests.get(url).json()
    print "DEBUG: get_bldr_json:", pprint.pformat(jdata)
    return jdata

def get_bld_json(serv,port,bldr,bnum):
    url = 'http://%(serv)s:%(port)d/json/builders/%(bldr)s/builds/%(bnum)s' % locals()
    print "get_bld_json: %s ..." % url
    jdata = requests.get(url).json()
    print "DEBUG: get_bld_json:", pprint.pformat(jdata)
    return jdata

# you'll have to set these values for your buildbot
serv, port, bldr = ('hexbotserver', 8010, 'buildername')

jdata = get_bldr_json(serv,port,bldr)

for bnum in jdata['cachedBuilds']:
    jdata = get_bld_json(serv,port,bldr,bnum)
    print "build properties:"
    pprint.pprint(dict(jdata)['properties'])