通过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.在系统设置 ...
随机推荐
- mysql统计表中条目个数的方法举例
说明:以下标红且加大括号的均需要替换为实际待查询的表名或数据库名. [1].统计某张或某几张表的数据量: select count(*) from {TABLE_NAME}; #or select c ...
- wordcloud:让你的词语变成黑云
介绍 对文本中出现频率较高的关键词给予视觉化的显示 使用 import jieba import codecs import wordcloud file = r"C:\Users\Admi ...
- Centos7 下Yum安装OpenLdap
网上的教程一大堆,也没用具体说明版本,所以很多操作方法都不一样,把我踩过的坑记录下来 环境: Centos7 OpenLdap 2.4.44 openldap新版本和老版本的配置方法差别特别大 安装步 ...
- 修改phpMyAdmin 导入MySQL数据库文件大小限制
默认情况下,phpMyAdmin导入MySQL数据库文件大小为2M. 很多朋友对网站进行搬家的时候,网站数据进行导入时会出现一些问题,提示超出导入大小限制. 默认MYSQL只能导入最大2MB的数据,于 ...
- 多线程(二)Object类方法、线程的操作sleep(),join(),interrupt(),yield()
四.Object类简介 Object类是所有类的超类,之所以放在线程部分是因为其方法很多是和线程有关的.比如以下三个: wait()方法.wait(long timeout)和wait(long ti ...
- Linux tcpdump命令详解与Wireshark
简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...
- window下,nodejs安装http-server,并开启HTTP服务器
1.下载nodejs 官方下载地址:https://nodejs.org/en/ 2.在cmd命令中,输入node -v 输入出版本号,代表安装成功. 3.输入 npm install http-s ...
- python基础(while、运算符、编码初始)
------------恢复内容开始------------ <!doctype html> while循环 while循环 循环:不断重复着某件事就是循环 while 关键字 死循环:w ...
- hiho #1066 : 无间道之并查集
#1066 : 无间道之并查集 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 这天天气晴朗.阳光明媚.鸟语花香,空气中弥漫着春天的气息……额,说远了,总之,小Hi和小H ...
- qt5-Qt Creator使用
设置编码: 工具-->选项-->文本编辑器-->行为-->编辑器 中文编译失败的解决: 编辑-->--> 在头文件中增加:--解决乱码问题(文本所在的头文件) #i ...