Como posso obter uma lista dos plugins Jenkins instalados?
Pesquisei o documento da API de acesso remoto Jenkins, mas ele não foi encontrado. Devo usar a CLI do Jenkins? Existe um documento ou exemplo?
fonte
Como posso obter uma lista dos plugins Jenkins instalados?
Pesquisei o documento da API de acesso remoto Jenkins, mas ele não foi encontrado. Devo usar a CLI do Jenkins? Existe um documento ou exemplo?
Você pode recuperar as informações usando o Jenkins Script Console, que pode ser acessado visitando http://<jenkins-url>/script
. (Como você está logado e possui as permissões necessárias).
Digite o seguinte script Groovy para percorrer os plugins instalados e imprimir as informações relevantes:
Jenkins.instance.pluginManager.plugins.each{
plugin ->
println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}")
}
Irá imprimir a lista de resultados como esta (cortada):
Essas soluções são semelhantes a uma das respostas acima , pois ele usa o Groovy, mas aqui estamos usando o console de scripts. O console de script é extremamente útil ao usar o Jenkins.
Atualizar
Se você preferir uma lista classificada, pode chamar este sort
método :
def pluginList = new ArrayList(Jenkins.instance.pluginManager.plugins)
pluginList.sort { it.getShortName() }.each{
plugin ->
println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}")
}
Ajuste o Closure ao seu gosto (por exemplo, aqui é classificado pelo shortName, no exemplo, pelo 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()}" }
Hoje em dia, uso a mesma abordagem da resposta descrita por @Behe abaixo https://stackoverflow.com/a/35292719/1597808
Você pode usar a API em combinação com os argumentos de profundidade, XPath e wrapper.
A seguir, você consultará a API do pluginManager para listar todos os plugins instalados, mas apenas para retornar seus atributos shortName e versão. Obviamente, você pode recuperar campos adicionais adicionando '|' até o final do parâmetro XPath e especificando o padrão para identificar o nó.
O argumento do wrapper é necessário nesse caso, porque está retornando mais de um nó como parte do resultado, pois está correspondendo a vários campos com o XPath e vários nós do plug-in.
Provavelmente é útil usar o seguinte URL em um navegador para ver quais informações nos plug-ins estão disponíveis e depois decidir o que você deseja limitar usando o XPath:
fonte
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 de novembro de 2014) e 1,647 (4 th de fevereiro de 2016)
Jenkins> Gerenciar Jenkins
Informação do sistema
Plugins
fonte
A CLI do Jenkins suporta a listagem de todos os plugins instalados:
java -jar jenkins-cli.jar -s http://localhost:8080/ list-plugins
fonte
list-plugins
comando da CLI não exige que o usuário tenha a permissão Geral / RunScripts como ogroovy
comando.Use a Jenkins CLI assim:
=
na chamada significa 'ler da entrada padrão' . pluginEnumerator.groovy contém o seguinte código Groovy:Se você gostaria de brincar com o código, aqui está a documentação da API Java do Jenkins .
fonte
isActive()
API que você pode usar no script groovy nesta resposta para obter o estado do plug-in. Consulte javadoc.jenkins-ci.org/hudson/PluginWrapper.html#isActive () .Se você estiver trabalhando em um ambiente de docker e quiser gerar a lista de plug-ins no formato plugins.txt para passar isso para o install_scripts.sh, use estes scripts no
http://{jenkins}/script
console:fonte
:latest
até o final:println ("${plugin.getShortName()}:latest")
As respostas aqui eram um tanto incompletas. E eu tive que compilar informações de outras fontes para realmente adquirir a lista de plugins.
1. Obtenha a CLI do Jenkins
A CLI Jenkins nos permitirá interagir com nosso servidor Jenkins a partir da linha de comando. Podemos obtê-lo com uma chamada simples.
2. Crie um script Groovy para análise (graças a malenkiy_scot)
Salve o seguinte como
plugins.groovy
.3. Ligue para a API Jenkins para obter resultados do plug-in
Ligue para o servidor Jenkins (
localhost:8080
aqui) com seu nome de usuário e senha de login enquanto faz referência ao script Groovy:A saída para plugins.txt é assim:
fonte
A resposta de Behe com a classificação de plug-ins não funcionou na minha máquina Jenkins. Eu recebi o erro
java.lang.UnsupportedOperationException
devido a tentar classificar uma coleção imutável, ou sejaJenkins.instance.pluginManager.plugins
. Correção simples para o código:Use o
http://<jenkins-url>/script
URL para executar o código.fonte
displayName
impressãoshortName
, isso foi muito confuso, pois alguns plugins não são alfabeticamente os mesmos para ambos, e resulta em uma lista que não aparece classificada. Mudarit.displayName
parait.shortName
resolve isso muito bem.Se você é um administrador Jenkins, pode usar a página de informações do sistema Jenkins:
fonte
/systeminfo
não funciona (HTTP 404) em Jenkins 1.594http://localhost:8080/systemInfo
alguns servidores diferenciam maiúsculas de minúsculas. Observe também que ele requer que o usuário conectado no momento tenha permissão Geral / Administrar.Com
curl
ejq
:Este comando fornece a saída em um formato usado pelo
plugins.txt
arquivo Jenkins especial que permite pré-instalar dependências (por exemplo, em uma imagem do docker):Exemplo de a
plugins.txt
: https://github.com/hoto/jenkinsfile-examples/blob/master/source/jenkins/usr/share/jenkins/plugins.txtfonte
Na página inicial do Jenkins:
Ou
fonte
Compartilhando outra opção encontrada aqui com credenciais
fonte
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
Eu queria uma solução que pudesse ser executada no master sem nenhum requisito de autenticação e não a vi aqui. Eu criei um script bash rápido que retirará todas as versões do diretório de plugins.
fonte
grep Plugin-Version */META-INF/MANIFEST.MF | sed -e 's!/META-INF/MANIFEST.MF:Plugin-Version: !:!g' > ../plugins2.txt
Outra opção para usuários do Python:
fonte
Acho que essas respostas não são boas o suficiente ... muitas envolvem algumas etapas extras ocultas. Aqui está como eu fiz isso.
... porque a saída JSON precisa ser consumida depois que você chama a API.
fonte
Você também pode estar interessado em quais atualizações estão disponíveis para plug-ins. Para isso, é necessário mesclar os dados sobre plug-ins instalados com informações sobre atualizações disponíveis aqui https://updates.jenkins.io/current/update-center.json .
Para analisar o arquivo baixado como um JSON, você deve ler on-line a segunda linha (que é enorme).
fonte
fonte
Há uma tabela listando todos os plugins instalados e se eles estão ou não ativados em http: // jenkins / systemInfo
fonte
Se o Jenkins for executado no contêiner Jenkins Docker, você poderá usar esta linha de comando no Bash:
fonte
Para a versão 2.125 do Jenkins, o seguinte funcionou.
NOTA: Substitua as seções que dizem USERNAME e APIKEY por um UserName e APIKey válidos para o usuário correspondente. A chave da API para um usuário está disponível em Gerenciar usuários → Selecionar usuário → Chave da API .
Pode ser necessário prolongar a suspensão se a instalação do Jenkins demorar mais para iniciar.
A iniciação
yum update -y
também atualizará a versão se você instalou o Jenkins usando o yum.fonte
Existem várias maneiras de obter essas informações, mas estou escrevendo de duas maneiras, como abaixo: -
1. Obtenha o jenkins cli.
A CLI Jenkins nos permitirá interagir com nosso servidor Jenkins a partir da linha de comando. Podemos obtê-lo com uma chamada simples.
curl 'localhost:8080/jnlpJars/jenkins-cli.jar' > jenkins-cli.jar
2. Crie um script groovy. OU do console de scripts jenkins
Precisamos criar um script groovy para analisar as informações que recebemos da API jenkins. Isso produzirá cada plug-in com sua versão. Salve o seguinte como plugins.groovy.
def plugins = jenkins.model.Jenkins.instance.getPluginManager().getPlugins() plugins.each {println "${it.getShortName()}: ${it.getVersion()}"}
fonte