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

时间:2015-02-16 13:34:42

标签: python jenkins jenkins-plugins

我正在寻找方法来检查哪些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)

3 个答案:

答案 0 :(得分:16)

有一个Jenkins插件正是为了这个问题: Plugin Usage

感谢这个精彩的插件,我在插件管理器中找到了许多要删除的冗余插件(你将能够删除没有依赖关系的插件)。

以下是它的外观 - 插件界面在Jenkins侧边栏上有一个链接。它列出了任何现有作业使用的所有插件(按下展开按钮以查看作业名称):

enter image description here

答案 1 :(得分:1)

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

未选中是禁用的。

Jenkins installed plugin list

答案 2 :(得分:1)

某些插件只会影响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>"的作业。