2013-03-08 88 views
8

的Python 2.7和詹金斯等到詹金斯构建完成

我用Python写一些代码,将执行签入,等待/轮询詹金斯工作完成。我想谈谈我如何实现它。

  1. Python函数创建check-在Perforce->这可以很容易做到的P4具有CLI
  2. Python代码,以检测当一个构建得到触发 - >我改变列表和工号。我如何轮询构建日志的Jenkins API以检查它是否具有适当的更改列表?这一步的输出是一个正在执行这项工作的构建url
  3. 我该如何等待詹金斯的工作完成?

这将是很好,如果有人可以帮助我从詹金斯REST API或蟒蛇詹金斯模块

回答

4

片段可以查询上次编译时间戳来确定是否构建完成。将它与触发构建之前的内容进行比较,看看它何时发生变化。要获得时间戳,请将/lastBuild/buildTimestamp添加到您的作业网址

事实上,在您的Jenkins中,将/lastBuild/api/添加到任何作业中,您将看到很多API信息。它甚至有Python API,但我不熟悉,所以不能帮你进一步

但是,如果您使用的是XML,您可以添加lastBuild/api/xml?depth=0,并且在XML内部,您可以看到带有修订列表的<changeSet>对象/ commit触发构建的消息

+0

如果有其他队列 – 2017-04-19 12:00:59

6

如果您需要知道作业是否完成,那么buildNumber和buildTimestamp是不够的。

这是我如何找出工作是否完整的要点,我在红宝石中使用它,但不是python,所以也许有人可以将它更新为真实代码。

lastBuild = get jenkins/job/myJob/lastBuild/buildNumber 
get jenkins/job/myJob/lastBuild/build?token=gogogo 

currentBuild = get jenkins/job/myJob/lastBuild/buildNumber 
while currentBuild == lastBuild 
    sleep 1 

thisBuild = get jenkins/job/myJob/lastBuild/buildNumber 
buildInfo = get jenkins/job/myJob/[thisBuild]/api/xml?depth=0 

while buildInfo["freeStyleBuild/building"] == true 
    buildInfo = get jenkins/job/myJob/[thisBuild]/api/xml?depth=0 
    sleep 1 

即,我发现我需要A)等到构建开始(新建构建编号)和B)等到建筑物完工(建筑物是假的)。

0

正在经历同样的问题,这对我工作,使用python3python-jenkins

while "".join([d['color'] for d in j.get_jobs() if d['name'] == "job_name"]) == 'blue_anime': 
     print('Job is Running') 
     time.sleep(1) 

print('Job Over!!') 

工作Github的脚本:Link

0

这个片段开始建设工作,等到工作完成了。

开始这项工作很容易,但我们需要某种逻辑来知道工作何时完成。首先,我们需要等待应用作业ID和比我们可以详细查询工作:

from jenkinsapi import jenkins 

server = jenkins.Jenkins(jenkinsurl, username=username, password='******') 
job = server.get_job(j_name) 
prev_id = job.get_last_buildnumber() 
server.build_job(j_name) 
while True: 
    print('Waiting for build to start...') 
    if prev_id != job.get_last_buildnumber(): 
     break 
    time.sleep(3) 
print('Running...') 
last_build = job.get_last_build() 
while last_build.is_running(): 
    time.sleep(1) 
print(str(last_build.get_status())) 
+0

请尽量描述您的解决方案是如何工作的已经建立这会失败,是什么您的解决方案用于解决问题的核心概念 – Murmel 2017-10-31 12:06:59