如何获得名称和版本对安装jenkins插件的列表?

我怎样才能得到安装jenkins插件的列表? searchJenkins远程访问API文档,但未find。 我应该使用Jenkins CLI吗? 有没有文件或例子?

您可以将api与深度,xpath和包装器参数结合使用

以下将查询pluginManager的api列出所有已安装的插件,但只返回它们的shortName和version属性。 你当然可以通过添加'|'来添加字段 到xpath参数的末尾,并指定模式来标识节点。

wget http://<jenkins>/pluginManager/api/xml?depth=1&xpath=/*/*/shortName|/*/*/version&wrapper=plugins 

在这种情况下,wrapper参数是必需的,因为它返回多个节点作为结果的一部分,两者都是通过xpath和多个插件节点匹配多个字段。

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

 http://<jenkins>/pluginManager/api/xml?depth=1 

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

脚本控制台的屏幕截图

input以下Groovy脚本遍历已安装的插件并打印出相关信息:

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

它将打印结果列表(剪辑):

脚本输出的SScreenshot

这个解决scheme与使用Groovy的上述答案类似,但是在这里我们使用的是脚本控制台。 使用Jenkins时,脚本控制台非常有用。

更新

如果你喜欢sorting列表,你可以调用这个sort方法 :

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

调整闭合你的喜好。

像这样使用Jenkins CLI:

 java -jar jenkins-cli.jar -s http://[jenkins_server] groovy = < pluginEnumerator.groovy 

=在通话中是指“从标准input中读取”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()}" 

如果你想玩代码, 这里是Jenkins Java API文档 。

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

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

jenkins1.588 (2014年11月2日)和1.647 (2016年2月4日)

  • jenkins>pipe理jenkins

    在这里输入图像说明

  • 系统信息

    在这里输入图像说明

  • 插件

    在这里输入图像说明

从jenkins主页:

  1. 点击pipe理jenkins
  2. 点击pipe理插件
  3. 点击已安装的选项卡。

要么

  1. 直接转到Jenkinsurl:{你的jenkins base Url} / pluginManager / installed

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

http://<jenkinsurl>/systemInfo

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

得到jenkinscli

jenkins CLI将允许我们从命令行与我们的jenkins服务器进行交互。 我们可以用一个简单的curl调用来获得它。

 curl 'localhost:8080/jnlpJars/jenkins-cli.jar' > jenkins-cli.jar 

2.创build一个groovy脚本进行parsing(感谢malenkiy_scot)

将下面的内容保存为plugins.groovy

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

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

用你的login用户名和密码来调用jenkins服务器(localhost:8080),同时引用groovy脚本。

 java -jar jenkins-cli.jar -s http://localhost:8080 groovy --username "admin" --password "admin" = < plugins.groovy > plugins.txt 

输出到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 

与凭据共享另一个选项

 JENKINS_HOST=username:password@myhost.com:port curl -sSL "http://$JENKINS_HOST/pluginManager/api/xml?depth=1&xpath=/*/*/shortName|/*/*/version&wrapper=plugins" | perl -pe 's/.*?<shortName>([\w-]+).*?<version>([^<]+)()(<\/\w+>)+/\1 \2\n/g'|sed 's/ /:/' 

我认为这些答案不够好,许多涉及引擎盖下的一些额外步骤。 这是我做的。

sudo apt-get install jq

因为在调用api之后需要使用json输出。

 #!/bin/bash server_addr = 'jenkins' server_port = '8080' curl -s -k "http://${server_addr}:${server_port}/pluginManager/api/json?depth=1" \ | jq '.plugins[]|{shortName, version,longName,url}' -c | sort \ > plugin-list echo "dude, here's your list: " cat plugin-list 

有一张表格列出了所有安装的插件,以及它们是否在http:// jenkins / systemInfo中被启用

python用户的另一个选项:

 from jenkinsapi.jenkins import Jenkins #get the server instance jenkins_url = 'http://<jenkins-hostname>:<jenkins-port>/jenkins' server = Jenkins(jenkins_url, username = '<user>', password = '<password>') #get the installed plugins as list and print the pairs plugins_dictionary = server.get_plugins().get_plugins_dict() for key, value in plugins_dictionary.iteritems(): print "Plugin name: %s, version: %s" %(key, value.version) 

如果jenkins运行在jenkins docker容器中,则可以在bash中使用以下命令行:

 java -jar /var/jenkins_home/war/WEB-INF/jenkins-cli.jar -s http://localhost:8080/ list-plugins --username admin --password `/bin/cat /var/jenkins_home/secrets/initialAdminPassword`