如何获取已安装的名称和版本对的Jenkins插件列表

use*_*795 136 jenkins jenkins-plugins

如何获取已安装的Jenkins插件列表?

我搜索了Jenkins Remote Access API文档,但未找到它.我应该使用Jenkins的CLI吗?有文件或例子吗?

Beh*_*ehe 132

您可以使用可通过访问访问的Jenkins脚本控制台来检索信息http://<jenkins-url>/script.(鉴于您已登录并具有所需权限).

脚本控制台的屏幕截图

输入以下Groovy脚本以迭代已安装的插件并打印出相关信息:

Jenkins.instance.pluginManager.plugins.each{
  plugin -> 
    println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}")
}
Run Code Online (Sandbox Code Playgroud)

它会像这样打印结果列表(剪裁):

SScreenshot脚本输出

此解决方案类似于上面的答案之一,它使用Groovy,但在这里我们使用脚本控制台.使用Jenkins时,脚本控制台非常有用.

更新

如果您更喜欢排序列表,可以调用此sort方法:

Jenkins.instance.pluginManager.plugins.sort { it.getDisplayName() }.each{
  plugin -> 
    println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}")
}
Run Code Online (Sandbox Code Playgroud)

根据你的喜好调整Closure.

  • 快速为docker Jenkins创建plugins.txt的绝佳答案! (7认同)
  • 排序不起作用,如今这是一个不可修改的地图.使用:```jenkins.model.Jenkins.instance.getPluginManager().getPlugins().stream().sorted().each {println"$ {it.getShortName()} | $ {it.getVersion()} | $ {it.getDisplayName()}"}``` (7认同)
  • 在所有答案中,这对于提交插件错误报告最有用; 它可以使用标准Web UI完成,并以可以轻松粘贴到"环境"字段中的格式提供结果. (2认同)

dba*_*ley 93

这些天我使用的方法与@Behe下面描述的答案相同,而不是/sf/answers/2470490361/


您可以将API与depth,XPath和包装器参数结合使用.

以下将查询pluginManager的API以列出所有已安装的插件,但仅返回其shortName和version属性.您当然可以通过添加"|"来检索其他字段 到XPath参数的末尾并指定用于标识节点的模式.

wget http://<jenkins>/pluginManager/api/xml?depth=1&xpath=/*/*/shortName|/*/*/version&wrapper=plugins
Run Code Online (Sandbox Code Playgroud)

在这种情况下,包装器参数是必需的,因为它返回多个节点作为结果的一部分,因为它将多个字段与XPath和多个插件节点匹配.

在浏览器中使用以下URL以查看插件上的哪些信息可用,然后使用XPath确定要限制的内容可能很有用:

