Как я могу получить список установленных плагинов Jenkins?
Я искал документ API удаленного доступа Jenkins, но он не был найден. Должен ли я использовать CLI Дженкинса? Есть ли документ или пример?
источник
Как я могу получить список установленных плагинов Jenkins?
Я искал документ API удаленного доступа Jenkins, но он не был найден. Должен ли я использовать CLI Дженкинса? Есть ли документ или пример?
Вы можете получить информацию, используя консоль сценариев Jenkins, доступную при посещении http://<jenkins-url>/script
. (Учитывая, что вы вошли в систему и имеете необходимые разрешения).
Введите следующий скрипт Groovy, чтобы перебрать установленные плагины и распечатать соответствующую информацию:
Jenkins.instance.pluginManager.plugins.each{
plugin ->
println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}")
}
Он напечатает список результатов примерно так (обрезано):
Это решение похоже на один из приведенных выше ответов в том, что оно использует Groovy, но здесь мы вместо этого используем консоль сценария. Консоль сценария чрезвычайно полезна при использовании Jenkins.
Обновить
Если вы предпочитаете отсортированный список, вы можете вызвать этот sort
метод :
def pluginList = new ArrayList(Jenkins.instance.pluginManager.plugins)
pluginList.sort { it.getShortName() }.each{
plugin ->
println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}")
}
Настройте Closure по своему вкусу (например, здесь он отсортирован по shortName, в примере он отсортирован по DisplayName)
Jenkins.instance.pluginManager.plugins.sort({it.getDisplayName()}).each{ plugin -> println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}") }
echo 'script=Jenkins.instance.pluginManager.plugins.each{ plugin -> println ("${plugin.getShortName()}:${plugin.getVersion()}") } null' \ | no_proxy=localhost curl --netrc --silent --data-binary @- -X POST "http://localhost:8080/jenkins/scriptText" | sort > plugins.txt
jenkins.model.Jenkins.instance.getPluginManager().getPlugins().stream().sorted().each { println "${it.getShortName()} | ${it.getVersion()} | ${it.getDisplayName()}" }
В эти дни я использую тот же подход, что и ответ, описанный @Behe ниже вместо https://stackoverflow.com/a/35292719/1597808
Вы можете использовать API в сочетании с аргументами глубины, XPath и оболочки.
Следующее запросит API модуля pluginManager, чтобы получить список всех установленных плагинов, но только чтобы вернуть их атрибуты shortName и version. Конечно, вы можете получить дополнительные поля, добавив '|' до конца параметра XPath и указания шаблона для идентификации узла.
В этом случае требуется аргумент-обертка, поскольку он возвращает более одного узла как часть результата, поскольку он сопоставляет несколько полей с XPath и несколькими подключаемыми узлами.
Вероятно, полезно использовать следующий URL в браузере, чтобы увидеть, какая информация о плагинах доступна, а затем решить, что вы хотите ограничить с помощью XPath:
источник
curl 'http://192.168.197.133:8080/pluginManager/api/xml?depth=1&xpath=/*/*/shortName|/*/*/version&wrapper=plugins' | perl -pe 's/.*?<shortName>([\w-]+).*?<version>([^<]+)()(<\/\w+>)+/\1 \2\n/g'
curl -s -k "http://jenkins/pluginManager/api/json?depth=1" | jq '.plugins[]|{shortName, version,longName}' -c
Дженкинс 1,588 (2 - е ноября 2014 г.) и 1,647 (4 - е февраля, 2016)
Дженкинс> Управление Дженкинс
Системная информация
Плагины
источник
CLI Jenkins поддерживает перечисление всех установленных плагинов:
java -jar jenkins-cli.jar -s http://localhost:8080/ list-plugins
источник
list-plugins
CLI не требует, чтобы у пользователя было полное разрешение / RunScripts, как уgroovy
команды.Используйте Jenkins CLI следующим образом:
=
в вызове означает «читать со стандартного ввода» . pluginEnumerator.groovy содержит следующий код Groovy:Если вы хотите поиграть с кодом, вот документация Jenkins Java API .
источник
isActive()
этом ответе есть API- интерфейс, который вы можете использовать в скрипте groovy для получения состояния плагина. См. Javadoc.jenkins-ci.org/hudson/PluginWrapper.html#isActive () .Если вы работаете в среде докера и хотите вывести список плагинов в формате plugins.txt, чтобы передать его в install_scripts.sh, используйте следующие сценарии в
http://{jenkins}/script
консоли:источник
:latest
в конец:println ("${plugin.getShortName()}:latest")
Ответы здесь были несколько неполными. И мне пришлось собирать информацию из других источников, чтобы фактически получить список плагинов.
1. Получить Дженкинс CLI
CLI Jenkins позволит нам взаимодействовать с нашим сервером Jenkins из командной строки. Мы можем получить это с помощью простого вызова curl.
2. Создать скрипт Groovy для разбора (спасибо malenkiy_scot)
Сохраните следующее как
plugins.groovy
.3. Позвоните в Jenkins API для получения результатов плагинов.
Вызовите сервер Jenkins (
localhost:8080
здесь), указав свое имя пользователя и пароль для входа, ссылаясь на скрипт Groovy:Вывод в plugins.txt выглядит следующим образом:
источник
Ответ Бихе с сортировкой плагинов не работал на моей машине Дженкинс. Я получил сообщение об ошибке
java.lang.UnsupportedOperationException
из - за пытаюсь разобраться непреложными коллекциями ИЭJenkins.instance.pluginManager.plugins
. Простое исправление для кода:Используйте
http://<jenkins-url>/script
URL для запуска кода.источник
displayName
времени распечатыванияshortName
, это очень сбивает с толку, так как некоторые плагины не одинаковы для обоих по алфавиту, и в результате получается список, который не выглядит отсортированным. Изменениеit.displayName
кit.shortName
Решает это красиво.Если вы являетесь администратором Jenkins, вы можете использовать информационную страницу системы Jenkins:
источник
/systeminfo
не работает (HTTP 404) на Jenkins 1.594http://localhost:8080/systemInfo
некоторые серверы чувствительны к регистру. Также обратите внимание, что для этого требуется, чтобы в данный момент вошедший в систему пользователь имел разрешение «Общий / Администратор».С
curl
иjq
:Эта команда выводит данные в формате, используемом специальным
plugins.txt
файлом Jenkins, который позволяет предварительно установить зависимости (например, в образе докера):Пример
plugins.txt
: https://github.com/hoto/jenkinsfile-examples/blob/master/source/jenkins/usr/share/jenkins/plugins.txtисточник
С домашней страницы Дженкинс:
Или
источник
Совместное использование другого варианта, найденного здесь, с учетными данными
источник
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
Я хотел решение, которое могло бы работать на master без каких-либо требований авторизации и не видел его здесь. Я сделал быстрый скрипт bash, который вытащит все версии из каталога плагинов.
источник
grep Plugin-Version */META-INF/MANIFEST.MF | sed -e 's!/META-INF/MANIFEST.MF:Plugin-Version: !:!g' > ../plugins2.txt
Еще один вариант для пользователей Python:
источник
Я думаю, что это не достаточно хороший ответ (ы) ... многие включают в себя пару дополнительных шагов под капотом. Вот как я это сделал.
... потому что вывод JSON необходимо использовать после вызова API.
источник
Вас также может заинтересовать, какие обновления доступны для плагинов. Для этого вам необходимо объединить данные об установленных плагинах с информацией об обновлениях, доступной здесь https://updates.jenkins.io/current/update-center.json .
Чтобы проанализировать загруженный файл как JSON, вы должны прочитать онлайн вторую строку (которая огромна).
источник
источник
В таблице http: // jenkins / systemInfo приведена таблица со всеми установленными плагинами и с указанием, включены ли они.
источник
Если Jenkins запускается в контейнере Jenkins Docker, вы можете использовать эту командную строку в Bash:
источник
Для версии Jenkins 2.125 сработало следующее.
ПРИМЕЧАНИЕ. Замените разделы с именами USERNAME и APIKEY действительными UserName и APIKey для этого соответствующего пользователя. Ключ API для пользователя доступен через Управление пользователями → Выбрать пользователя → Ключ API .
Возможно, вам придется продлить сон, если установка Jenkins занимает больше времени для запуска.
Инициация
yum update -y
также обновит версию, если вы установили Jenkins также с помощью yum.источник
Есть много способов получить эту информацию, но я пишу двумя способами, как показано ниже:
1. Получить Дженкинс кли.
CLI jenkins позволит нам взаимодействовать с нашим сервером jenkins из командной строки. Мы можем получить это с помощью простого вызова curl.
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()}"}
источник