gpt4 book ai didi

jenkins - 我如何知道该插件是否被 jenkins 中的任何作业使用

转载 作者:行者123 更新时间:2023-12-01 22:10:39 25 4
gpt4 key购买 nike

Jenkins有600+个插件,在实际系统中,我们习惯安装很多插件。

有时,我们想删除一些插件以使系统更干净或替换为另一个成熟的插件(不同的名称)。

这需要确保没有人/没有工作使用这些插件,否则我需要通知他们。

配置中或 Jenkins 系统中的某个位置是否有任何方法可以知道该插件是否被任何作业使用?

2013 年更新根据下面的答案,我维护简单的“插件:关键字”映射,例如

plugin_keys = {
"git":'scm class="hudson.plugins.git.GitSCM"',
"copyartifact":"hudson.plugins.copyartifact.CopyArtifact",
# and more
}

并从 config.xml 中搜索插件关键字,所有信息(插件、作业、配置)都可以通过 jenkins remote API 获取

它对我有用。

更新2014年4月26日后来的jenkins版本,似乎config.xml被更改为直接有插件名称

喜欢

<com.coravy.hudson.plugins.github.GithubProjectProperty plugin="github@1.4">
<hudson.plugins.throttleconcurrents.ThrottleJobProperty plugin="throttle-concurrents@1.7.2">
<hudson.plugins.disk__usage.DiskUsageProperty plugin="disk-usage@0.18"/>
<scm class="hudson.plugins.git.GitSCM" plugin="git@1.4.1-SNAPSHOT">

因此我只检查这个plugin="<plugin name>"config.xml ,它又起作用了

更新2014.05.05

查看要点中的完整脚本 jenkins-stats.py

更新2018.6.7

plugin usage plugin支持这个(还没有 REST API)

最佳答案

这里有两种查找该信息的方法。

最简单的可能是 grep 作业配置文件:

例如当您知道插件的类名称(或包名称)时(例如 org.jenkinsci.plugins.unity3d.Unity3dBuilder):

find $JENKINS_HOME/jobs/ -name config.xml -maxdepth 2 | xargs grep Unity3dBuilder

另一种方法是使用类似 the scriptler plugin 的内容,但是您需要有关构建中使用该插件的位置的更多信息。

import hudson.model.*
import hudson.maven.*
import hudson.tasks.*

for(item in Hudson.instance.items) {
//println("JOB : "+item.name);
for (builder in item.builders){
if (builder instanceof org.jenkinsci.plugins.unity3d.Unity3dBuilder) {
println(">>" + item.name.padRight(50, " ") + "\t UNITY3D BUILDER with " + builder.unity3dName);
}
}
}
}

更新:这里有一个小脚本,可以帮助您轻松查找相关的类名称。它当然可以改进:

import jenkins.model.*;
import hudson.ExtensionFinder;

List<ExtensionFinder> finders = Jenkins.instance.getExtensionList(ExtensionFinder.class);

for (finder in finders) {
println(">>> " + finder);
if (finder instanceof hudson.ExtensionFinder.GuiceFinder) {
println(finder.annotations.size());
for (key in finder.annotations.keySet()) {
println(key);
}
} else if (finder instanceof ruby.RubyExtensionFinder) {
println(finder.parsedPlugins.size());
for (plugin in finder.parsedPlugins) {
for (extension in plugin.extensions) {
println("ruby wrapper for " + extension.instance.clazz);
}
}
} else if (finder instanceof hudson.cli.declarative.CLIRegisterer) {
println(finder.discover(Jenkins.instance));
for (extension in finder.discover(Jenkins.instance)) {
println("CLI wrapper for " + extension.instance.class);
// not sure what to do with those
}
} else {
println("UNKNOWN FINDER TYPE");
}
}

(从我原来的 listJenkinsExtensions 提交到 http://scriptlerweb.appspot.com 的内联脚本似乎已下降)

别忘了备份!

关于jenkins - 我如何知道该插件是否被 jenkins 中的任何作业使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18138361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com