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相关推荐

  1. python操作word文档(python-docx)

    python操作word文档(python-docx) 1. 效果图 1.1 python-docx文档标题段落(等级.加粗.斜体.居中)效果图 1.2 python-docx字体(加粗.斜体.居中. ...

  2. Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  3. Python 操作 MongoDB 数据库!

    作者 |黄伟呢 来源 |数据分析与统计学之美 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 先来看看MySQL与MongoDB 概念区别 ...

  4. python操作yaml的方法详解

    这篇文章主要为大家介绍了python操作yaml的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助 一.参考链接 https://pyyaml.org/wiki/PyYAM ...

  5. python连接excel存放数据_有了这篇python操作Excel学习笔记,以后储存数据 办公很轻松!...

    最近在做一些数据处理和计算的工作,因为数据是以.csv格式保存的,因此刚开始直接用Excel来处理.但是做着做着发现重复的劳动其实并没有多大的意义,于是就想着写个小工具帮着处理.以前正好在一本书上看到 ...

  6. job for nginx.service failed_用Python操作Kubernetes的Job

    关于Kubernetes的Python SDK,几乎只有官方项目的examples.关于Job的基本增删改查操作,可以参考job_crud.py.但是,这只是基本用法,缺乏一些实用细节. 本文给出Py ...

  7. python怎么玩pdf_最全总结!聊聊 python 操作PDF的几种方法

    作者:陈熹 来源:早起Python 一.前言 大家好,有关Python操作PDF的案例之前已经写过一个PDF批量合并,这个案例初衷只是给大家提供一个便利的脚本,并没有太多讲解原理,其中涉及的就是PDF ...

  8. python操作neo4j

    python操作neo4j 先安装neo4j的库: pip install neo4j 测试代码: from neo4j import GraphDatabasedriver = GraphDatab ...

  9. python操作MariaDB

    先安装库: python3 -m pip install PyMySQL 代码如下: import pymysql conn = pymysql.connect(host='127.0.0.1', u ...

  10. python操作mongodb进行读写

    python操作mongodb 安装mongodb的Python库 python3 -m pip install pymongo 测试连接: import pymongo #myclient = py ...

最新文章

  1. 通过UltraISO来提取U盘启动盘的ISO镜像文件
  2. python encoding报错_python用requests递归查询页面 报错 ChunkedEncodingError
  3. hihocoder #1055 : 刷油漆(树形dp)
  4. ubuntu切换JDK版本
  5. 下载nodejs的mysql安装包下载安装_Node.js安装 下载
  6. 通过Python脚本理解系统进程间通信
  7. 手写一个promise用法_手写一个自己的 JavaScript Promise 类库
  8. Python程序设计语言基础05:函数和代码复用
  9. 【snmp】测试流程
  10. python 排序统计滤波器_数字图像处理的python实现(8)——中值滤波
  11. MongoDB-Replication Replica Set Arbiter
  12. linux中sh和bash的区别
  13. MybatisPlus的CRUD操作
  14. 机器学习的归宿《终极算法》·一
  15. 基于cat12和SPM12进行VBMSBM数据分析笔记1——数据预处理
  16. 12/27复习有感--整环的整除性
  17. html中css设置td高度,如何使div填充td高度
  18. 职场办公Excel篇
  19. win11 任务栏显示所有图标 不需要任何插件 (win11 22h2 版本已失效)
  20. UVA11134_Fabled Rooks

热门文章

  1. 1483套求职个人简历PPT模板免费下载网址
  2. matlab对图片边缘化处理
  3. Laravel 事件监听
  4. laravel whereDoesntHave 查询不等于条件的数据
  5. 短信中心号码iphone_如何在iPhone上阻止来自特定号码的呼叫
  6. 如何使用xxl-job分布式任务调度平台 | 定时任务
  7. subject 获取登录用户信息
  8. linux开启磁盘多队列(blk-mq)
  9. 如何选一款软件助力企业腾飞
  10. 如何计算前缀,网络,子网和主机号?