Jak mogę uzyskać listę zainstalowanych wtyczek Jenkins?
Przeszukałem dokument Jenkins Remote Access API, ale nie został znaleziony. Czy powinienem używać interfejsu wiersza polecenia Jenkinsa? Czy jest dokument lub przykład?
źródło
Jak mogę uzyskać listę zainstalowanych wtyczek Jenkins?
Przeszukałem dokument Jenkins Remote Access API, ale nie został znaleziony. Czy powinienem używać interfejsu wiersza polecenia Jenkinsa? Czy jest dokument lub przykład?
Informacje można pobrać za pomocą konsoli Jenkins Script Console, do której można uzyskać dostęp, odwiedzając witrynę http://<jenkins-url>/script
. (Zakładając, że jesteś zalogowany i masz wymagane uprawnienia).
Wprowadź następujący skrypt Groovy, aby iterować po zainstalowanych wtyczkach i wydrukować odpowiednie informacje:
Jenkins.instance.pluginManager.plugins.each{
plugin ->
println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}")
}
Lista wyników zostanie wydrukowana w następujący sposób (obcięta):
To rozwiązanie jest podobne do jednej z powyższych odpowiedzi , ponieważ używa Groovy, ale tutaj używamy zamiast tego konsoli skryptów. Konsola skryptów jest niezwykle pomocna podczas korzystania z Jenkinsa.
Aktualizacja
Jeśli wolisz posortowaną listę, możesz wywołać tę sort
metodę :
def pluginList = new ArrayList(Jenkins.instance.pluginManager.plugins)
pluginList.sort { it.getShortName() }.each{
plugin ->
println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}")
}
Dostosuj zamknięcie do swoich upodobań (np. Tutaj jest sortowane według shortName, w przykładzie jest sortowane według 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()}" }
Obecnie używam tego samego podejścia, co odpowiedź opisana przez @Behe poniżej zamiast https://stackoverflow.com/a/35292719/1597808
Możesz używać interfejsu API w połączeniu z argumentami depth, XPath i wrapper.
Następujące polecenie wyśle zapytanie do interfejsu API pluginManager, aby wyświetlić listę wszystkich zainstalowanych wtyczek, ale tylko w celu zwrócenia ich atrybutów shortName i version. Możesz oczywiście pobrać dodatkowe pola, dodając „|” na końcu parametru XPath i określając wzorzec identyfikujący węzeł.
Argument opakowujący jest wymagany w tym przypadku, ponieważ zwraca więcej niż jeden węzeł jako część wyniku, zarówno pod względem dopasowania wielu pól do XPath, jak i wielu węzłów wtyczki.
Prawdopodobnie przydatne jest użycie następującego adresu URL w przeglądarce, aby zobaczyć, jakie informacje o wtyczkach są dostępne, a następnie zdecydować, co chcesz ograniczyć za pomocą XPath:
źródło
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 od listopada 2014) i 1,647 (4 th of lutego 2016)
Jenkins> Zarządzaj Jenkins
Informacje o systemie
Wtyczki
źródło
Interfejs wiersza polecenia Jenkinsa obsługuje wyświetlanie wszystkich zainstalowanych wtyczek:
java -jar jenkins-cli.jar -s http://localhost:8080/ list-plugins
źródło
list-plugins
polecenie CLI nie wymaga od użytkownika posiadania uprawnienia General / RunScripts, jak togroovy
robi polecenie.Użyj Jenkins CLI w następujący sposób:
=
w wywołaniu oznacza „czytaj ze standardowego wejścia” . pluginEnumerator.groovy zawiera następujący kod Groovy:Jeśli chcesz bawić się kodem, oto dokumentacja Jenkins Java API .
źródło
isActive()
interfejs API, którego możesz użyć w skrypcie groovy w tej odpowiedzi, aby uzyskać stan wtyczki. Zobacz javadoc.jenkins-ci.org/hudson/PluginWrapper.html#isActive () .Jeśli pracujesz w środowisku docker i chcesz wyprowadzić listę wtyczek w formacie plugins.txt, aby przekazać ją do pliku install_scripts.sh, użyj tych skryptów w
http://{jenkins}/script
konsoli:źródło
:latest
na końcu:println ("${plugin.getShortName()}:latest")
Odpowiedzi tutaj były nieco niekompletne. I musiałem skompilować informacje z innych źródeł, aby faktycznie uzyskać listę wtyczek.
1. Pobierz Jenkins CLI
Interfejs wiersza polecenia Jenkins pozwoli nam na interakcję z naszym serwerem Jenkins z wiersza poleceń. Możemy to uzyskać za pomocą prostego zawijania.
2. Utwórz skrypt Groovy do parsowania (dzięki malenkiy_scot)
Zapisz poniższe jako
plugins.groovy
.3. Wywołaj interfejs API Jenkinsa, aby uzyskać wyniki wtyczki
Zadzwoń do serwera Jenkins (
localhost:8080
tutaj), podając swoją nazwę użytkownika i hasło podczas odwoływania się do skryptu Groovy:Dane wyjściowe pliku plugins.txt wyglądają następująco:
źródło
Odpowiedź Behe'ego z sortowaniem wtyczek nie działała na moim komputerze z Jenkinsem. Otrzymałem błąd
java.lang.UnsupportedOperationException
z powodu próbuje uporządkować niezmiennej zebraniu tznJenkins.instance.pluginManager.plugins
. Prosta poprawka dla kodu:Użyj
http://<jenkins-url>/script
adresu URL, aby uruchomić kod.źródło
displayName
podczas drukowaniashortName
, było to bardzo zagmatwane, ponieważ niektóre wtyczki nie są takie same alfabetycznie dla obu i skutkuje listą, która nie pojawia się posortowana. Zmiana,it.displayName
abyit.shortName
ładnie to rozwiązać.Jeśli jesteś administratorem Jenkins, możesz skorzystać ze strony informacji o systemie Jenkins:
źródło
/systeminfo
nie działa (HTTP 404) na Jenkins 1.594http://localhost:8080/systemInfo
niektórych serwerach jest rozróżniana wielkość liter. Zwróć również uwagę, że wymaga to, aby aktualnie zalogowany użytkownik miał uprawnienia Ogólne / Administrowanie.Z
curl
ijq
:To polecenie daje dane wyjściowe w formacie używanym przez specjalny
plugins.txt
plik Jenkins , który umożliwia preinstalację zależności (np. W obrazie dockera):Przykład
plugins.txt
: https://github.com/hoto/jenkinsfile-examples/blob/master/source/jenkins/usr/share/jenkins/plugins.txtźródło
Ze strony głównej Jenkins:
Lub
źródło
Udostępnianie innej opcji znalezionej tutaj z poświadczeniami
źródło
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
Chciałem rozwiązania, które mogłoby działać na serwerze głównym bez żadnych wymagań autoryzacji i nie widziałem go tutaj. Zrobiłem szybki skrypt basha, który wyciągnie wszystkie wersje z wtyczek reż.
źródło
grep Plugin-Version */META-INF/MANIFEST.MF | sed -e 's!/META-INF/MANIFEST.MF:Plugin-Version: !:!g' > ../plugins2.txt
Myślę, że to nie są wystarczająco dobre odpowiedzi ... wiele z nich wymaga kilku dodatkowych kroków pod maską. Oto jak to zrobiłem.
... ponieważ dane wyjściowe JSON muszą zostać wykorzystane po wywołaniu interfejsu API.
źródło
Inna opcja dla użytkowników Pythona:
źródło
źródło
Pod adresem http: // jenkins / systemInfo znajduje się tabela z listą wszystkich zainstalowanych wtyczek i informacją, czy są one włączone
źródło
Jeśli Jenkins działa w kontenerze Jenkins Docker, możesz użyć tego wiersza poleceń w Bash:
źródło
W przypadku wersji Jenkins 2.125 działały następujące rozwiązania.
UWAGA: Zastąp sekcje, które mówią USERNAME i APIKEY, prawidłowymi nazwami użytkownika i APIKey dla tego odpowiedniego użytkownika. Klucz API dla użytkownika jest dostępny w opcji Zarządzaj użytkownikami → Wybierz użytkownika → Klucz API .
Może być konieczne przedłużenie uśpienia, jeśli instalacja Jenkinsa trwa dłużej.
Inicjacja
yum update -y
zaktualizuje również wersję, jeśli zainstalowałeś Jenkins również za pomocą yum.źródło
Istnieje wiele sposobów na pobranie tych informacji, ale piszę dwa sposoby, jak poniżej: -
1. Pobierz Cli Jenkinsa.
Interfejs wiersza poleceń jenkins pozwoli nam na interakcję z naszym serwerem jenkins z wiersza poleceń. Możemy to uzyskać za pomocą prostego zawijania.
curl 'localhost:8080/jnlpJars/jenkins-cli.jar' > jenkins-cli.jar
2. Stwórz wspaniały skrypt. LUB z konsoli skryptu Jenkinsa
Musimy stworzyć świetny skrypt, aby przeanalizować informacje otrzymane z API Jenkinsa. Spowoduje to wyświetlenie każdej wtyczki wraz z jej wersją. Zapisz poniższe jako plugins.groovy.
def plugins = jenkins.model.Jenkins.instance.getPluginManager().getPlugins() plugins.each {println "${it.getShortName()}: ${it.getVersion()}"}
źródło
Możesz być także zainteresowany, jakie aktualizacje są dostępne dla wtyczek. W tym celu musisz połączyć dane o zainstalowanych wtyczkach z informacjami o aktualizacjach dostępnymi tutaj https://updates.jenkins.io/current/update-center.json .
Aby przeanalizować pobrany plik jako JSON, musisz przeczytać online drugą linię (która jest ogromna).
źródło