通过jenkins-Python在后台操作Jenkins构建job
2020-01-14 18:23
811 查看
最近要开发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库
命令行安装
1 sudo pip install python-jenkins
pythonCharm安装:
当前使用的python-jenkins版本是1.5.0
接下来通过python脚本尝试构建一个jenkins项目
代码示例:
通过这个小示例,感觉用python-jenkins还是可以非常方便在的在后台操作jenkins的。
1 #导入依赖 2 import jenkins 3 4 #定义远程的jenkins master server 的url,以及port 5 jenkins_server_url = 'http://10.1.71.51:8080/jenkins' 6 7 #定义用户的Userid 和 api token 8 user_id = 'admin' 9 api_token = '11a7a8151dbde5173fa19b346ad46b5efe' 10 11 #实例化jenkins对象,连接远程的jenkins master server 12 server = jenkins.Jenkins(jenkins_server_url,username=user_id,password=api_token) 13 #打印一下server查是否连接成功 14 # print(server) #返回一个jenkins对象<jenkins.Jenkins object at 0x10807d190> 15 16 # 构建job名为testJob的job(不带构建参数) 17 # server.build_job('testJob') 18 19 #查看某个job的构建信息 20 job_info=server.get_job_info('testJob') 21 # print(job_info) 22 23 #获取job名为testJob的job的最后次构建号 24 lastbuildNumber=server.get_job_info('testJob')['lastBuild']['number'] 25 26 #获取job名为testJob的job的最后1次构建的执行结果状态 27 result =server.get_build_info('testJob',lastbuildNumber)['result'] 28 29 #判断testJob是否还在构建中 30 status = server.get_build_info('testJob',lastbuildNumber)['building'] 31 print(status)
我们可以打印job_info可以一下会看到什么信息:
可以很明显看出来,get_job_info('job_name')返回的是整个job的构建信息
job_info=server.get_job_info('testJob')
1 { 2 '_class': 'hudson.model.FreeStyleProject', 3 'actions': [ 4 { 5 6 }, 7 { 8 9 }, 10 { 11 12 }, 13 { 14 '_class': 'com.cloudbees.plugins.credentials.ViewCredentialsAction' 15 } 16 ], 17 'description': '', 18 'displayName': 'testJob', 19 'displayNameOrNull': None, 20 'fullDisplayName': 'testJob', 21 'fullName': 'testJob', 22 'name': 'testJob', 23 'url': 'http: //10.1.71.51/jenkins/job/testJob/', 24 'buildable': True, 25 'builds': [ 26 { 27 '_class': 'hudson.model.FreeStyleBuild', 28 'number': 25, 29 'url': 'http: //10.1.71.51/jenkins/job/testJob/25/' 30 }, 31 { 32 '_class': 'hudson.model.FreeStyleBuild', 33 'number': 24, 34 'url': 'http: //10.1.71.51/jenkins/job/testJob/24/' 35 }, 36 { 37 '_class': 'hudson.model.FreeStyleBuild', 38 'number': 23, 39 'url': 'http: //10.1.71.51/jenkins/job/testJob/23/' 40 } 41 ], 42 'color': 'blue', 43 'firstBuild': { 44 '_class': 'hudson.model.FreeStyleBuild', 45 'number': 1, 46 'url': 'http: //10.1.71.51/jenkins/job/testJob/1/' 47 }, 48 'healthReport': [ 49 { 50 'description': 'Buildstability: Norecentbuildsfailed.', 51 'iconClassName': 'icon-health-80plus', 52 'iconUrl': 'health-80plus.png', 53 'score': 100 54 } 55 ], 56 'inQueue': True, 57 'keepDependencies': False, 58 'lastBuild': { 59 '_class': 'hudson.model.FreeStyleBuild', 60 'number': 25, 61 'url': 'http: //10.1.71.51/jenkins/job/testJob/25/' 62 }, 63 'lastCompletedBuild': { 64 '_class': 'hudson.model.FreeStyleBuild', 65 'number': 25, 66 'url': 'http: //10.1.71.51/jenkins/job/testJob/25/' 67 }, 68 'lastFailedBuild': { 69 '_class': 'hudson.model.FreeStyleBuild', 70 'number': 7, 71 'url': 'http: //10.1.71.51/jenkins/job/testJob/7/' 72 }, 73 'lastStableBuild': { 74 '_class': 'hudson.model.FreeStyleBuild', 75 'number': 25, 76 'url': 'http: //10.1.71.51/jenkins/job/testJob/25/' 77 }, 78 'lastSuccessfulBuild': { 79 '_class': 'hudson.model.FreeStyleBuild', 80 'number': 25, 81 'url': 'http: //10.1.71.51/jenkins/job/testJob/25/' 82 }, 83 'lastUnstableBuild': None, 84 'lastUnsuccessfulBuild': { 85 '_class': 'hudson.model.FreeStyleBuild', 86 'number': 7, 87 'url': 'http: //10.1.71.51/jenkins/job/testJob/7/' 88 }, 89 'nextBuildNumber': 26, 90 'property': [ 91 92 ], 93 'queueItem': { 94 '_class': 'hudson.model.Queue$WaitingItem', 95 'blocked': False, 96 'buildable': False, 97 'id': 55, 98 'inQueueSince': 1567674112446, 99 'params': '', 100 'stuck': False, 101 'task': { 102 '_class': 'hudson.model.FreeStyleProject', 103 'name': 'testJob', 104 'url': 'http: //10.1.71.51/jenkins/job/testJob/' 105 }, 106 'url': 'queue/item/55/', 107 'why': 'Inthequietperiod.Expiresin4.9秒', 108 'timestamp': 1567674117446 109 }, 110 'concurrentBuild': False, 111 'downstreamProjects': [ 112 113 ], 114 'labelExpression': None, 115 'scm': { 116 '_class': 'hudson.scm.NullSCM' 117 }, 118 'upstreamProjects': [ 119 120 ] 121 }
参考文档:
Python-Jenkins API使用 —— 在后端代码中操控Jenkins
转载于:https://www.cnblogs.com/kaerxifa/p/11466976.html
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- jenkins(二)jenkins+maven+git 构建第一个简单的job
- Maven 构建J 4000 ava项目 通过JavaApi 操作 Hbase
- Jenkins通过maven构建编译JAVA项目
- 通过python操作GeoLite2-City.mmdb库将nginx日志访问IP转换为城市写入数据库
- 命令行执行jenkins,构建job(可传递参数)
- Python操作Jenkins
- 前端通过AJAX提交数据,后台PHP处理数据实现异步操作基本流程
- Oracle通过JOB定时自动操作数据库删除数据
- 通过python和websocket构建实时通信系统[扩展saltstack监控]
- python通过ElementTree操作XML获取结点读取属性美化XML
- iOS 通过Jenkins 自动构建ipa
- 树莓派安装mysql数据库并且通过python来进行存储操作
- jenkins构建python文件时提示自定义模块不存在问题
- 通过Python的JIRA库操作JIRA
- apache与mod_python通过publisher构建python运行环境
- 【Python 学习】通过yield 构建迭代生成器
- 通过Jenkins实现SVN的submit、update等操作
- 通过python代码远程连接服务器进行操作之paramiko模块
- [python]通过ElementTree来操作XML
- python 通过thrift 简单操作hbase