Python利用requests库自己写一个Jenkins的标签和视图的操作接口

293 阅读3分钟

Jenkins中label是资源与任务的关联关系体现,而view是任务的集合体现,前面两篇文章对资源与任务的api操作进行了探究。这一篇就对label和view进行研究。

label部分

label下的工程数据提取我们已经在Jenkins label标签下的资源与任务分布观察 - 掘金 (juejin.cn)中进行了python api的粗略介绍,label部分整体能操作的功能不多。

读取label下的资源、任务

GET /label/use_docker/api/json

结果中可以观察云、节点和任务的数量,以及一些执行器的运行情况。

image.png

调整标签描述

POST /label/use_docker/submitDescription

同样需要增加data={'description': '测试中'}来添加描述,覆盖原值,原值在上面的label信息中提取。

需要注意的是联合多重计算label可以在任务和节点中配置,但是不能对这种label添加描述。返回404。

 

view部分

view功能一般用于将任务归类,便于在主页上展示,功能和;label其实差不多,但是又有一点区别。一个是被动产生的数据,一个是主动添加的任务。

 

查询view挂载的任务

GET /view/321/api/json

(321是测试用的view名称)

得到的数据中,第一级的class代表了view的类型,默认有三种,第一种是列表视图,用于展示一系列选定的任务,下图中的就是这种,第二种是Multijob视图,用于展示全部的multijob,这个改不了任务配置,默认是全部,第三种是用户视图,自动展示用户具有权限的全部任务。一般不会操作后面两种,特别是最后一种。

jobs中包含了这个视图里全部的任务。

image.png

给视图加描述

POST /view/321/submitDescription

和另外几种加描述一样,也是data里加description

 

读取和修改配置

GET/POST /view/321/config.xml

虽然比较少见,但是也可能是用的到的,功能实现和前面节点与任务的配置修改是一样的。

 

修改视图包含的任务

可以通过修改配置来直接进行任务和显示列的增删,但也有专门的api来增删任务

image.png

增加任务

POST /view/321/addJobToView

data = {  
    'name': 'cloud_test'  
}  
response = requests.post(f'{jenkins_url}/view/321/addJobToView', auth=auth,data=data)

增加成功返回200,已有的任务也返回200,不存在的任务添加不上去,返回400

移除任务

POST /view/321/removeJobFromView

用法和增加任务一致,功能逻辑也一样。  

删除视图

POST /view/mul_view/delete  

增加视图

POST /createView

与节点中增加节点类似,data数据是多一个json的。

data = {  
    'name': 'list_add2',  
    'mode': 'hudson.model.ListView',  
    'json': '{"name": "list_add2", "mode": "hudson.model.ListView"}',  
}  
response = requests.post(f'{jenkins_url}/createView', auth=auth, data=data)

不过这个json数据是可以为空的即:

'json': '{}',

但不能没有。视图的名称以name里的为准,json里的可以看作是额外的配置。

刚增加的视图是没有任务的,需要另行添加。