web-dev-qa-db-ja.com

インストールされたJenkinsプラグインの名前とバージョンのペアを含むリストを取得する方法

インストールされているJenkinsプラグインのリストを取得するにはどうすればよいですか?

Jenkins Remote Access APIドキュメントを検索しましたが、見つかりませんでした。 JenkinsのCLIを使用する必要がありますか?文書または例はありますか?

127
user1284795

Jenkins Script Console を使用して情報を取得できます。このコンソールには、http://<jenkins-url>/scriptにアクセスしてアクセスできます。 (ログインし、必要なアクセス許可があることを前提としています)。

Screenshot of the Script Console

次のGroovyスクリプトを入力して、インストールされているプラ​​グインを反復処理し、関連情報を出力します。

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

次のような結果リストを出力します(クリップ):

SScreenshot of script output

このソリューションは、 Groovyを使用するという点で上記の回答の1つ に似ていますが、ここでは代わりにスクリプトコンソールを使用しています。 Jenkinsを使用する場合、スクリプトコンソールは非常に役立ちます。

更新

ソートされたリストが必要な場合は、この sort method を呼び出すことができます。

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

クロージャーを好みに合わせて調整します。

125
Behe

これらの日は、代わりに以下の@Beheによって説明された答えと同じアプローチを使用します https://stackoverflow.com/a/35292719/1597808


深さ、XPath、およびラッパー引数と組み合わせてAPIを使用できます。

以下は、インストールされているすべてのプラグインをリストするためにpluginManagerのAPIを照会しますが、それらのshortNameおよびversion属性のみを返します。もちろん、「|」を追加して追加のフィールドを取得できますXPathパラメータの最後まで、ノードを識別するためのパターンを指定します。

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

この場合、ラッパー引数が必要です。これは、結果の一部として複数のノードを返すためです。XPathを持つ複数のフィールドと複数のプラグインノードが一致するためです。

ブラウザで次のURLを使用してプラグインに関する情報を確認し、XPathを使用して制限するものを決定すると便利です。

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

ジェンキンス1.588(2nd 2014年11月)&1.647(4番目 2016年2月)

  • ジェンキンス>ジェンキンスの管理

    enter image description here

  • システムインフォメーション

    enter image description here

  • プラグイン

    enter image description here

24

Jenkins CLIは、インストールされているすべてのプラグインのリストをサポートしています。

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

21
wmli

次のように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 AP​​I documentation です。

21
malenkiy_scot

ここでの答えはやや不完全でした。プラグインリストを実際に取得するには、他のソースからの情報をコンパイルする必要がありました。

1. Jenkins CLIを入手する

Jenkins CLIを使用すると、コマンドラインからJenkinsサーバーと対話できます。簡単なcurl呼び出しで取得できます。

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

2.解析用のGroovyスクリプトを作成します(malenkiy_scotに感謝)

以下をplugins.groovyとして保存します。

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

3.プラグインの結果のためにJenkins APIを呼び出します

Groovyスクリプトを参照しながら、ログインユーザー名とパスワードを使用してJenkinsサーバー(localhost:8080ここ)を呼び出します。

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
14
noqcks

Docker環境で作業していて、プラグインリストをplugins.txt形式で出力してinstall_scripts.shに渡す場合は、http://{jenkins}/scriptコンソールでこのスクリプトを使用します。

Jenkins.instance.pluginManager.plugins.each{
  plugin -> 
    println ("${plugin.getShortName()}:${plugin.getVersion()}")
}
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}")
              }

http://<jenkins-url>/script URLを使用してコードを実行します。

11
Alesso

Jenkins管理者は、Jenkinsシステム情報ページを使用できます。

http://<jenkinsurl>/systemInfo
6
Andy G

Jenkinsのホームページから:

  1. Jenkinsの管理をクリックします。
  2. プラグインの管理をクリックします。
  3. インストール済みタブをクリックします。

または

  1. Jenkins URLに直接移動します:{Your Jenkins base URL}/pluginManager/installed
6
James Lawruk

curlおよびjqの場合:

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

このコマンドは、依存関係を事前にインストールできる特別なJenkins plugins.txtファイルで使用される形式で出力を提供します(例:docker image):

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

4
Andrzej Rehmann

見つかった別のオプションの共有 here 資格情報

JENKINS_Host=username:[email protected]: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/ /:/'
4
vishnu

これらは十分な答えではないと思います...多くは、いくつかの余分な内部のステップを伴います。ここに私がそれをした方法があります。

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
2
hhony

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)
1

認証要件なしでマスター上で実行できるソリューションが必要でしたが、ここには表示されませんでした。プラグインdirからすべてのバージョンを取り出すクイック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
1
Kevin Brotcke

インストールされているすべてのプラグインと、それらが http:// jenkins/systemInfo で有効になっているかどうかをリストする表があります

0
tsuna

また、プラグインで利用可能な更新プログラムにも興味があります。そのためには、インストールされたプラグインに関するデータを、ここで入手可能な更新に関する情報とマージする必要があります https://updates.jenkins.io/current/update-center.json .

ダウンロードしたファイルをJSONとして解析するには、2行目をオンラインで読む必要があります(これは巨大です)。

0

Jenkinsバージョン2.125の場合、以下が機能しました。

注:USERNAMEとAPIKEYを言うセクションを、対応するユーザーの有効なUserNameとAPIKeyに置き換えます。ユーザーのAPIキーは、ユーザーの管理ユーザーの選択APIキーオプションで利用できます。

Jenkinsのインストールの開始に時間がかかる場合は、スリープを延長する必要があります。

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
##############
0
gdd1984
# 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}")
    }
0
Brian

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`
0
FunThomas424242

この情報を取得する方法はたくさんありますが、次の2つの方法を書いています。

1。jenkins cliを取得します。

Jenkins CLIを使用すると、コマンドラインからjenkinsサーバーと対話できます。簡単なcurl呼び出しで取得できます。

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

2。groovyスクリプトを作成します。jenkinsスクリプトコンソールからOR

Jenkins APIから受け取った情報を解析するために、groovyスクリプトを作成する必要があります。これにより、各プラグインとそのバージョンが出力されます。以下をplugins.groovyとして保存します。

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

0
user128364