Jenkins CLI支持列出所有已安装的插件:
java -jar jenkins-cli.jar -s http://localhost:8080/ list-plugins
对于Jenkins版本2.125,以下工作。
注意:将具有有效UserName和APIKey的USERNAME和APIKEY替换为相应用户的部分。 用户的API密钥可通过 管理用户 → 选择用户 → API密钥 选项。
如果Jenkins安装需要更长时间才能启动,则可能需要延长睡眠时间。
启蒙 yum update -y 如果您使用yum安装Jenkins,也会升级版本。
yum update -y
#JENKINS AUTO UPDATE SCRIPT link this script into a cron ############## !/bin/bash sudo yum update -y sleep 120 UPDATE_LIST=$( sudo /usr/bin/java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar -auth [USERNAME:APIKEY] -s http://localhost:8080/ list-plugins | grep -e ')$' | awk '{ print $1 }' ); if [ ! -z "${UPDATE_LIST}" ]; then echo Updating Jenkins Plugins: ${UPDATE_LIST}; sudo /usr/bin/java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar -auth [USERNAME:APIKEY] -s http://localhost:8080/ install-plugin ${UPDATE_LIST}; sudo /usr/bin/java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar -auth [USERNAME:APIKEY] -s http://localhost:8080/ safe-restart; fi ##############
如果您在docker环境中工作并希望以plugins.txt格式输出插件列表,以便将其传递给install_scripts.sh,请使用以下脚本: http://{jenkins}/script 安慰
http://{jenkins}/script
Jenkins.instance.pluginManager.plugins.each{ plugin -> println ("${plugin.getShortName()}:${plugin.getVersion()}") }
有很多方法可以获取这些信息,但我写的两种方法如下: -
的 1.获得jenkins cli。 强>
jenkins CLI将允许我们从命令行与我们的jenkins服务器进行交互。我们可以通过简单的卷曲调用来获得它。
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()}"}
您可以使用以下方式检索信息 Jenkins脚本控制台 可以通过访问访问 http://<jenkins-url>/script 。 (鉴于您已登录并具有所需权限)。
http://<jenkins-url>/script
输入以下内容 Groovy脚本 迭代已安装的插件并打印出相关信息:
Jenkins.instance.pluginManager.plugins.each{ plugin -> println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}") }
它会像这样打印结果列表(剪裁):
这个解决方案类似于 上面的答案之一 因为它使用Groovy,但在这里我们使用的是脚本控制台。使用Jenkins时,脚本控制台非常有用。
的 更新 强>
如果您更喜欢排序列表,可以调用它 sort 方法 :
sort
Jenkins.instance.pluginManager.plugins.sort { it.getDisplayName() }.each{ plugin -> println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}") }
根据你的喜好调整Closure。
我想要一个可以在没有任何auth要求的情况下在master上运行的解决方案,并且在这里没有看到它。我做了一个快速的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_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 和 jq :
curl
jq
curl -s <jenkins_url>/pluginManager/api/json?depth=1 \ | jq -r '.plugins[] | "\(.shortName):\(.version)"' \ | sort
此命令以特殊Jenkins使用的格式提供输出 plugins.txt 文件,使您可以预安装依赖项(例如在docker镜像中):
plugins.txt
ace-editor:1.1 ant:1.8 apache-httpcomponents-client-4-api:4.5.5-3.0
一个例子 plugins.txt : https://github.com/hoto/jenkinsfile-examples/blob/master/source/jenkins/usr/share/jenkins/plugins.txt
有一个表格列出了所有已安装的插件以及它们是否已启用 HTTP://詹金斯/ SYSTEMINFO
# 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}") }
像这样使用Jenkins CLI:
java -jar jenkins-cli.jar -s http://[jenkins_server] groovy = < pluginEnumerator.groovy
= 在通话中意味着 '从标准输入读取' 。 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文档 。
您可能还对插件可用的更新感兴趣。为此,您必须将有关已安装插件的数据与此处可用更新的相关信息进行合并 https://updates.jenkins.io/current/update-center.json 。
要将下载的文件解析为JSON,您必须在线阅读第二行(这是巨大的)。