首页 > 解决方案 > 使用 Groovy 在 Jenkins 中初始化审计试用插件

问题描述

我的做法:

import hudson.plugins.audit_trail.AuditTrailPlugin
import hudson.plugins.jobConfigHistory.JobConfigHistory
import net.sf.json.JSONObject

def auditTrialPlugin = Jenkins.getInstance().getPlugin(AuditTrailPlugin.class)

// println(auditTrialPlugin.getConfigXml().asString())

println("Going to configure...")

def logger = new JSONObject()
logger.put("log", "Vibin")
logger.put("limit", "1")
logger.put("count", "2")
logger.put("stapler-class", "hudson.plugins.audit_trail.LogFileAuditLogger")
logger.put("\$class", "hudson.plugins.audit_trail.LogFileAuditLogger")

def plugin = new JSONObject()
plugin.put("name", "audit-trail")
plugin.put("pattern", "")
plugin.put("logBuildCause", true)
plugin.put("loggers", logger)

auditTrialPlugin.configure(null, plugin)

Error happening:

java.lang.NoSuchMethodException: hudson.plugins.audit_trail.LogFileAuditLogger.<init>()
    at java.lang.Class.getConstructor0(Class.java:3082)
    at java.lang.Class.newInstance(Class.java:412)
Caused: java.lang.InstantiationException: hudson.plugins.audit_trail.LogFileAuditLogger
    at java.lang.Class.newInstance(Class.java:427)
    at hudson.model.Descriptor.newInstance(Descriptor.java:578)
Caused: java.lang.Error: Failed to instantiate class hudson.plugins.audit_trail.LogFileAuditLogger from {"log":"Vibin","limit":"1","count":"2","stapler-class":"hudson.plugins.audit_trail.LogFileAuditLogger","$class":"hudson.plugins.audit_trail.LogFileAuditLogger"}
    at hudson.model.Descriptor.newInstance(Descriptor.java:600)
    at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:1055)
    at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:1017)
    at hudson.plugins.audit_trail.AuditTrailPlugin.configure(AuditTrailPlugin.java:78)
    at hudson.plugins.audit_trail.AuditTrailPlugin$configure$1.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133)
    at Script1.run(Script1.groovy:24)

我尝试遵循我在 GitHub 上找到的插件的代码库。我尝试使用的插件有一个“配置”功能,但它不起作用。

插件代码库:GitHub 链接

标签: jenkinsjenkins-pluginsjenkins-pipeline

解决方案


尝试这个:

import jenkins.model.*;
import hudson.plugins.audit_trail.AuditTrailPlugin;
import hudson.plugins.audit_trail.LogFileAuditLogger;

def log   = "Vibin"
def limit = 1
def count = 2

LogFileAuditLogger logFileAuditLogger = new LogFileAuditLogger(log, limit, count)

Jenkins j = Jenkins.getInstance();
AuditTrailPlugin plugin = j.getPlugin(AuditTrailPlugin.class);
plugin.loggers.clear()
plugin.loggers.add(logFileAuditLogger)
plugin.pattern = "" // empty pattern?

plugin.save()
plugin.start()

我认为使用LogFileAuditLogger 类比“配置”功能更清晰。


推荐阅读