如何获得名称和版本对安装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()}") }
它将打印结果列表(剪辑):
这个解决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主页:
- 点击pipe理jenkins 。
- 点击pipe理插件 。
- 点击已安装的选项卡。
要么
- 直接转到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`