如何通过Python代码获取Jenkins作业的构建号

4

我正在使用 jenkinsapi 包开发 Python 代码,用于与 Jenkins 进行交互。 我需要一种简单的方法来传递任务名称并获取该任务的最新构建编号。例如:

from jenkinsapi import jenkins
ci_jenkins_url = "job url"
username = None
token = None
job = "Test 3"
j = jenkins.Jenkins(ci_jenkins_url, username=username, password=token)

if __name__ == "__main__":
    j.build_job(job)

这可以成功触发构建,但我需要获取构建编号以便进一步进行。非常感谢您的帮助。
3个回答

5

有两种方法:

方法1: 使用以下API -

从上述URL中,您可以从builds块中获取最新的构建编号。 更多详情请查看http://(jenkins_url):8080/job/(jobname)/api/

方式2:使用jenkinsapi模块

import jenkinsapi
from jenkinsapi.jenkins import Jenkins
server = Jenkins(jenkins_url,username=<<>>,password=<<>>)
print(server.get_job("jobname").get_last_buildnumber())

@down-voter:您能否解释一下为什么您对我的回答进行了负评?这将有助于我改进。 - Harsha Biyani

2

Job对象实现了几种方法,用于获取最后一次构建、最后一次完成的构建、最后一个稳定的构建等的构建号码。

jenkins_server = jenkins.Jenkins(ci_jenkins_url, username=username, password=token)
my_job = jenkins_server.get_job('My Job Name')
last_build = my_job.get_last_buildnumber()

您可以使用Python交互式地探索那些没有完整在线文档的软件包的API。
>>> jenkins_server = jenkins.Jenkins(...)
>>> job = jenkins_server.get_job('My Job Name')
>>> help(job)

非常感谢,它正在工作。 我也尝试了这个..... last_build_number = j.get_job_info('test_api')['lastCompletedBuild'] ['number'],但是出现了Traceback(最近的调用最后): File "/home/trishal/PycharmProjects/python-jenkins/get_build_number.py", line 8, in <module> last_build_number = j.get_job_info('Test 3')['lastCompletedBuild'] ['number'] AttributeError: 'Jenkins'对象没有属性'get_job_info'退出代码为1,不确定我是否正确使用了get_job_info。 - Trishal
@Trishal,Jenkins对象没有_get_job_info_方法。 - Dave Bacher

0
问题已经解决。只需卸载slack-api并安装python-jenkins即可。现在文档中的方法可以正常工作了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接