2015-02-16 18 views
9

Tôi đang tìm phương pháp để kiểm tra trình cắm thêm jenkins nào không được sử dụng. Cho đến nay tôi thấy rằng tôi có thể tìm các thẻ trong các tệp config.xml với thuộc tính plugin rồi so sánh chúng với các thẻ được liệt kê trong thư mục plugins. Nhưng điều đó không cho tôi danh sách đầy đủ. Một số vẫn không có như vai trò-chiến lược.Làm thế nào để liệt kê tất cả các plugin jenkins chưa sử dụng?

tôi sử dụng mã python như dưới đây

#!/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) 

Trả lời

0

Nếu bạn cần phải kiểm tra danh sách các plugin được cài đặt nhưng bị tàn tật, bạn có thể kiểm tra tab cài đặt trong quản lý plugin.

Không được chọn là những mục bị tắt.

+0

Cảm ơn, nhưng nó không phải là những gì tôi đang tìm kiếm, tôi muốn liệt kê tất cả các plugin được không được sử dụng trong công việc. Tôi biết rằng một số người trong số họ được sử dụng trên toàn cầu, có cách nào để phân biệt điều đó không? Đó là vấn đề. – mastier

+0

Bạn có thể thử đọc tệp cấu hình lệnh bằng cách sử dụng url bên dưới 'http: //10.157.137.17: 8010/view/viewName/job/jobNm/config.xml' Thay thế tên hiển thị và tên công việc bằng tên của bạn. Lọc ra các plugin bằng regex. Tìm kiếm 'plugin = ' –

+0

Cảm ơn bạn đã có ý tưởng. Tôi không biết rằng tôi có thể truy cập xml trên http. Nhưng đó là giải pháp đầu tiên tôi cung cấp ngay từ đầu. – mastier

0

Một số plugins chỉ ảnh hưởng đến cấu hình hệ thống Jenkins, chứ không phải là công việc cá nhân; bạn sẽ có thể tìm thấy chúng bằng cách thay đổi phương thức tìm kiếm trong mã của bạn để bao gồm /home/user/.jenkins/config.xml.

Nhiều plugin có tệp cấu hình của riêng chúng bằng $ JENKINS_HOME, ví dụ: $ JENKINS_HOME/org.jenkinsci.plugins.p4.PerforceScm.xml. Tôi chưa xem xét điều này, nhưng bạn có thể tìm thấy một số cách sử dụng plugin bổ sung bằng cách tìm kiếm tệp config.xml cho tên plugin (ví dụ: PerforceSCM) thay vì thuật ngữ "plugin".

Ngoài ra, nếu bạn chỉ muốn tìm kiếm công việc đã được bật, bạn có thể lọc ra công việc với "<disabled>true</disabled>" trong tệp config.xml của họ.

10

Có một Jenkins cắm chính xác cho vấn đề này: Plugin Usage

Nhờ plugin này tuyệt vời tôi thấy nhiều plugin không cần thiết để loại bỏ trong Manager Plugin (bạn sẽ có thể để loại bỏ các plugin mà không có người phụ thuộc).

Dưới đây là giao diện của giao diện plugin - giao diện plugin có liên kết trên thanh bên Jenkins. Nó liệt kê tất cả các plugin mà bất kỳ một mục đích sử dụng công việc hiện tại (nhấn vào nút mở rộng để xem tên công việc):

enter image description here

+1

whoa! tuyệt vời, thực sự tốt đẹp plugin :-) cảm ơn rất nhiều cho đăng bài rằng :-) – mastier

+1

@master đó là tuyệt vời. nếu nó trả lời câu hỏi của bạn, hãy đánh dấu nó bằng dấu V, cảm ơn;) –

+0

@mastier^Tôi muốn nói –

Các vấn đề liên quan