当前UAT的部署权限开发是有的,就导致部分开发直接在UAT环境进行开发测试,引发的部分数据测错乱,所以要进行UAT部署权限的回收。在准备修改jenkins权限时,竟发现没有进行角色管理,新引入插件,怕对原有的Jenkins产生影响,只能在原有的基础上修改了。涉及的job比较多,手动修改又不是我的作风,那就来个脚本跑一下。
Job权限如下图:
具体步骤
1、找到UAT发布视图下的所有job
2、获取job的配置文件,xml格式
3、定位到需要修改的字段,替换关键字
4、重新加载配置文件
5、联系开发、测试进项验证
具体代码如下:
# -*- coding: utf-8 -*-
'''
@File : change_level.py
@Time : 2020/10/23
@Author : lemon-tea
@Desc :
'''
import jenkins
from xml.dom.minidom import parseString
# 初始化,连接jenkins
auto_jenkins = jenkins.Jenkins('https://192.168.11.100:443', username='admin', password='admin@2020')
# view列表
list_view = ["UAT发布", "TEST发布"]
# 获取指定view下的job
def get_job_name(list_view):
job_list = []
for view in list_view:
jobs = auto_jenkins.get_jobs(view_name=view)
for job in jobs:
job_list.append(job["name"])
return job_list
# get_job_name(list_view)
def main():
list_len = []
for job_name in get_job_name(list_view):
try:
print("=============", job_name, "=============")
# 获取job配置xml格式
end = auto_jenkins.get_job_config(job_name)
end = parseString(end)
collection = end.documentElement
all = collection.getElementsByTagName("permission")
# 修改数据
for i in range(len(all)):
info = all[i].childNodes[0].data.replace("kaifa", "uat")
all[i].childNodes[0].data = info
# 写入文件
try:
with open('dom_write.xml','w',encoding='UTF-8') as fh:
end.writexml(fh,indent='',addindent='\t',newl='\n',encoding='UTF-8')
print('OK')
except Exception as err:
print('错误:{err}'.format(err=err))
configxml = open("./dom_write.xml", encoding='utf-8').read()
# 更新配置
auto_jenkins.reconfig_job(job_name, configxml)
except:
print("###############", job_name)
if __name__ == "__main__":
main()