如何列出所有未使用的jenkins插件?

uurity8g  于 2023-10-17  发布在  Jenkins
关注(0)|答案(3)|浏览(158)

我正在寻找方法来检查哪些Jenkins插件没有使用。到目前为止,我发现我可以在 * config.xml * 文件中查找带有属性 plugin 的标记,然后将它们与 plugins 目录中列出的标记进行比较。但这并不能给予我完整的清单。还有一些不存在,比如“角色战略”。
我使用如下的Python代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import glob
from lxml import etree as ET
from collections import defaultdict

def find(name, path):
    return glob.glob(path+'/jobs/*/'+name)

def get_plugin_list(path):
    return [x[:-4].split('/')[-1] for x in glob.glob(path+'/plugins/*.jpi')]

if __name__ == "__main__":
    jobs_dict = defaultdict(list)
    plugins_all = set(get_plugin_list('/home/user/.jenkins')
    for config in find('config.xml', '/home/user/.jenkins'):
        with open(config) as f:
            tree = ET.XML(f.read())
            plugins = tree.xpath("/project//@plugin")
        job = config.split('/')[-2]
        for p in plugins:
            jobs_dict[p].append(job)
    with open('/home/user/.jenkins/config.xml') as f:
        tree = ET.XML(f.read())
        plugins_config = tree.xpath("/hudson//@plugin")
    plugins_used = set([x.split('@')[0] for x in jobs_dict.keys()+plugins_config])
    print "######## All plugins\n", '\n'.join(plugins_all)
    print "######## Used plugins\n", '\n'.join(plugins_used)
    print "######## Unused plugins\n", '\n'.join(plugins_all - plugins_used)
h4cxqtbf

h4cxqtbf1#

有一个Jenkins插件正好可以解决这个问题:Plugin Usage
多亏了这个奇妙的插件,我发现许多冗余的插件在插件管理器中删除(你将能够删除没有依赖关系的插件)。
插件界面在Jenkins侧边栏上有一个链接。它列出了在现有作业中具有扩展点的所有插件(按下扩展按钮以查看哪些作业),以及全局插件:

**更新:**现在支持管道作业(感谢Ian W)

lrl1mhuk

lrl1mhuk2#

有些插件只影响Jenkins系统配置,而不是单个作业;你应该可以通过在代码中修改find方法来找到这些文件,包括/home/user/. jenkins/jen.xml。
许多插件在$JENKINS_HOME中有自己的配置文件,例如。$JENKINS_HOME/org.jenkinsci.plugins.p4.PerforceScm.xml。我还没有研究过这个问题,但是你可以通过搜索插件名称的xml文件来找到一些额外的插件用法(例如:PerforceSCM)而不是术语“插件”。
此外,如果您只想搜索已启用的作业,则可以过滤掉其xml中包含"<disabled>true</disabled>"的作业。

c6ubokkw

c6ubokkw3#

如果您需要查看已安装但已禁用的插件列表,您可以在插件管理器中检查已安装选项卡。
未选中的是已禁用的。

相关问题