python操作Jinkins
Jenkins不仅有web界面交互,也提供了RestAPI的方式来使用代码(Python、Java)控制Jenkins的工作流;
可以直接使用curl命令发送接口触发, Jenkins官网的wiki
简介
python有现成的轮子,使用python-jenkins库实现代码操作jinkins,参考:项目文档
功能 | 说明 |
---|---|
Create new jobs | 创建任务 |
Copy existing jobs | 复制已有任务 |
Delete jobs | 删除任务 |
Update jobs | 修改任务 |
Get a job’s build information | 获取任务构建信息 |
Get Jenkins master version information | 获取Jenkins master版本信息 |
Get Jenkins plugin information | 获取插件信息 |
Start a build on a job | 构建任务 |
Create nodes | 创建节点 |
Enable/Disable nodes | 启用/禁用节点 |
Get information on nodes | 获取节点信息 |
Create/delete/reconfig views | 创建/删除/编辑 视图 |
Put server in shutdown mode (quiet down) | 进入关机模式 |
List running builds | 获取正在运行的所有构建 |
Delete builds | 删除构建 |
Wipeout job workspace | 清除构建工作区 |
Create/delete/update folders | 创建/删除/更新 文件夹,需要安装插件Cloudbees Folders Plugin |
Set the next build number | 设置下一个构建版本号,需要安装插件Next Build Number Plugin |
Install plugins | 安装插件 |
and many more… | … |
Jenkins设置
修改Jenkins的“安全设置”
修改完后,重启Jenkins服务
Jenkins用户的API Token
上手
安装
pip install python-jenkins
使用
'''使用用户api token登录'''url = "http://{}:{}/jenkins/".format(host, port)jenkinsApi = jenkins.Jenkins(url, username="admin", password=apiToken)#获取任务的最新一次构建版本号number = jenkinsApi.get_job_info(jobName)['lastBuild']['number']#构建任务jenkinsApi.build_job(jobName)#带参数构建任务jenkinsApi.build_job(jobName, {'Tag': tag})
常用案例封装
def queryTaskStatus(jenkinsApi, jobName:str, number:int):#查询任务状态printLog("query jenkins task status")try:#获取构建信息# queue_info["building"]=True:构建完成# queue_info["result"] == 'SUCCESS':构建成功queue_info = jenkinsApi.get_build_info(jobName, number)if queue_info["building"]:return 0elif "testcase" not in jobName and not queue_info["result"] == 'SUCCESS':dingTalkNotice("jenkins build fail :{}_{}".format(jobName, number))else:return 1except Exception:return 0
def stopLastProcessingTest(jenkinsApi, jobName):'''获取最新一次构建,如未完成,停止构建'''lastBuild = jenkinsApi.get_job_info(jobName)['lastBuild']if queryTaskStatus(jenkinsApi, jobName, lastBuild['number']) == 0:jenkinsApi.stop_build(jobName, lastBuild['number'])printLog("stop the last running jenkins task")time.sleep(2)
def getJobInfo(jenkinsServer, jobName):'''查询任务详情,获取最新一次构建的action参数中的tag'''number = jenkinsServer.get_job_info(jobName)['lastBuild']['number']info = jenkinsServer.get_build_info(jobName, number)tag = info["actions"][0]['parameters'][0]['value']printLog("{} server lasted tag :{}".format(name, tag))return tag
踩坑记录
1、没有操作权限,报错:
jenkins.BadHTTPException: Error communicating with server[http://192.168.1.1:8080/]”
解决:照上文,修改全局安全配置为‘登录用户可以做任何事’
python操作Jinkins相关推荐
- python操作word文档(python-docx)
python操作word文档(python-docx) 1. 效果图 1.1 python-docx文档标题段落(等级.加粗.斜体.居中)效果图 1.2 python-docx字体(加粗.斜体.居中. ...
- Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
- Python 操作 MongoDB 数据库!
作者 |黄伟呢 来源 |数据分析与统计学之美 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 先来看看MySQL与MongoDB 概念区别 ...
- python操作yaml的方法详解
这篇文章主要为大家介绍了python操作yaml的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助 一.参考链接 https://pyyaml.org/wiki/PyYAM ...
- python连接excel存放数据_有了这篇python操作Excel学习笔记,以后储存数据 办公很轻松!...
最近在做一些数据处理和计算的工作,因为数据是以.csv格式保存的,因此刚开始直接用Excel来处理.但是做着做着发现重复的劳动其实并没有多大的意义,于是就想着写个小工具帮着处理.以前正好在一本书上看到 ...
- job for nginx.service failed_用Python操作Kubernetes的Job
关于Kubernetes的Python SDK,几乎只有官方项目的examples.关于Job的基本增删改查操作,可以参考job_crud.py.但是,这只是基本用法,缺乏一些实用细节. 本文给出Py ...
- python怎么玩pdf_最全总结!聊聊 python 操作PDF的几种方法
作者:陈熹 来源:早起Python 一.前言 大家好,有关Python操作PDF的案例之前已经写过一个PDF批量合并,这个案例初衷只是给大家提供一个便利的脚本,并没有太多讲解原理,其中涉及的就是PDF ...
- python操作neo4j
python操作neo4j 先安装neo4j的库: pip install neo4j 测试代码: from neo4j import GraphDatabasedriver = GraphDatab ...
- python操作MariaDB
先安装库: python3 -m pip install PyMySQL 代码如下: import pymysql conn = pymysql.connect(host='127.0.0.1', u ...
- python操作mongodb进行读写
python操作mongodb 安装mongodb的Python库 python3 -m pip install pymongo 测试连接: import pymongo #myclient = py ...
最新文章
- 通过UltraISO来提取U盘启动盘的ISO镜像文件
- python encoding报错_python用requests递归查询页面 报错 ChunkedEncodingError
- hihocoder #1055 : 刷油漆(树形dp)
- ubuntu切换JDK版本
- 下载nodejs的mysql安装包下载安装_Node.js安装 下载
- 通过Python脚本理解系统进程间通信
- 手写一个promise用法_手写一个自己的 JavaScript Promise 类库
- Python程序设计语言基础05:函数和代码复用
- 【snmp】测试流程
- python 排序统计滤波器_数字图像处理的python实现(8)——中值滤波
- MongoDB-Replication Replica Set Arbiter
- linux中sh和bash的区别
- MybatisPlus的CRUD操作
- 机器学习的归宿《终极算法》·一
- 基于cat12和SPM12进行VBMSBM数据分析笔记1——数据预处理
- 12/27复习有感--整环的整除性
- html中css设置td高度,如何使div填充td高度
- 职场办公Excel篇
- win11 任务栏显示所有图标 不需要任何插件 (win11 22h2 版本已失效)
- UVA11134_Fabled Rooks