Python-junnkinsはjobを取得して情報方式を構築します。


公式文書
要求:1つのjobが構築を開始したら、その構築状態を取得します。
キー関数:
jobが並んでいるかどうかの結果を取得します。
キューに入れて構築されているjobキューであるpending状態のすべてのjobを取得し、pending状態のjobがない場合は、空のリストに戻ります。
queue.info=server.get_queue.info()
job構築結果を取得する

server.get_build_info(name, build_number)[
      'result'] #      SUCCESS|FAILURE<class 'str'>  ABORTED <class 'str'>    None None <class 'NoneType'>
コードの例:

def get_build_state(server, name, build_number):
  '''

  :param name: job_name
  :param build_number:   1     
  :param:jenkins_server
  :return:   1      pending,success,false,building
  '''
  build_state = None

  #          job    pending      job,     pending   job   1    
  queue_info = server.get_queue_info()

  if queue_info:
    for queue_job_info in queue_info:
      if queue_job_info['task']['name'] == name:
        # msg = 'pending ,     '
        build_state = 'pending'
  else:

    build_state = server.get_build_info(name, build_number)[
      'result'] #      SUCCESS|FAILURE<class 'str'>  ABORTED <class 'str'>    None None <class 'NoneType'>
  return build_state
この機能はインタフェースでカプセル化されます。

@build_bp.route('/gotest/api/getBuildState', methods=['POST'])
def get_job_build_state():
  '''
      job    
    return:build_state Success,Faild,Pending,Building
    '''
  data = request.get_json()
  job_name = data['job_name']

  server = get_jenkins_server()
  #   job       
  lastbuildNumber = server.get_job_info(job_name)['lastBuild']['number']
  #      
  build_state = get_build_state(server, job_name, lastbuildNumber)

  if build_state is None:
    build_msg = 'Building'
  elif build_state == 'SUCCESS':
    build_msg = 'SUCCESS'
  elif build_state == 'FAILURE':
    build_msg = 'FAILURE'
  elif build_state == 'ABORTED':
    build_msg = 'ABORTED'
  elif build_state =='pending':
    build_msg = 'pending'

  response = {}
  datas={}
  response['code'] = 200
  response['msg'] = 'OK'

  datas['build_state'] = build_msg
  datas['buildNumber'] = lastbuildNumber
  response['datas'] = datas

  return response
テストインターフェース:

import requests
url='http://127.0.0.1:5000/gotest/api/getBuildState'
data={'job_name':'android_official'}

r = requests.post(url,json=data)
print(r.text)
応答:
{「code」:200、「datas」:{buildNumber】:1010、「build_」state":"SUCCESS"},"msg":"OK"→"
以上のPython-jeck insはjobを取得して情報の方式を構築します。つまり、小編集は皆さんに提供したすべての内容を共有します。