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

问题描述 投票:0回答:3

我正在寻找方法来检查未使用哪些詹金斯插件。 到目前为止,我发现我可以在 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)
python jenkins jenkins-plugins
3个回答
33
投票

有一个 Jenkins 插件专门针对这个问题: 插件使用

感谢这个出色的插件,我在插件管理器中发现了许多需要删除的冗余插件(您将能够删除没有依赖项的插件)。

插件界面在 Jenkins 侧边栏上有一个链接。它列出了现有作业中具有扩展点的所有插件(按展开按钮查看哪些作业),以及全局插件:

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


3
投票

有些插件只影响Jenkins系统配置,而不影响单个作业;您应该能够通过更改代码中的 find 方法以包含 /home/user/.jenkins/config.xml 来找到这些内容。

许多插件在 $JENKINS_HOME 中有自己的配置文件,例如$JENKINS_HOME/org.jenkinsci.plugins.p4.PerforceScm.xml。我还没有研究过这一点,但您可能可以通过在 config.xml 文件中搜索插件名称(例如 PerforceSCM)而不是术语“插件”来找到一些额外的插件用法。

此外,如果您只想搜索已启用的作业,您可以在 config.xml 中使用

"<disabled>true</disabled>"
过滤掉作业。


0
投票

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

未选中的是禁用的。

Jenkins installed plugin list

© www.soinside.com 2019 - 2024. All rights reserved.