1、封装了一个jenkins api函数,基本满足操作jenkins
Jenkins_Api.py
# -*- coding:utf-8 -*-
import jenkins
jenkins_server_url = 'https://jenkins.myscrm.cn/' # jenkins地址
user_id = 'username' # 登陆jenkins的用户名
api_token = 'xxxxxxxxxxxx' # 登陆jenkins后,在用户名>设置>API Token,下可以生成一个token
class jenkins_job_build(object):
def __init__(self):
# 初始化jenkins对象,连接远程的jenkins master server
self.server = jenkins.Jenkins(jenkins_server_url, username=user_id, password=api_token)
# 启动任务
def build_jenkins_job(self, job_name,parameters=None):
item_number = self.server.build_job(job_name,parameters=parameters)
return item_number # 返回的是启动任务列队号,不是构建号,下面这个方法才是获取构建编号
# 获取启动任务对应的构建编号
def build_number(self,item_number):
build_info = self.server.get_queue_item(item_number)
build_number =build_info['executable']['number']
return build_number
# 获取jenkins任务最后次构建号
def get_job_lastBuild_number(self, job_name):
lastBuild_number = self.server.get_job_info(job_name)['lastBuild']['number']
return lastBuild_number
# 判断任务是否构建完成,正在构建返回的是True
def job_is_building(self, job_name, build_number):
is_building = self.server.get_build_info(job_name, build_number)['building']
return is_building
# 获取构建完成后的结果
def get_job_build_status(self, job_name, build_number):
job_status = self.server.get_build_info(job_name, build_number)['result']
return job_status
# 获取所有正在构建中的jenkins任务
def get_all_building_jobs(self):
building_jobs = self.server.get_running_builds()
return building_jobs
# 获取所有jenkins任务
def get_all_jobs(self):
jobs = self.server.get_jobs()
return jobs
# 获取jenkins构建时控制台输出的日志
def get_build_job_log(self,job_name,job_number):
return self.server.get_build_console_output(job_name,job_number)
2、使用
from Jenkins_Api import jenkins_job_build
# 实例化jenkins对象
job = jenkins_job_build()
# 启动构建任务,第二个参数是非必填的,看jenkins任务是否需要传
item_numb=job.build_jenkins_job("xxname",{"branchName":"master"})
# 获取构建编号
get_build_number = job.build_number(item_numb)
# 判断任务是否正在构建,如果在构建就等待10秒
while job.job_is_building(image_build_job, build_number) is True:
time.sleep(10)
# 构建完成后,获取构建结果
get_build_status = job.get_job_build_status("xxname",get_build_number)