有没有办法查看jenkins插件更新历史记录?

时间:2019-06-07 08:23:19

标签: jenkins jenkins-plugins

Jenkins上的插件进行了更新,此后,Jenkins进入了“安全关闭”模式,阻止了我们所有的夜间计划工作。 我们不知道是谁(或“什么”)启动了更新,并且我找不到任何有关插件更新的日志。我们所知道的是更新它们的时间(通过实际插件*.jpi文件上的“修改日期”)。

如果有帮助,我们将使用Active Directory身份验证和基于角色的权限管理,因此我们实际上知道谁(普通+服务用户)对此具有权限,但是似乎没人做到这一点,这让我觉得它可能是通过脚本或计划任务以某种方式触发的。

有什么办法找出谁启动了更新或如何启动? 谢谢。

2 个答案:

答案 0 :(得分:0)

我发现甚至只有一点点信息的唯一地方是在Catalina日志文件中。

catalina.2019-08-07.log:07-Aug-2019 16:37:10.695 INFO [Update center installer thread [#1]] hudson.model.UpdateCenter$DownloadJob.run Starting the installation of Credentials Binding on behalf of aakoch

我知道您在2个月前问过这个问题,但是我也遇到了一个问题,并且发现了这个问题。因此,我要添加给下一个人的少量信息。

我要添加我拥有的stacktrace。也许它将显示在搜索结果中。

Loading library jenkins-library@master
java.lang.NullPointerException
    at org.jenkinsci.plugins.workflow.libs.LibraryAdder.retrieve(LibraryAdder.java:157)
    at org.jenkinsci.plugins.workflow.libs.LibraryAdder.add(LibraryAdder.java:138)
    at org.jenkinsci.plugins.workflow.libs.LibraryDecorator$1.call(LibraryDecorator.java:125)
    at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1065)
    at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:603)
    at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
    at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
    at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
    at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
    at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
    at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:142)
    at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:127)
    at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:561)
    at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:522)
    at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:320)
    at hudson.model.ResourceController.execute(ResourceController.java:97)
    at hudson.model.Executor.run(Executor.java:429)
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: Loading libraries failed

1 error

    at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
    at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1085)
    at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:603)
    at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
    at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
    at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
    at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
    at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
    at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:142)
    at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:127)
    at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:561)
    at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:522)
    at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:320)
    at hudson.model.ResourceController.execute(ResourceController.java:97)
    at hudson.model.Executor.run(Executor.java:429)
Finished: FAILURE

问题是,我为库定义的信息在进行 some 插件更新后被擦除了。我不确定是哪一个。我只是重新定义了信息,所以我很高兴。

答案 1 :(得分:0)

同时,我们有一个作业在@daily下运行python脚本,以便将当前插件名称和版本保存在服务器上的json文件中:

import os, json, base64, urllib.request, ssl, datetime, time

request = urllib.request.Request("https://jenkins-server-name/pluginManager/api/json?depth=1")
#according to https://stackoverflow.com/a/28052583/4609258 the following is ugly
# ... but still ok if you basically access localhost, I think
context = ssl._create_unverified_context() 
base64string = base64.b64encode(bytes('%s:%s' % ('jenkins user name', '34 characters long api key'),'ascii'))
request.add_header("Authorization", "Basic %s" % base64string.decode('utf-8'))

with urllib.request.urlopen(request, context=context) as url:
    parsed = json.loads(url.read().decode())
    f = open(datetime.datetime.now().strftime("%Y-%m-%d_%H-%M") + "_plugins.json", "w")
    f.write(json.dumps(parsed, indent=4, sort_keys=True))
    f.close()

如果有问题,可以将这些日常文件相互比较,以查看何时更改了。