jenkins-api操作

devtools/2025/1/22 4:27:19/

一. 简述:

    在一个比较复杂的环境中, 往往会有自己开发的运维管理平台。在代码发布这块,尽管jenkins有一个比较方便的UI, 但很多团队还是喜欢集中式管理, 将发布功能(仅仅把jenkins作为一个发布组件使用)嵌入运维管理平台。当然,对于这种需求, 强大的jenkins也为我们提供的相应的接口支持。 

    jenkins目前支持xml、json、python三种(当然其他的语言,也可以自己封装相关接口)对象远程请求访问,可以通过http://jenkdinsurl/api/来查看当前版本中支持的jenkins操作。

二. 关于jenkins api:

    关于python的api, 目前有两个:JenkinsAPI  和Python-Jenkins  这里就以python-Jenkins(以实现功能为优先,未做特殊调研两者的差异性,有时间可以看下)作为说明。

安装python model:    pip install python-jenkins

关于认证,  目前jenkins 支持用户名密码的方式, 同样在密码段也可以通过apitoken的方式进行认证, 代码片段如下:

url = 'http://jenkins.xxx-inc.com:8082'
user_id = 'xiaoxiang'
apitoken = '495b92effe9fb696ed14a7d5619efaf6'  #可通过jenkins web用户管理/设置页面查看
#apitoken = 'xxxxxx'server = jenkins.Jenkins(url, username=user_id, password=apitoken)
user = server.get_whoami()    #获取用户信息
nodes = server.get_nodes()    #获取node信息
print nodes

JOB功能说明: 

 a).   job创建 create_job():   

          这个功能比较无奈,只能先写好的xml 作为内容进行创建,不过也可以理解, 内部各种部署方式、插件,不太容易做成通用性强的参数化接口。片段如下:

template = '''<?xml version='1.0' encoding='UTF-8'?>
<flow-definition plugin="workflow-job@2.15"><actions>
...............
</flow-definition>
'''server = jenkins.Jenkins(url, username=user_id, password=apitoken)
server.create_job('pipeline-test4',template)  #创建一个名为pipeline-test4的job

b).  build job: build_job():

server.build_job('pipeline-test4')     #无参数构建
server.build_job('pipeline-test4',{'Tag':'v201712211559'})  #参数构建(需要在config中配置参数化构建, 这个选择了gitlab的T)server.get_job_info('pipeline-test4')['lastBuild']   #获取最后一次构建信息#获取最后一次构建状态
last_build_number = server.get_job_info('pipeline-test4')['lastCompletedBuild']['number']
server.get_build_info('pipeline-test4', last_build_number)['result']  
server.get_build_info('pipeline-test4', last_build_number)['building'] #查看是否还在构建中构建过程中,可通过直接访问相关url进行查看build日志:http://jenkinsurl/job/{jobname}/lastBuild/consoleText

   注: 在实际工作中,可能没法再build_job后立刻获取最后构建数(lastbuildnumber,或者说, 获取的构建数为上次的构建数,保险起见,应该在build前,获取构建数(lastbuildnum),在build后,通过lastbuildnum+1,或者可以直接获取nextBuildNumber(server.get_job_info('pipeline-test4')['nextBuildNumber'])数值来判断构建是否完成!)

c). 其他job操作:

#server.get_jobs()   获取所有job
#server.get_job_name('pipeline-test4')   判断job是否存在
#server.get_job_info_regex('test')     正则方式获取匹配到的job信息
#server.get_queue_info    获取job build队列长度(等待构建数)
#server.copy_job('pipeline-test4','pipeline-test5')  copy job
#server.rename_job('pipeline-test5','pipeline-test6')  重命名
#server.delete_job('pipeline-test6')   删除
#server.disable_job('pipeline-test4')  禁止掉构建功能
#server.enable_job('pipeline-test4')   启用禁止的job构建功能
#server.get_job_config('pipeline-test4')  获取job配置信息
#server.reconfig_job('pipeline-test4', config_xml) #重置job配置信息
#server.build_job_url('pipeline-test4')  获取job构建url
#server.get_build_console_output('pipeline-test4',13)  获取13次build的output log 
#server.get_running_builds() 获取正在运行的build
#server.stop_build('pipeline-test4',13)  停止正在运行的build

