Wie kann ich eine Liste der installierten Jenkins-Plugins erhalten?
Ich habe das Jenkins Remote Access API-Dokument durchsucht, aber es wurde nicht gefunden. Soll ich Jenkins 'CLI verwenden? Gibt es ein Dokument oder ein Beispiel?
quelle
Wie kann ich eine Liste der installierten Jenkins-Plugins erhalten?
Ich habe das Jenkins Remote Access API-Dokument durchsucht, aber es wurde nicht gefunden. Soll ich Jenkins 'CLI verwenden? Gibt es ein Dokument oder ein Beispiel?
Sie können die Informationen über die Jenkins Script Console abrufen, auf die Sie unter zugreifen können http://<jenkins-url>/script
. (Vorausgesetzt, Sie sind angemeldet und verfügen über die erforderlichen Berechtigungen).
Geben Sie das folgende Groovy-Skript ein , um die installierten Plugins zu durchlaufen und die relevanten Informationen auszudrucken:
Jenkins.instance.pluginManager.plugins.each{
plugin ->
println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}")
}
Die Ergebnisliste wird wie folgt gedruckt (abgeschnitten):
Diese Lösung ähnelt einer der obigen Antworten , da sie Groovy verwendet, aber hier verwenden wir stattdessen die Skriptkonsole. Die Skriptkonsole ist äußerst hilfreich bei der Verwendung von Jenkins.
Aktualisieren
Wenn Sie eine sortierte Liste bevorzugen, können Sie diese sort
Methode aufrufen :
def pluginList = new ArrayList(Jenkins.instance.pluginManager.plugins)
pluginList.sort { it.getShortName() }.each{
plugin ->
println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}")
}
Passen Sie den Abschluss nach Ihren Wünschen an (z. B. wird er hier nach dem Kurznamen sortiert, im Beispiel nach dem Anzeigenamen).
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()}" }
Heutzutage verwende ich den gleichen Ansatz wie die von @Behe unten beschriebene Antwort anstelle von https://stackoverflow.com/a/35292719/1597808
Sie können die API in Kombination mit Tiefen-, XPath- und Wrapper-Argumenten verwenden.
Im Folgenden wird die API des pluginManager abgefragt, um alle installierten Plugins aufzulisten, jedoch nur, um deren Kurznamen- und Versionsattribute zurückzugeben. Sie können natürlich zusätzliche Felder abrufen, indem Sie '|' hinzufügen. bis zum Ende des XPath-Parameters und Angabe des Musters zur Identifizierung des Knotens.
Das Wrapper-Argument ist in diesem Fall erforderlich, da es als Teil des Ergebnisses mehr als einen Knoten zurückgibt, da mehrere Felder mit dem XPath- und mehreren Plugin-Knoten abgeglichen werden.
Es ist wahrscheinlich nützlich, die folgende URL in einem Browser zu verwenden, um zu sehen, welche Informationen zu den Plugins verfügbar sind, und dann zu entscheiden, was Sie mit XPath einschränken möchten:
quelle
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
Jenkins 1,588 (2 nd November 2014) und 1.647 (4 th Februar 2016)
Jenkins> Jenkins verwalten
System Information
Plugins
quelle
Die Jenkins-CLI unterstützt das Auflisten aller installierten Plugins:
java -jar jenkins-cli.jar -s http://localhost:8080/ list-plugins
quelle
list-plugins
CLI-Befehl muss der Benutzer nicht wie der Befehl über die Berechtigung Overall / RunScripts verfügengroovy
.Verwenden Sie Jenkins CLI wie folgt:
=
im Aufruf bedeutet "von Standardeingabe lesen" .pluginEnumerator.groovy enthält den folgenden Groovy-Code:Wenn Sie mit dem Code spielen möchten, finden Sie hier die Dokumentation zur Jenkins Java-API .
quelle
isActive()
API, die Sie im groovigen Skript in dieser Antwort verwenden können, um den Status des Plugins abzurufen. Siehe javadoc.jenkins-ci.org/hudson/PluginWrapper.html#isActive () .Wenn Sie in einer Docker-Umgebung arbeiten und die Plugin-Liste in einem plugins.txt-Format ausgeben möchten, um diese an install_scripts.sh zu übergeben, verwenden Sie diese Skripte in der
http://{jenkins}/script
Konsole:quelle
:latest
am Ende hinzuzufügen :println ("${plugin.getShortName()}:latest")
Die Antworten hier waren etwas unvollständig. Und ich musste Informationen aus anderen Quellen zusammenstellen, um die Plugin-Liste tatsächlich zu erhalten.
1. Holen Sie sich die Jenkins CLI
Über die Jenkins-CLI können wir über die Befehlszeile mit unserem Jenkins-Server interagieren. Wir können es mit einem einfachen Curl Call bekommen.
2. Erstellen Sie ein Groovy-Skript zum Parsen (dank malenkiy_scot).
Speichern Sie Folgendes als
plugins.groovy
.3. Rufen Sie die Jenkins-API auf, um Plugin-Ergebnisse zu erhalten
Rufen Sie den Jenkins-Server an (
localhost:8080
hier) mit Ihrem Login-Benutzernamen und Passwort an, während Sie auf das Groovy-Skript verweisen:Die Ausgabe in plugins.txt sieht folgendermaßen aus:
quelle
Behes Antwort mit Sortier-Plugins funktionierte auf meinem Jenkins-Computer nicht. Ich habe den Fehler erhalten,
java.lang.UnsupportedOperationException
weil ich versucht habe, eine unveränderliche Sammlung zu sortieren, dJenkins.instance.pluginManager.plugins
. H. Einfache Korrektur für den Code:Verwenden Sie die
http://<jenkins-url>/script
URL, um den Code auszuführen.quelle
displayName
beim Ausdrucken nach sortieren.shortName
Dies war sehr verwirrend, da einige Plugins für beide nicht alphabetisch gleich sind und eine Liste angezeigt wird, die nicht sortiert erscheint. Ändern,it.displayName
umit.shortName
dies schön zu lösen.Wenn Sie ein Jenkins-Administrator sind, können Sie die Jenkins-Systeminformationsseite verwenden:
quelle
/systeminfo
funktioniert nicht (HTTP 404) auf Jenkins 1.594http://localhost:8080/systemInfo
einigen Servern wird zwischen Groß- und Kleinschreibung unterschieden. Beachten Sie auch, dass der aktuell angemeldete Benutzer über die Berechtigung "Gesamt / Verwalten" verfügen muss.Mit
curl
undjq
:Dieser Befehl gibt eine Ausgabe in einem Format aus, das von einer speziellen Jenkins-
plugins.txt
Datei verwendet wird, mit der Sie Abhängigkeiten vorinstallieren können (z. B. in einem Docker-Image):Beispiel für
plugins.txt
: https://github.com/hoto/jenkinsfile-examples/blob/master/source/jenkins/usr/share/jenkins/plugins.txtquelle
Von der Jenkins-Homepage:
Oder
quelle
Teilen Sie eine andere hier gefundene Option mit Anmeldeinformationen
quelle
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
Ich wollte eine Lösung, die auf dem Master ohne Authentifizierungsanforderungen ausgeführt werden kann, und habe sie hier nicht gesehen. Ich habe ein schnelles Bash-Skript erstellt, das alle Versionen aus dem Plugins-Verzeichnis herausholt.
quelle
grep Plugin-Version */META-INF/MANIFEST.MF | sed -e 's!/META-INF/MANIFEST.MF:Plugin-Version: !:!g' > ../plugins2.txt
Ich denke, diese Antworten sind nicht gut genug ... viele beinhalten ein paar zusätzliche Schritte unter der Haube. So habe ich es gemacht.
... weil die JSON-Ausgabe nach dem Aufruf der API verbraucht werden muss.
quelle
Eine weitere Option für Python-Benutzer:
quelle
quelle
Unter http: // jenkins / systemInfo gibt es eine Tabelle, in der alle installierten Plugins aufgelistet sind und ob sie aktiviert sind oder nicht
quelle
Wenn Jenkins in einem Jenkins Docker-Container ausgeführt wird, können Sie diese Befehlszeile in Bash verwenden:
quelle
Für Jenkins Version 2.125 funktionierte Folgendes.
HINWEIS: Ersetzen Sie Abschnitte mit den Angaben USERNAME und APIKEY durch einen gültigen Benutzernamen und APIKey für den entsprechenden Benutzer. Der API-Schlüssel für einen Benutzer ist über Benutzer verwalten → Benutzer auswählen → API-Schlüssel verfügbar Option .
Möglicherweise müssen Sie den Ruhezustand verlängern, wenn der Start Ihrer Jenkins-Installation länger dauert.
Durch die Initiierung
yum update -y
wird auch die Version aktualisiert, wenn Sie Jenkins ebenfalls mit yum installiert haben.quelle
Es gibt viele Möglichkeiten, diese Informationen abzurufen, aber ich schreibe zwei Möglichkeiten wie folgt: -
1. Holen Sie sich die Jenkins Cli.
Über die Jenkins-CLI können wir über die Befehlszeile mit unserem Jenkins-Server interagieren. Wir können es mit einem einfachen Curl Call bekommen.
curl 'localhost:8080/jnlpJars/jenkins-cli.jar' > jenkins-cli.jar
2. Erstellen Sie ein grooviges Skript. ODER von Jenkins Skriptkonsole
Wir müssen ein grooviges Skript erstellen, um die Informationen zu analysieren, die wir von der Jenkins-API erhalten. Dadurch wird jedes Plugin mit seiner Version ausgegeben. Speichern Sie Folgendes als plugins.groovy.
def plugins = jenkins.model.Jenkins.instance.getPluginManager().getPlugins() plugins.each {println "${it.getShortName()}: ${it.getVersion()}"}
quelle
Sie können auch interessiert sein, welche Updates für Plugins verfügbar sind. Dazu müssen Sie die Daten zu installierten Plugins mit Informationen zu Updates zusammenführen, die hier verfügbar sind: https://updates.jenkins.io/current/update-center.json .
Um die heruntergeladene Datei als JSON zu analysieren, müssen Sie die zweite Zeile (die riesig ist) online lesen.
quelle