通过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.在系统设置 ...
随机推荐
- C语言的unsigned做双目运算符的奇怪问题
首先看代码: #include <stdio.h> void main() { ; unsigned ; ) { printf("%d-%d=%d,大于0", num1 ...
- centos 7 搭建 LNMP ( Linux+Nginx+MySQL+PHP )
操作系统 | CentOS Linux release 7.6.1810 (Core) [root@localhost ~# cat /etc/redhat-release CentOS Linux ...
- windows删除已注册服务
背景:近日,想要学习mysql主从复制,于是想在本地用多个mysql实例进行试验,试验的过程中总是挫折不断,生手不易,安装了很多实例,测试完成之后,想要删除这些实例. 虽然任务管理器可以停止任务,但是 ...
- zencart网站上线前,邮件模板默认网址修改
涉及到的文件 includes\languages\语言包\模板\email_extras.php 后台\includes\languages\语言包\email_extras.php 后台\incl ...
- VMware Tools按钮变灰色,无法安装的解决方法
参考博客: https://blog.csdn.net/weixin_30639719/article/details/94846851 https://jingyan.baidu.com/artic ...
- Java-20180419
1.leetcode第二题 给定两个链表,逆序转换为数值相加,在逆序输出新链表. Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)Output: 7 - ...
- iview 在Table组件中使用switch组件并自定义内容和增加自定义事件
注意: 使用render函数. 效果: 添加自定义文字: 1. 2. 上面的两种方法效果都是一样的: 增加自定义事件: 结果: 自信是进步的源泉. 继续加油. ^_^
- Python中self的用法详解,或者总是提示:TypeError: add() missing 1 required positional argument: 'self'的问题解决
https://blog.csdn.net/songlh1234/article/details/83587086 下面总结一下self的用法详解,大家可以访问,可以针对平时踩过的坑更深入的了解下. ...
- noip模拟总结
先讲讲今天的比赛, T1: 看着很水,在草稿纸上画了一下,发现其实并不简单, 于是先去打第二题, 最后半个小时实在是一点头绪也没有, 打了个状压dp 70分(暴力分真多). T2: 把样例画出来模拟一 ...
- Centos 由字符界面 init 3 切换图形界面 init 5
Centos6 和 Centos7 由字符界面切换成 图形界面方法不同,下面分别介绍. 一.Centos6 切换方法 yum -y install xorg* yum -y groupinstall ...