http://<jenkins>/pluginManager/api/xml?depth=1
Run Code Online (Sandbox Code Playgroud)

  • JSON格式的替代方案:`curl -s -k"http:// jenkins/pluginManager/api/json?depth = 1"| jq'.plugins [] | {shortName,version,longName}' - c` (7认同)
  • 在Mac OS X上为我工作得很好.我想将输出转换为纯文本列表,因此使用一些Perl正则表达式去除标签:`curl'http://192.168.197.133:8080/pluginManager/api/xml? depth = 1&xpath =/*/*/shortName |/*/*/version&wrapper = plugins'| perl -pe的/.*?<shortName>([\ w - ] +).*?<version>([^ <] +)()(<\ /\w +>)+ /\1\2\N/g'` (3认同)
  • 我相信这需要管理权限,但我不确定。 (2认同)
  • 确认这需要根据[2016-05-11安全公告](https://jenkins.io/security/advisory/2016-05-11)拥有管理员特权。 (2认同)

ROM*_*eer 25

詹金斯1.588(2 11月,2014)和1.647(4 月的,2016)

  • 詹金斯>管理詹金斯

    在此输入图像描述

  • 系统信息

    在此输入图像描述

  • 插件

    在此输入图像描述


小智 22

Jenkins CLI支持列出所有已安装的插件:

java -jar jenkins-cli.jar -s http://localhost:8080/ list-plugins

  • 并且“list-plugins” CLI 命令不需要用户像“groovy”命令那样具有_Overall/RunScripts 权限_。 (2认同)

mal*_*cot 21

像这样使用Jenkins CLI:

java -jar jenkins-cli.jar -s http://[jenkins_server] groovy = < pluginEnumerator.groovy
Run Code Online (Sandbox Code Playgroud)

=在通话中意味着'从标准输入读取'.pluginEnumerator.groovy包含以下Groovy代码:

println "Running plugin enumerator"
println ""
def plugins = jenkins.model.Jenkins.instance.getPluginManager().getPlugins()
plugins.each {println "${it.getShortName()} - ${it.getVersion()}"}
println ""
println "Total number of plugins: ${plugins.size()}"
Run Code Online (Sandbox Code Playgroud)

如果您想使用代码,请参阅Jenkins Java API文档.


Ale*_*ini 17

如果您在docker环境中工作,并且想要以plugins.txt格式输出插件列表,以便将该插件列表传递给install_scripts.sh,请在http://{jenkins}/script控制台中使用以下脚本:

  1. 此版本对于获取特定的软件包版本很有用
Jenkins.instance.pluginManager.plugins.each{
  plugin -> 
    println ("${plugin.getShortName()}:${plugin.getVersion()}")
}
Run Code Online (Sandbox Code Playgroud)
  1. 如果您只想要具有最新版本的插件,则可以使用它(感谢@KymikoLoco作为提示)
Jenkins.instance.pluginManager.plugins.each{
  plugin -> 
    println ("${plugin.getShortName()}:latest")
}
Run Code Online (Sandbox Code Playgroud)

  • 如果你想获取所有插件的最新版本,你可以扩展它只获取短名称,并在末尾添加`:latest`:`println("${plugin.getShortName()}:latest")` (2认同)

小智 15

这里的答案有点不完整.我不得不从其他来源编译信息以实际获取插件列表.

1.获取Jenkins CLI

Jenkins CLI允许我们从命令行与Jenkins服务器进行交互.我们可以通过简单的卷曲调用来获得它.

curl 'localhost:8080/jnlpJars/jenkins-cli.jar' > jenkins-cli.jar
Run Code Online (Sandbox Code Playgroud)

2.创建用于解析的Groovy脚本(感谢malenkiy_scot)

将以下内容另存为plugins.groovy.

def plugins = jenkins.model.Jenkins.instance.getPluginManager().getPlugins()
plugins.each {println "${it.getShortName()}: ${it.getVersion()}"}
Run Code Online (Sandbox Code Playgroud)

3.调用Jenkins API获取插件结果

localhost:8080在引用Groovy脚本时,使用您的登录用户名和密码调用Jenkins服务器(此处):

java -jar jenkins-cli.jar -s http://localhost:8080 groovy --username "admin" --password "admin" = < plugins.groovy > plugins.txt
Run Code Online (Sandbox Code Playgroud)

plugins.txt的输出如下所示:

ace-editor: 1.1
ant: 1.5
antisamy-markup-formatter: 1.5
authentication-tokens: 1.3
blueocean-autofavorite: 1.0.0
blueocean-commons: 1.1.4
blueocean-config: 1.1.4
blueocean-dashboard: 1.1.4
blueocean-display-url: 2.0
blueocean-events: 1.1.4
blueocean-git-pipeline: 1.1.4
blueocean-github-pipeline: 1.1.4
blueocean-i18n: 1.1.4
blueocean-jwt: 1.1.4
blueocean-personalization: 1.1.4
blueocean-pipeline-api-impl: 1.1.4
blueocean-pipeline-editor: 0.2.0
blueocean-pipeline-scm-api: 1.1.4
blueocean-rest-impl: 1.1.4
Run Code Online (Sandbox Code Playgroud)


Ale*_*sso 12

Behe对排序插件的回答在我的Jenkins机器上无效.我收到错误是java.lang.UnsupportedOperationException因为尝试对不可变集合进行排序,即Jenkins.instance.pluginManager.plugins.简单修复代码:

List<String> jenkinsPlugins = new ArrayList<String>(Jenkins.instance.pluginManager.plugins);
jenkinsPlugins.sort { it.displayName }
              .each { plugin ->
                   println ("${plugin.shortName}:${plugin.version}")
              }
Run Code Online (Sandbox Code Playgroud)

使用http://<jenkins-url>/scriptURL运行代码.

  • 我刚刚注意到的一件事是您在打印出 `shortName` 时根据 `displayName` 进行排序,这非常令人困惑,因为某些插件的字母顺序并不相同,这导致列表不会出现排序。将 `it.displayName` 更改为 `it.shortName` 可以很好地解决这个问题。 (2认同)

And*_*y G 6

如果您是Jenkins管理员,则可以使用Jenkins系统信息页面:

http://<jenkinsurl>/systemInfo
Run Code Online (Sandbox Code Playgroud)

  • 试试`http:// localhost:8080 / systemInfo`-一些服务器区分大小写。另请注意,它要求当前登录的用户具有“总体/管理”权限。 (7认同)

And*_*ann 6

curljq

curl -s <jenkins_url>/pluginManager/api/json?depth=1 \
  | jq -r '.plugins[] | "\(.shortName):\(.version)"' \
  | sort
Run Code Online (Sandbox Code Playgroud)

此命令以特殊的Jenkins plugins.txt文件使用的格式提供输出,该文件使您可以预安装依赖项(例如,在docker映像中):

ace-editor:1.1
ant:1.8
apache-httpcomponents-client-4-api:4.5.5-3.0
Run Code Online (Sandbox Code Playgroud)

一个示例plugins.txthttps : //github.com/hoto/jenkinsfile-examples/blob/master/source/jenkins/usr/share/jenkins/plugins.txt


Jam*_*ruk 5

来自Jenkins主页:

  1. 单击管理Jenkins.
  2. 单击" 管理插件".
  3. 单击" 已安装"选项卡.

要么

  1. 直接转到Jenkins URL:{Your Jenkins base URL}/pluginManager/installed

  • “已安装的插件”页面不一定反映真实的插件状态。例如,您可能会重新启用插件,并看到该插件已选中,而该插件在 Jenkins 重新启动之前仍处于禁用状态。因此,唯一的 100% 解决方案是 http://&lt;jenkinsurl&gt;/systeminfo 和 API 查询答案,恕我直言。 (2认同)