首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins构建返回“无”状态

Jenkins构建返回“无”状态
EN

Stack Overflow用户
提问于 2016-01-11 07:48:24
回答 1查看 809关注 0票数 2

我正在尝试使用python的jenkinsapi来自动化一些构建。看起来一切都很好,而且构建成功了。但是,当我通过脚本检查状态以确保构建成功时,我会得到一个None值,而不是预期的“成功”。如果我打开一个新的python并查询相同构建的状态,我将do获取'SUCCESS‘值。

我的代码是:

代码语言:javascript
复制
from jenkinsapi.jenkins import Jenkins
from time import sleep

jk = Jenkins(jenkins_url,user,password)
my_job = jk['my_job']
params = {'param_1': 'value_1', 'param_2': 'value_2',...}
build_num = my_job.get_next_build_number()
print(build_num)    # will print the right number, for example 174
my_job.invoke(build_params=params)
sleep(10)
build = my_job.get_build(build_num)
while build.is_running():
    sleep(3)
sleep(10)
print(build.get_status())   # will print 'None'
if build.get_status() != 'SUCCESS':
    sys.exit('Jenkins build failed')

正如您所看到的,我添加了一些“睡眠”,以确保这不是延迟问题(也尝试了更长的时间)。我也尝试过使用build.block_until_complete()方法,但它似乎什么也不做。

有什么想法,为什么我会得到这种地位,尽管成功的建设?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-15 00:02:39

看起来,状况()是脱机对象的getter,不会自动保持构建对象与服务器的同步,而调用is_running()只同步作业属性的子集。因此,您必须使用build = my_job.get_build(build_num)刷新/获取一个新的构建对象,或者强制轮询现有的构建对象build.poll(),然后使用build.get_status() == jenkinsapi.constants.STATUS_SUCCESS验证状态。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34716465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档