d). Node功能说明:

  创建node:

params = {'port': '22','username': 'root','credentialsId': 'c49df9e7-e4b3-487f-82e2-019978774c73','host':ipaddress}server.create_node(name = node_name,numExecutors = int(3),nodeDescription = '负责人:xx',remoteFS = '/home/jenkins',labels = 'vipkid_test',exclusive = True,launcher = jenkins.LAUNCHER_SSH,launcher_params = params)#(可动态化抽取,项目绑定,初始化定制)

其他node操作:

#server.get_node_config(name)   #node信息获取
#server.reconfig_node(name, config_xml)  # 更新node配置
#server,disable_node(name, msg='')  #禁止node功能
#server.enable_node(name)   开启禁止的node功能
#server.delete_node(name)   删除
#server.node_exists(name)   判断node是否存在
#server.assert_node_exists(name)   类似node_exists,node不存在时,引发异常

e). 其他功能:

 如: 视图(view) ,promotions等功能。。

有相关需求的同学可自行参考官网。


http://www.ppmy.cn/devtools/152497.html

相关文章

【Spring MVC】如何运用应用分层思想实现简单图书管理系统前后端交互工作

前言 &#x1f31f;&#x1f31f;本期讲解关于SpringMVC的编程思想之应用分层~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那…

数据库的DQL(3)

数据库的DQL(3) 分组查询 在MySQL中&#xff0c;group by关键字可以根据一个或多个字段对查询结果进行分组 group by 字段名1.分组函数 有时也叫聚合函数 count(): 查询表中的记录数量avg(): 求平均值sum(): 求和max():求最大值min():求最小值 案例1&#xff1a; mysql&g…

深入解析人工智能中的协同过滤算法及其在推荐系统中的应用与优化

目录 什么是协同过滤算法核心原理基本步骤相似度计算代码实现详解1.流程图2.创建基础的数据结构存储用户评分数据3.计算用户相似度4.获取相似用户5.推荐方法 算法优化建议1. 数据预处理优化去除异常值和噪声数据进行数据标准化使用稀疏矩阵优化存储 2. 相似度计算优化使用局部敏…

STM32使用DSP库 Keil方式添加

文章目录 前言一、添加DSP库二、使能FPU及配置1. 使能FPU2. 增加编译的宏3.增加头文件的检索路径三. 验证1. 源码中添加2.代码测试前言 添加DSP有两种方案,本文采用的是是Keil 中添加。 一、添加DSP库 在创建好的工程中添加DSP库:步骤如下: 步骤1:选择运行环境管理; 步…

Spring参数校验,数组入参校验 :List<E>

1、程序内直接校验 参数进入控制层方法&#xff0c;使用具体的参数方法来验证&#xff0c;灵活不优雅 Objects.isNull() String.isEmpty()2、验证 单对象&#xff08;Obj&#xff09;使用 Validated 优雅&#xff0c;不灵活&#xff0c;对象类配置多 首先在对象类中 1、校验…

kafka学习

kafka (消息、生产者、消费者、toptic、分区、偏移量、broker、集群) Kafka是什么&#xff1f; 学习Kafka的目的&#xff0c;为了解决高吞吐量项目的需求&#xff0c;Kafka号称大数据的杀手锏&#xff0c;这款为大数据而生的消息中间件&#xff0c;以其百亿级tps的吞吐量名声…

nacos安装及SpringCloud整合

参考资料: 参考视频 参考demo SpringCloud-Alibaba基础框架搭建 nacos官网 nacos部署教程: 1.准备环境 - 1.64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。 - 2.64 bit JDK 1.8+;下载 & 配置。 - 3.Maven 3.2.x+;下载 & 配置。 2.版本选…

Django多线程爬虫:突破数据抓取瓶颈

Django框架以其高效、安全、可扩展性强等特点&#xff0c;在Web开发领域得到了广泛应用。同时&#xff0c;Python语言的多线程支持和丰富的库也为开发多线程爬虫提供了便利。将Django与多线程技术相结合&#xff0c;不仅可以利用Django的强大功能进行项目管理和数据存储&#x…