通过jenkins-Python在后台操作Jenkins构建job
最近要开发1个接口,接收到1个指令后自动触发自动化测试,虽然也可以通过shell命令做这一步,但因为目前所有构建自动化的的动作都通过jenkins完成,所以想要尝试能不能用python去控制jenkins构建job。还真有!万能的python。想起来一句话,有趣的事,python永远不会缺席!
通过jenkins-python实现在后台操作jenkins构建job,只需要5步,并且前面4步都是简单的配置,用python代码实现操作也只有不到20行代码,很简单
step1:在jenkins中创建1个测试job
step2:查看Jenkins的User Id,并记录下来,等下配置python脚本时需要用到
step3:jenkins生成api-token,记录token至1个文档中,后面要用到
点击【保存】
step4:安装python-jenkins库
命令行安装
sudo pip install python-jenkins
pythonCharm安装:
当前使用的python-jenkins版本是1.5.0
接下来通过python脚本尝试构建一个jenkins项目
代码示例:
通过这个小示例,感觉用python-jenkins还是可以非常方便在的在后台操作jenkins的。
#导入依赖
import jenkins #定义远程的jenkins master server 的url,以及port
jenkins_server_url = 'http://10.1.71.51:8080/jenkins' #定义用户的Userid 和 api token
user_id = 'admin'
api_token = '11a7a8151dbde5173fa19b346ad46b5efe' #实例化jenkins对象,连接远程的jenkins master server
server = jenkins.Jenkins(jenkins_server_url,username=user_id,password=api_token)
#打印一下server查是否连接成功
# print(server) #返回一个jenkins对象<jenkins.Jenkins object at 0x10807d190> # 构建job名为testJob的job(不带构建参数)
# server.build_job('testJob') #查看某个job的构建信息
job_info=server.get_job_info('testJob')
# print(job_info) #获取job名为testJob的job的最后次构建号
lastbuildNumber=server.get_job_info('testJob')['lastBuild']['number'] #获取job名为testJob的job的最后1次构建的执行结果状态
result =server.get_build_info('testJob',lastbuildNumber)['result'] #判断testJob是否还在构建中
status = server.get_build_info('testJob',lastbuildNumber)['building']
print(status)
我们可以打印job_info可以一下会看到什么信息:
可以很明显看出来,get_job_info('job_name')返回的是整个job的构建信息
job_info=server.get_job_info('testJob')
{
'_class': 'hudson.model.FreeStyleProject',
'actions': [
{ },
{ },
{ },
{
'_class': 'com.cloudbees.plugins.credentials.ViewCredentialsAction'
}
],
'description': '',
'displayName': 'testJob',
'displayNameOrNull': None,
'fullDisplayName': 'testJob',
'fullName': 'testJob',
'name': 'testJob',
'url': 'http: //10.1.71.51/jenkins/job/testJob/',
'buildable': True,
'builds': [
{
'_class': 'hudson.model.FreeStyleBuild',
'number': 25,
'url': 'http: //10.1.71.51/jenkins/job/testJob/25/'
},
{
'_class': 'hudson.model.FreeStyleBuild',
'number': 24,
'url': 'http: //10.1.71.51/jenkins/job/testJob/24/'
},
{
'_class': 'hudson.model.FreeStyleBuild',
'number': 23,
'url': 'http: //10.1.71.51/jenkins/job/testJob/23/'
}
],
'color': 'blue',
'firstBuild': {
'_class': 'hudson.model.FreeStyleBuild',
'number': 1,
'url': 'http: //10.1.71.51/jenkins/job/testJob/1/'
},
'healthReport': [
{
'description': 'Buildstability: Norecentbuildsfailed.',
'iconClassName': 'icon-health-80plus',
'iconUrl': 'health-80plus.png',
'score': 100
}
],
'inQueue': True,
'keepDependencies': False,
'lastBuild': {
'_class': 'hudson.model.FreeStyleBuild',
'number': 25,
'url': 'http: //10.1.71.51/jenkins/job/testJob/25/'
},
'lastCompletedBuild': {
'_class': 'hudson.model.FreeStyleBuild',
'number': 25,
'url': 'http: //10.1.71.51/jenkins/job/testJob/25/'
},
'lastFailedBuild': {
'_class': 'hudson.model.FreeStyleBuild',
'number': 7,
'url': 'http: //10.1.71.51/jenkins/job/testJob/7/'
},
'lastStableBuild': {
'_class': 'hudson.model.FreeStyleBuild',
'number': 25,
'url': 'http: //10.1.71.51/jenkins/job/testJob/25/'
},
'lastSuccessfulBuild': {
'_class': 'hudson.model.FreeStyleBuild',
'number': 25,
'url': 'http: //10.1.71.51/jenkins/job/testJob/25/'
},
'lastUnstableBuild': None,
'lastUnsuccessfulBuild': {
'_class': 'hudson.model.FreeStyleBuild',
'number': 7,
'url': 'http: //10.1.71.51/jenkins/job/testJob/7/'
},
'nextBuildNumber': 26,
'property': [ ],
'queueItem': {
'_class': 'hudson.model.Queue$WaitingItem',
'blocked': False,
'buildable': False,
'id': 55,
'inQueueSince': 1567674112446,
'params': '',
'stuck': False,
'task': {
'_class': 'hudson.model.FreeStyleProject',
'name': 'testJob',
'url': 'http: //10.1.71.51/jenkins/job/testJob/'
},
'url': 'queue/item/55/',
'why': 'Inthequietperiod.Expiresin4.9秒',
'timestamp': 1567674117446
},
'concurrentBuild': False,
'downstreamProjects': [ ],
'labelExpression': None,
'scm': {
'_class': 'hudson.scm.NullSCM'
},
'upstreamProjects': [ ]
}
参考文档:
Python-Jenkins API使用 —— 在后端代码中操控Jenkins
通过jenkins-Python在后台操作Jenkins构建job的更多相关文章
- python 操作jenkins 常用api
Python-Jenkins 继续寻找,然后我在Jenkins官网上找到了Python-Jenkins API,仔细阅读后发现,它几乎涵盖了大部分Jenkins的操作,大大方便了我们在后台进行对Jen ...
- 初次尝试使用jenkins+python+appium构建自动化测试
初次尝试使用jenkins+python+appium构建自动化测试 因为刚刚尝试使用jenkins+python+appium尝试,只是一个Demo需要很多完善,先记录一下今天的成果,再接再厉 第一 ...
- python操作jenkins、python-jenkins api
Jenkins作为最流行的自动化流程的核心工具,我们使用它自带的web-ui完全可以满足日常的构建及发布工作,但是如果需要和其他系统做集成就必须二次开发或者通过API方式进行交互了. Jenkins介 ...
- Jenkins+github的一次定时构建示例
首先说明,我的电脑环境是windows,所以以下的示例是基于windows10 X64. 一.新建任务,填写名称,选择类型,点击左下角的[确定] 二.配置 1.General 2.源码管理 之前在gi ...
- linux+jenkins+python+svn 自动化测试集成之路
本文背景: 背景1---个人基础: 本机win7上安装pycharm,使用python搭建API自动化测试框架,本地运行Pass.本机上搭建jenkins,创建测试任务,定时构建Pass. 背景2-- ...
- Python+Pytest+Allure+Git+Jenkins接口自动化框架
Python+Pytest+Allure+Git+Jenkins接口自动化框架 一.接口基础 接口测试是对系统和组件之间的接口进行测试,主要是效验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系. ...
- 利用 Java 操作 Jenkins API 实现对 Jenkins 的控制详解
本文转载自利用 Java 操作 Jenkins API 实现对 Jenkins 的控制详解 导语 由于最近工作需要利用 Jenkins 远程 API 操作 Jenkins 来完成一些列操作,就抽空研究 ...
- Jenkins+Python自动化测试持续集成详细教程
Jenkins是一个开源的软件项目,是基于java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.由于是基于java开发因此它也依赖jav ...
- 使用 svn+maven+jenkins(hudson)+Publish Over SSH plugins 构建持续集成及自动远程发布体系(转)
1.安装jenkins 2.浏览器访问jenkins主页 http://192.168.0.1:8080/,点击“系统管理” 3.在插件管理中,安装Publish Over SSH插件 4.在系统设置 ...
随机推荐
- python将str类型的数据变成datetime时间类型数据
如下: import datetime date_str = '2019_05_09' date_date = datetime.date(*map(int, date_str.split('_')) ...
- 团队作业-Beta冲刺(周四)
一. 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/ 这个作业要求在哪里 https://edu.c ...
- 牛客练习赛46 A 华华教奕奕写几何 (简单数学)
链接:https://ac.nowcoder.com/acm/contest/894/A 来源:牛客网 华华教奕奕写几何 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K ...
- fedora29 下一款截图工具shutter的安装和调试
运行命令安装shutter sudo yum install shutter 如果使用过程中出现花屏 sudo vim /etc/gdm/custom.conf 把 #WaylandEnabled=f ...
- Python 异常处理Ⅲ
使用except而不带任何异常类型 你可以不带任何异常类型使用except,如下实例: 以上方式try-except语句捕获所有发生的异常.但这不是一个很好的方式,我们不能通过该程序识别出具体的异常信 ...
- 19.tcp_upd
# socket编程 # 01010 ethernet(你在教室的那个位置)mark ip(教室在哪,主机)子网 tcp,udp(端口)应用程序在哪 # 物理层---->数据链路层------- ...
- Idea 设置maven配置文件settings.xml的位置
1.[File] > [Other Settings] > [Default Settings] 2.设置 settings.xml 配置 本博文来源于:https://blog.csd ...
- Qt:The CDB Process Terminated!调试失败
一般是找不到DLL库导致的CDB终止.
- python起步--windows系统下安装python解释器和PyCharm
参考教程: 1)https://www.runoob.com/w3cnote/pycharm-windows-install.html 2)https://blog.csdn.net/c_shell_ ...
- Eclipse 开发环境修改及MAVEN配置
Eclipse集成Maven配置 默认为 修改为所用版本 选择maven软件所在目录 勾选 默认连接仓库为 修改为