通过python调用jenkins 常用api操作
# -*- coding: utf-8 -*- import jenkins class TestJenkins(object):
def __new__(cls, *args, **kwargs):
server = 'http://1.1.1.1:8080/jenkins'
username = 'admin'
# 对应用户的token信息,不是明文的密码信息
password = 'fljljdfladoweurojlsjdfasd123'
server = jenkins.Jenkins(url=server, username=username, password=password)
instance = super(TestJenkins, cls).__new__(cls, *args, **kwargs)
instance.server = server
return instance def __init__(self):
#这里的api_token是针对远程执行任务时,jenkins要验证的token的信息
self.api_token = 'okfine' def jobs_count(self):
print(self.server.jobs_count()) def server_info(self):
print(self.server.server) def get_jobs_info(self):
for item in self.server.get_all_jobs():
print('name: %s' % item['name'], 'URL: ', item['url']) def get_whoami(self):
print(self.server.get_whoami(depth=10)) def get_auth(self):
print(self.server.auth) def get_debug_job_info(self, name):
print(self.server.debug_job_info(name)) def check_job_exists(self, name):
print(self.server.job_exists(name)) def get_all_jobs(self):
print(self.server.get_all_jobs()) def create_job(self):
print(self.server.create_job('API-1', jenkins.RECONFIG_XML))
print(self.server.create_job('API-2', jenkins.RECONFIG_XML)) def delete_job(self, name):
print(self.server.delete_job(name)) def copy_job(self, name, new_name):
print(self.server.copy_job(name, new_name)) def enable_job(self, name):
print(self.server.enable_job(name)) def disable_job(self, name):
print(self.server.disable_job(name)) def reconfig_job(self, name):
print(self.server.reconfig_job(name, jenkins.RECONFIG_XML)) def rename_job(self, name, new_name):
print(self.server.rename_job(name, new_name)) def build_job(self, name, parameters):
print(self.server.build_job(name, parameters, token=self.api_token)) def get_job_info(self, name):
# 主要是通过任务的信息,来得到需要传入的参数信息,jenkins 各种自定义选项信息,单凭肉眼是很难辨别出参数信息的,
# 任务相关参数信息都是在property这个参数里面
build_arg = self.server.get_job_info(name)["property"]
for parameter_definitions in build_arg:
if len(parameter_definitions) > 1:
for parameter in parameter_definitions["parameterDefinitions"]:
print('----------------------------------')
print('name: %s' % parameter["name"])
print('class: %s' % parameter["_class"])
print('type: %s' % parameter["type"])
print('description: %s' % parameter["description"])
print('jenkins_arg: %s' % parameter["defaultParameterValue"]["name"])
print('default_value: %s' % parameter["defaultParameterValue"]["value"])
if parameter["_class"] == 'hudson.model.ChoiceParameterDefinition':
print('can_choices: %s' % parameter["choices"])
print('----------------------------------')
def get_build_log(self, name):
last_build_number = self.server.get_job_info(name)['lastCompletedBuild']['number']
print('last_build_number', last_build_number) # 查看指定构建编号的输出
print(self.server.get_build_console_output(name, last_build_number)) def __call__(self, *args, **kwargs):
self.get_job_info('shop')
# 通过特定任务的信息来得到要传入的参数信息,然后再来执行构建任务
# build new job, nice operation
# 如下列所示的5个参数,就是此次构建必须提供的参数
param_dict = {'repository': 'ssh://git@xxxxx.com/xx/xxxx.git',
'profile': 'xxxx-xxx',
'branch': 'master',
'upload_nexus': False,
'deploy_app': False} self.build_job('xxxxx', parameters=param_dict) TestJenkins()() 相信这篇文章,能够对大家提供帮助,尤其是通过python来远程调用jenkins执行构建任务方面
通过python调用jenkins 常用api操作的更多相关文章
- 【转】通过python调用jenkins 常用api操作
原:https://www.cnblogs.com/L-O-N/p/11608220.html # -*- coding: utf- -*- import jenkins class TestJenk ...
- PYTHON调用JENKINS的API来进行CI
我查到的相关API有两套,我主要用的是python-jenkins. https://pypi.python.org/pypi/python-jenkins/ 按语法调用即可... import je ...
- 用Python调用华为云API接口发短信
[摘要] 用Python调用华为云API接口实现发短信,当然能给调用发短信接口前提条件是通过企业实名认证,而且有一个通过审核的短信签名,话不多说,showcode #!/usr/bin/python3 ...
- python调用openstack的api,create_instance的程序解析
python调用openstack的api,create_instance的程序解析 2017年10月17日 15:27:24 CloudXli 阅读数:848 版权声明:本文为博主原创文章,未经 ...
- Python 调用图像融合API
Python 调用图像融合API 本文记录使用Python,调用腾讯AI开放平台的图像融合API.官网给出的Demo用的是PHP,博主作为Python的粉丝,自然想用它来和『最好的』的语言一较高下,顺 ...
- 大数据(5) - HDFS中的常用API操作
一.安装java 二.IntelliJ IDEA(2018)安装和破解与初期配置 参考链接 1.进入官网下载IntelliJ IDEA https://www.jetbrains.com/idea/d ...
- jackson学习之三:常用API操作
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Python 调用百度翻译API
由于实习公司这边做的是日文app,有时要看看用户反馈,对于我这种五十音图都没记住的人,表示百度翻译确实还可以.但不想每次都复制粘贴啊,google被墙也是挺蛋疼的事,所以用python结合baidu ...
- curl 调用jenkins的api
jenkins提供了rest api,通过调用接口,可以执行一些job的操作,如构建job ,新建job,启用禁用等操作骑车 其次curl是什么? cURL是一个利用URL语法在命令行下工作的文件传输 ...
随机推荐
- Django数据迁移时(或者新建模型时)报错:Did you install mysqlclient,解决后又报错:mysqlclient 1.3.13 or newer is required;you have 0.9.3
报错信息如下: 解决方法一: 给项目根目录下mysite应用下的__init__.py文件加入如下代码: 运行又报错: 报错信息是: mysqlclient版本太低 点击上图框中的链接进入到pyth ...
- WSAGetLastError错误原因的博客与时间函数
https://blog.csdn.net/skc361/article/details/9254507 https://blog.csdn.net/HK_5788/article/details/4 ...
- 【代码总结】Struts2 Action接受参数方式的对比
一.属性方式 1.Action中:对应表单参数的setter.getter 2.页面中 :Form中元素name取值属性名 <s:property value="属性名" ...
- drf-jwt手动签发与校验,drf小组件:过滤、筛选、排序、分页
复习 """ 频率组件:限制接口的访问频率 源码分析:初始化方法.判断是否有权限方法.计数等待时间方法 自定义频率组件: class MyThrottle(SimpleR ...
- wampserver 配置的几个坑(雾
1. 从安装版本说起 自从我进入大学之后,便继承了学长那里的wampserver2.5版本 直到有一天自己下载wamp的时候才注意到已经有 3.0.6版本了 (现在有更高的了 但是3.0.6够用了) ...
- C4K Power supply failed?
故障log: %C4K_IOSMODPORTMAN-4-POWERSUPPLYBAD: Power supply 2 has failed or been turned off 在单机的情况下,我们可 ...
- zabbix-agent不能启动:配置文件出现特殊字符导致
问题如下: 定位查找问题: 命令:journalctl -xe [重点] 图中可见错误信息在zabbix_agent配置文件中的“hostname=”中不能出现特殊字符,我出错的原因是写成了:hos ...
- 【算法】dsu on tree初探
dsu on tree的本质是树上的启发式合并,它利用启发式合并的思想,可以将O(N^2)的暴力优化成O(NlogN),用于不带修改的子树信息查询. 具体如何实现呢?对于一个节点,继承它重儿子的信息, ...
- Hadoop3.1.1源码Client详解 : 写入准备-RPC调用与流的建立
该系列总览: Hadoop3.1.1架构体系——设计原理阐述与Client源码图文详解 : 总览 关于RPC(Remote Procedure Call),如果没有概念,可以参考一下RMI(Remot ...
- 6_12 油田(UVa572)<图的连通块DFS>
有一家石油公司负责探勘某块地底下的石油含量,这块地是矩行的,并且为了探勘的方便被切割为许多小块.然后使用仪器对每个小块去探勘.含有石油的小块称为一个pocket.假如两个pocket相连,则这两个po ...