如何获取已安装Jenkins插件的列表?
我在查找Jenkins远程访问API文档时没有找到相关内容。我应该使用Jenkins的CLI吗?是否有相应的文档或示例呢?
如何获取已安装Jenkins插件的列表?
我在查找Jenkins远程访问API文档时没有找到相关内容。我应该使用Jenkins的CLI吗?是否有相应的文档或示例呢?
我希望找到一个可以在主服务器上运行且没有任何授权要求的解决方案,但我没有在这里找到。我编写了一个快速的Bash脚本,可以从插件目录中提取所有版本。
if [ -f $JENKINS_HOME/plugin_versions.txt ]; then
rm $JENKINS_HOME/plugin_versions.txt
fi
for dir in $JENKINS_HOME/plugins/*/; do
dir=${dir%*/}
dir=${dir##*/}
version=$(grep Plugin-Version $JENKINS_HOME/plugins/$dir/META-INF/MANIFEST.MF | awk -F': ' '{print $2}')
echo $dir $version >> $JENKINS_HOME/plugin_versions.txt
done
从 Jenkins 主页开始:
或者
在这里分享另一个带有凭据的选项,链接为https://github.com/jenkinsci/docker
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/ /:/'
curl -sSL "http://127.0.0.1:8080/pluginManager/api/xml?depth=1&xpath=/*/*/shortName|/*/*/version&wrapper=plugins" | perl -pe 's/.*?<shortName>([\w-]+).*?<version>([^<]+)()(<\/\w+>)+/\1 \n/g' | sort
- ffghfghPython用户的另一个选择:
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)
我认为这些答案不够好...许多需要进行一些额外的底层操作。以下是我是如何做到的。
sudo apt-get install jq
#!/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
# list of plugins in sorted order
# Copy this into your Jenkins script console
def plugins = jenkins.model.Jenkins.instance.getPluginManager().getPlugins()
List<String> list = new ArrayList<String>()
i = 0
plugins.each {
++i
//println " ${i} ${it.getShortName()}: ${it.getVersion()}"
list.add("${it.getShortName()}: ${it.getVersion()}")
}
list.sort{it}
i = 0
for (String item : list) {
i++
println(" ${i} ${item}")
}
有很多方法可以获取这些信息,但我将写出两种方法:
1. 获取Jenkins CLI。
Jenkins CLI允许我们从命令行与Jenkins服务器进行交互。我们可以通过一个简单的curl调用来获取它。
curl 'localhost:8080/jnlpJars/jenkins-cli.jar' > jenkins-cli.jar
2. 创建一个Groovy脚本。或者从Jenkins脚本控制台中执行。
我们需要创建一个Groovy脚本来解析我们从Jenkins API接收到的信息。这将输出每个插件及其版本。请将以下内容保存为plugins.groovy文件。
def plugins = jenkins.model.Jenkins.instance.getPluginManager().getPlugins()
plugins.each {println "${it.getShortName()}: ${it.getVersion()}"}
/var/lib/jenkins/plugins
。我有点惊讶这里没有提到,但是https://plugins.jenkins.io/plugin-usage-plugin/的插件使用URL看起来很不错,并且对普通用户可用,无需管理员权限(只需安装插件)。可以用来检查你正在使用的Jenkins服务器是否安装了特定的插件:
http://<jenkinsurl>/pluginusage
grep Plugin-Version */META-INF/MANIFEST.MF | sed -e 's!/META-INF/MANIFEST.MF:Plugin-Version: !:!g' > ../plugins2.txt
- james dupont