记一次jenkins权限回收

281 阅读1分钟

当前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()