Как получить список установленных плагинов Jenkins с паролем имени и версии

Как я могу получить список установленных плагинов Jenkins?

Я искал документ API удаленного доступа Jenkins, но он не был найден. Должен ли я использовать CLI Jenkins? Есть ли документ или пример?

Ответ 1

Вы можете получить информацию с помощью Jenkins Script Console, доступ к которой можно получить, посетив http://<jenkins-url>/script. (Учитывая, что вы вошли в систему и получили необходимые разрешения).

Screenshot of the Script Console

Введите следующий Groovy Script, чтобы перебрать установленные плагины и распечатать соответствующую информацию:

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

Он распечатает список результатов, подобный этому (обрезанный):

SScreenshot из  Script output

Эти решения похожи на один из ответов выше в том, что он использует Groovy, но вместо этого мы используем консоль Script. Консоль Script чрезвычайно полезна при использовании Jenkins.

Обновление

Если вы предпочитаете отсортированный список, вы можете вызвать этот sort метод:

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

Отрегулируйте закрытие по вашему желанию.

Ответ 2

В эти дни я использую тот же подход, что и ответ, описанный ниже @Behe, вместо fooobar.com/questions/79472/...


Вы можете использовать API в сочетании с аргументами глубины, XPath и оболочки.

Следующее будет запрашивать API pluginManager для отображения всех подключаемых модулей, но только для возврата их атрибутов shortName и версии. Вы можете, конечно, получить дополнительные поля, добавив '|' до конца параметра 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

Ответ 3

Дженкинс 1.588 (2 nd от ноября 2014 года) и 1.647 (4 th от февраля 2016 года )

  • Дженкинs > Управление Дженкинсом

    введите описание изображения здесь

  • Информация о системе

    введите описание изображения здесь

  • Плагины

    введите описание изображения здесь

Ответ 4

Используйте 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 документации.

Ответ 5

CLI Jenkins поддерживает список всех установленных плагинов:

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

Ответ 6

Ответ здесь был несколько неполным. И мне пришлось скомпилировать информацию из других источников, чтобы фактически получить список плагинов.

1. Получите CLI Jenkins

CLI Jenkins позволит нам взаимодействовать с нашим сервером Jenkins из командной строки. Мы можем получить его с помощью простого звонка.

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. Вызовите API Jenkins для результатов плагинов.

Вызовите сервер 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

Ответ 7

Если вы работаете в среде докеров и хотите вывести список плагинов в формате plugins.txt, чтобы передать это в файл install_scripts.sh, используйте этот скрипт в консоли http://{jenkins}/script

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

Ответ 8

Ответ 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 для запуска кода.

Ответ 9

Если вы являетесь администратором Jenkins, вы можете использовать страницу системной информации Jenkins:

http://<jenkinsurl>/systemInfo

Ответ 10

На домашней странице Дженкинса:

  1. Нажмите " Управление Дженкинсом".
  2. Нажмите " Управление плагинами".
  3. Перейдите на вкладку " Установленные ".

Или же

  1. Перейдите прямо к URL Jenkins: {Ваш базовый URL Jenkins}/pluginManager/установлен

Ответ 11

Поделиться другой опцией здесь с учетными данными

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/ /:/'

Ответ 12

С curl и jq:

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

Эта команда дает результат в формате, используемом специальным файлом plugins.txt Jenkins, который позволяет предварительно установить зависимости (например, изображение докеров):

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

Ответ 13

Я думаю, что это недостаточно хорошие ответы (ответы)... многие из них связаны с несколькими дополнительными шагами под капотом. Вот как я это сделал.

sudo apt-get install jq

... потому что вывод JSON нужно потреблять после вызова API.

#!/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 your list: "
cat plugin-list

Ответ 14

Я хотел найти решение, которое могло бы работать с мастером без каких-либо требований к авторизации и не рассматривало его здесь. Я сделал быстрый скрипт 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

Ответ 15

Другой вариант для пользователей 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)

Ответ 16

Существует таблица, в которой перечислены все установленные плагины и включены ли они в http://jenkins/systemInfo

Ответ 17

Если 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'

Ответ 18

Для Jenkins версии 2.125 было выполнено следующее.

ПРИМЕЧАНИЕ. Заменяйте разделы, которые говорят USERNAME и APIKEY, с допустимым именем пользователя и APIKey для этого соответствующего пользователя. Ключ API для пользователя доступен с помощью кнопки "Управление пользователями" → "Выбрать пользователя" → "Ключ API".

Возможно, вам придется продлить сон, если ваша установка Дженкинса займет больше времени, чтобы начать.

yum update -y инициализации yum update -y также обновит версию, если вы установили Jenkins с помощью yum.

#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
##############

Ответ 19

Есть много способов получить эту информацию, но я пишу два способа, как показано ниже:

1. Получить jenkins cli.

CLI jenkins позволит нам взаимодействовать с нашим сервером jenkins из командной строки. Мы можем получить его с помощью простого звонка.

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

2. Создайте отличный скрипт. ИЛИ из консоли сценария jenkins

Нам нужно создать отличный скрипт для анализа информации, которую мы получаем от API jenkins. Это выведет каждый плагин с его версией. Сохраните следующее как plugins.groovy.

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

Ответ 20

Вам также может быть интересно, какие обновления доступны для плагинов. Для этого вам необходимо объединить данные об установленных плагинах с информацией об обновлениях, доступных здесь: https://updates.jenkins.io/current/update-center.json.

Чтобы проанализировать загруженный файл как JSON, вы должны прочитать онлайн вторую строку (которая огромна).

Ответ 21

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