一、安装依赖包

pip install python-jenkins

二、常用操作

0、调用jenkins(以下用的server都是这里的环境)

import jenkins
server = jenkins.Jenkins('http://localhost:8080', username='admin', password='')

1、获取版本信息

server.get_version()

'''
2.192
'''

2、获取用户信息等

server.get_whoami()

'''
{'_class': 'hudson.model.User', 'absoluteUrl': 'http://10.0.0.141:8080/user/admin', 'description': None, 'fullName': 'qq', 'id': 'admin', 'property': [{'_class': 'jenkins.security.ApiTokenProperty'}, {'_class': 'hudson.plugins.emailext.watching.EmailExtWatchAction$UserProperty', 'triggers': []}, {'_class': 'org.jenkinsci.plugins.displayurlapi.user.PreferredProviderUserProperty'}, {'_class': 'hudson.model.PaneStatusProperties'}, {'_class': 'com.cloudbees.plugins.credentials.UserCredentialsProvider$UserCredentialsProperty'}, {'_class': 'hudson.model.MyViewsProperty'}, {'_class': 'hudson.search.UserSearchProperty', 'insensitiveSearch': True}, {'_class': 'hudson.security.HudsonPrivateSecurityRealm$Details'}, {'_class': 'hudson.tasks.Mailer$UserProperty', 'address': 'binzhangvip1@gmail.com'}, {'_class': 'jenkins.security.seed.UserSeedProperty'}, {'_class': 'jenkins.security.LastGrantedAuthoritiesProperty'}]}
'''

3、获取job数量

server.jobs_count()

'''
3
'''

4、获取所有job的详细信息(url、name、状态等)

server.get_jobs()

'''
[{'_class': 'hudson.model.FreeStyleProject', 'name': 'q1', 'url': 'http://10.0.0.141:8080/job/q1/', 'color': 'blue', 'fullname': 'q1'}, {'_class': 'hudson.model.FreeStyleProject', 'name': 'q2', 'url': 'http://10.0.0.141:8080/job/q2/', 'color': 'blue', 'fullname': 'q2'}, {'_class': 'hudson.model.FreeStyleProject', 'name': 'sonar_test', 'url': 'http://10.0.0.141:8080/job/sonar_test/', 'color': 'notbuilt', 'fullname': 'sonar_test'}] '''

5、获取job的config配置信息(xml格式)

server.get_job_config('q1')

'''
<?xml version='1.1' encoding='UTF-8'?>
<project>
<description></description>
<keepDependencies>false</keepDependencies>
<properties/>
<scm class="hudson.scm.NullSCM"/>
<canRoam>true</canRoam>
<disabled>false</disabled>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<triggers/>
<concurrentBuild>false</concurrentBuild>
<builders/>
<publishers/>
<buildWrappers/>
</project> '''

6、创建job(需指定config配置)

c=server.get_job_config('q1')
#指定的配置为c,job名为q3
server.create_job('q3',c)

7、复制job

#复制q1 job,复制job名为q4
server.copy_job('q1','q4')

8、删除job

#删除q3 job
server.delete_job('q3')

9、构建job

#构建q2 job
server.build_job('q2')

10、获取job当前的构建id

#获取q2 job的最新构建ID
server.get_job_info('q2')['lastCompletedBuild']['number'] '''
1
'''

11、查看job某次build的详细信息

server.get_build_info('q2',1)

'''
{'_class': 'hudson.model.FreeStyleBuild', 'actions': [{'_class': 'hudson.model.CauseAction', 'causes': [{'_class': 'hudson.model.Cause$UserIdCause', 'shortDescription': 'Started by user qq', 'userId': 'admin', 'userName': 'qq'}]}, {}], 'artifacts': [], 'building': False, 'description': None, 'displayName': '#1', 'duration': 50, 'estimatedDuration': 50, 'executor': None, 'fullDisplayName': 'q2 #1', 'id': '1', 'keepLog': False, 'number': 1, 'queueId': 2, 'result': 'SUCCESS', 'timestamp': 1567062080190, 'url': 'http://10.0.0.141:8080/job/q2/1/', 'builtOn': '', 'changeSet': {'_class': 'hudson.scm.EmptyChangeLogSet', 'items': [], 'kind': None}, 'culprits': []} '''

12、查看视图信息

server.get_views()

'''
[{'_class': 'hudson.model.AllView', 'name': 'all', 'url': 'http://10.0.0.141:8080/'}]
'''

三、编写Jenkins API

# coding:utf-8
import jenkins class Jenkins_Api:
def __init__(self,username='admin',password=''):
self._url = 'http://10.0.0.141:8080'
self._username = username
self._password = password def get_server(self):
server = jenkins.Jenkins(self._url, username=self._username, password=self._password)
return server def get_version(self):
return self.get_server.get_version() def get_jobs(self):
return self.get_server.get_jobs() def get_jobs_count(self):
return self.get_server.jobs_count() def get_job_config(self,job_name):
return self.get_server.get_job_config(job_name) def create_job(self,job_name,config_xml)
return self.get_server.create_job(job_name,config_xml) def copy_job(self,job_name,new_job_name):
return self.get_server.copy_job(job_name,new_job_name) def delete_job(self,job_name):
return self.get_server.delete_job(job_name) def build_job(self,job_name):
return self.get_server.build_job(job_name) def get_job_info(self,job_name):
return self.get_server.get_job_info(job_name) def get_job_number(self,job_name):
return self.get_server.get_job_info(job_name)['lastCompletedBuild']['number'] def get_build_info(self,job_name,number):
return self.get_server.get_build_info(job_name,number) def get_views(self):
return self.get_server.get_views()

