설치된 Jenkins 플러그인 목록을 얻으려면 어떻게해야합니까?
Jenkins Remote Access 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()}")
}
원하는대로 클로저를 조정하십시오 (예 : 여기에서는 shortName으로 정렬되며, 예에서는 DisplayName으로 정렬 됨).
답변
요즘 나는 https://stackoverflow.com/a/35292719/1597808 대신 @Behe에 설명 된 답변과 동일한 접근법을 사용합니다.
깊이, 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
답변
답변
Jenkins CLI는 설치된 모든 플러그인 나열을 지원합니다.
java -jar jenkins-cli.jar -s http://localhost:8080/ list-plugins
답변
다음과 같이 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 문서가 있습니다.
답변
도커 환경에서 작업하고 플러그인 목록을 plugins.txt 형식으로 출력하여 install_scripts.sh에 전달하려면 http://{jenkins}/script
콘솔 에서 다음 스크립트를 사용하십시오 .
- 이 버전은 특정 패키지 버전을 얻는 데 유용합니다
Jenkins.instance.pluginManager.plugins.each{
plugin ->
println ("${plugin.getShortName()}:${plugin.getVersion()}")
}
- 최신 버전의 플러그인 만 원한다면 이것을 사용할 수 있습니다 (팁에 @KymikoLoco 감사합니다)
Jenkins.instance.pluginManager.plugins.each{
plugin ->
println ("${plugin.getShortName()}:latest")
}
답변
여기에 대한 답변은 다소 불완전했습니다. 그리고 실제로 플러그인 목록을 얻기 위해 다른 소스의 정보를 컴파일해야했습니다.
1. Jenkins CLI 받기
Jenkins CLI를 사용하면 명령 줄에서 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. 플러그인 결과를 위해 Jenkins API 호출
localhost:8080
Groovy 스크립트를 참조하면서 로그인 사용자 이름과 비밀번호로 Jenkins 서버 ( 여기)를 호출하십시오 .
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