python3 jenkins api操作的更多相关文章

  1. jenkins的api操作

    jenkins-client 实现方式 jenkins-client 底层是使用 HttpClient HttpPost 发送post 请求实现的,是将 REST API 封装了一下 添加依赖 < ...

  2. 利用 Java 操作 Jenkins API 实现对 Jenkins 的控制详解

    本文转载自利用 Java 操作 Jenkins API 实现对 Jenkins 的控制详解 导语 由于最近工作需要利用 Jenkins 远程 API 操作 Jenkins 来完成一些列操作,就抽空研究 ...

  3. 转 用C API 操作MySQL数据库

    用C API 操作MySQL数据库 参考MYSQL的帮助文档整理 这里归纳了C API可使用的函数,并在下一节详细介绍了它们.请参见25.2.3节,“C API函数描述”. 函数 描述 mysql_a ...

  4. hive-通过Java API操作

    通过Java API操作hive,算是测试hive第三种对外接口 测试hive 服务启动 package org.admln.hive; import java.sql.SQLException; i ...

  5. Hadoop学习记录(3)|HDFS API 操作|RPC调用

    HDFS的API操作 URL方式访问 package hdfs; import java.io.IOException; import java.io.InputStream; import java ...

  6. HBase 6、用Phoenix Java api操作HBase

    开发环境准备:eclipse3.5.jdk1.7.window8.hadoop2.2.0.hbase0.98.0.2.phoenix4.3.0 1.从集群拷贝以下文件:core-site.xml.hb ...

  7. hadoop2-HBase的Java API操作

    Hbase提供了丰富的Java API,以及线程池操作,下面我用线程池来展示一下使用Java API操作Hbase. 项目结构如下: 我使用的Hbase的版本是 hbase-0.98.9-hadoop ...

  8. 使用Java API操作HDFS文件系统

    使用Junit封装HFDS import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import org ...

  9. HBase API操作

    |的ascII最大ctrl+shift+t查找类  ctrl+p显示提示 HBase API操作 依赖的jar包 <dependencies> <dependency> < ...

随机推荐

  1. 蒙蔽的FormBody

    作为一个不算新人的新人,今天看到 了FormBody这个绿色字体,之前没有怎么注意过, 好了 ,发现了一篇文章,记录下. 这篇文章总结下来就是: 在前端穿过的数据是Json格式(当我们设置Conten ...

  2. 前端笔记6-js2

    1.break 和continue用法 break结束本次循环,如果想结束外层循环,可以通过这个label来指定要结束的循环. continue可以用来跳过当次循环,如果想跳过外次循环,也可以通过这个 ...

  3. java 语句流程

    一.if条件判断 太简单,不加说明 二.switch条件选择语句 注意: 1.switch(表达式),表达式的数据类型 byte/short/char/int/String/enum 2.别忘记写br ...

  4. chrome清除缓存快捷键

    CTRL+SHIFT+DEL:直接进入“清除浏览数据”页面,包括清除浏览历史记录.清空缓存.删除Cookie等. 进入开发者模式settings

  5. 如何构建可伸缩的Web应用?

    为什么要构建可伸缩的Web应用? 想象一下,你的营销活动吸引了很多用户,在某个时候,应用必须同时为成千上万的用户提供服务,这么大的并发量,服务器的负载会很大,如果设计不当,系统将无法处理. 接下来发生 ...

  6. NC使用教程

    NetCat参数说明: 一般netcat做的最多的事情为以下三种: 扫描指定IP端口情况 端口转发数据(重点) 提交自定义数据包 1.扫描常用命令. 以下IP 处可以使用域名,nc会调用NDS解析成I ...

  7. 《ASP.NET Core 高性能系列》关于性能的闲聊

    一.通常的性能问题类型 让我们一起看看那些公共的性能问题,看看他们是或者不是.我们将了解到为什么我们常常在开发期间会错过这些问题.我们也会看看当我们考虑性能时语言的选择.延迟.带宽.计算等因素. 二. ...

  8. GP工作室——系统设计

    团队作业第二次--系统设计 问题 答案 这个作业属于哪个课程 软件工程 这个作业要求在哪里 作业要求 团队名称 GP工作室 这个作业的目标 对项目软件进行更为详细的系统性设计 按照本游戏的设计要求,我 ...

  9. Python3之MySQL操作

    1.安装pymysql PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,在使用之前需要进行安装,可以使用以下命令安装最新版的 PyMySQL: 1).在cmd命令 ...

  10. 2、初始ES6及Vue

    今日内容 es6的语法 let 特点: 1.局部作用域 2.不会存在变量提升 3.变量不能重复声明 const 特点: 1.局部作用域 2.不会存在变量提升 3.不能重复声明,只声明常量 不可变的量 ...