Como instalar um plugin no Jenkins manualmente

119

A instalação de um plugin do Centro de atualização resulta em:

Verificando a conectividade com a Internet Falha ao conectar-se a http://www.google.com/ . Talvez você precise configurar o proxy HTTP? Deploy Plugin Failure - Details hudson.util.IOException2: falha ao baixar de http://updates.jenkins-ci.org/download/plugins/deploy/1.9/deploy.hpi

É possível baixar o plugin e instalá-lo manualmente no Jenkins?

Kishore Tamire
fonte

Respostas:

156

Sim você pode. Baixe o plugin (arquivo * .hpi) e coloque-o no seguinte diretório:

<jenkinsHome>/plugins/

Depois disso, você precisará reiniciar o Jenkins.

Michael Küller
fonte
7
Este método não instala automaticamente quaisquer plug-ins que sejam dependências do plug-in que está sendo instalado. Como tal, não o recomendo e estou votando contra por esse motivo. Por favor, me avise se eu estiver errado e eu anularei meu voto negativo.
Farrukh Najmi
8
Se você for forçado a instalar um plugin manualmente (por qualquer motivo), não conheço nenhum outro método que se encarregará de instalar dependências automaticamente.
Michael Küller
Como posso descobrir onde fica a casa de Jenkins? Usando whereis jenkins?
Negro,
4
Eu encontrei no /var/lib/jenkinsentanto, já existem muitos plug-ins, mas eles terminam com em .jpivez de .hpi. O que devo fazer?
Black
3
O Jenkins renomeia o arquivo de plug-in durante a instalação de .hpi para .jpi, de forma que seja capaz de detectar um novo plug-in para instalar sobre um existente. Veja aqui: stackoverflow.com/questions/30658375/…
Michael Küller
137
  1. Baixe o plugin.
  2. Dentro do Jenkins: Gerenciar JenkinsGerenciar Plugins → Existe uma guia chamada Avançado e nessa página há uma opção para fazer upload de um plugin (a extensão do arquivo deve ser hpi).

Às vezes, ao baixar plug-ins, você pode obter arquivos (.zip) e, em seguida, apenas renomear com (.hpi) e usar a IU para instalar o plug-in.

jfcorugedo
fonte
4
Provavelmente, é mais "seguro" do que stackoverflow.com/a/14953877/627806, pois está passando pelo front-end.
Jon Burgess
Às vezes, isso é necessário se o Jenkins falhar ao iniciar devido a uma configuração incorreta do plug-in. Por exemplo, tive que fazer uma instalação manual por causa desse problema .
dskrvk
1
Tentei instalar este plug-in, mudei zip para hpi e tentei fazer upload da opção avançada em gerenciar plug-ins, mas está apresentando um erroA problem occurred while processing the request. Please check our bug tracker to see if a similar problem has already been reported. If it is already reported, please vote and put a comment on it to let us gauge the impact of the problem. If you think this is a new issue, please file a new issue. When you file an issue, make sure to add the entire stack trace, along with the version of Jenkins and relevant plugins.
Que problema você encontrou? Podemos saber a exceção real?
jfcorugedo
1
Observe que há um limite de tamanho imposto pelo nginx (consulte: [ issues.jenkins-ci.org/browse/JENKINS-32575] ), então você pode precisar alterar a configuração do nginx ou fazer upload manualmente.
Moshe Zvi
22

Se você usa o Docker, deve ler este arquivo: https://github.com/cloudbees/jenkins-ci.org-docker/blob/master/plugins.sh

Exemplo de um Dockerfile pai:

FROM jenkins
COPY plugins.txt /plugins.txt
RUN /usr/local/bin/plugins.sh /plugins.txt

plugins.txt

<name>:<version>
<name2>:<version2>
SergioArcos
fonte
Eu estava tentando resolver isso para docker e encontrei esta resposta. Funciona bem!
Muglio
depende de como o jenkins está instalado. Na minha instalação (apt-get install jenkins), não consegui localizar o arquivo plugin.sh. No entanto, se começarmos DE Jenkins, então ele existe.
hadaytullah
observe que você deve incluir o plug-in e todas as suas dependências em plugins.txt, pois ele não resolverá as dependências transitivas. Por exemplo, o blueocean tem cerca de 10 dependências que você também teria que incluir manualmente.
code4cause
Como uso esse método quando estou executando o docker atrás de um proxy? plugins.shnão pode instalar plug-ins se o proxy não estiver configurado no Jenkins. E não acho que haja um método para configurar o proxy no Jenkins usando Dockerfile.
7_R3X
13

Criei um script simples que faz o seguinte:

  • Baixe um ou mais plug-ins para o diretório de plug-ins
  • Verifique todos os plug-ins nesse diretório em busca de dependências ausentes
  • baixe essas dependências também
  • loop até que nenhuma dependência aberta seja deixada

O script não requer a execução de jenkins - eu o uso para provisionar uma caixa de encaixe.

https://gist.github.com/micw/e80d739c6099078ce0f3

Michael Wyraz
fonte
URL está quebrado agora. Você pode postar novamente o seu roteiro?
Charles Morin,
11

Atualização para Docker: use o script install-plugins.sh . Recebe uma lista de nomes de plugins menos a extensão '-plugin'. Veja a descrição aqui .

install-plugins.sh substitui o plugins.sh obsoleto que agora avisa:

WARN: plugins.sh is deprecated, please switch to install-plugins.sh

Para usar um plugins.txt de acordo com plugins.sh, consulte este problema e esta solução alternativa:

RUN /usr/local/bin/install-plugins.sh $(cat /usr/share/jenkins/plugins.txt | tr '\n' ' ')

satolizard
fonte
10

Às vezes, quando você baixa plug-ins, pode obter arquivos (.zip) e então simplesmente renomear com (.hpi) e extrair todos os plug-ins e mover para o <jenkinsHome>/plugins/diretório.

Dnyaneshwar Kalme
fonte
4

A resposta aceita é correta, mas certifique-se de instalar também todas as dependências necessárias. Instalar usando a CLI ou web parece resolver isso, mas meus plug-ins não apareciam no navegador ou usando java -jar jenkins-cli.jar -s http://localhost:8080 list-pluginsaté que eu também instalasse as dependências.

jdf
fonte
1
Eu criei uma essência simples para listar todas as versões mais recentes necessárias de dependências de plug-in da web (verifica toda a árvore de dependências): gist.github.com/Lucasus/1a6b8df71425c790361c
Łukasz Wiatrak
2

No meu caso, precisei instalar um plug-in em um servidor de compilação offline que está executando um Windows Server (a versão não importa aqui). Já instalei o Jenkins no meu laptop para testar as alterações com antecedência e ele está sendo executado no localhost: 8080 como um serviço do Windows.

Portanto, se você estiver disposto a reservar um tempo para configurar o Jenkins em uma máquina com conexão à Internet e levar essas alterações para o servidor offline Jenkins (funciona, confirmado por mim!), Siga estas etapas:

  • Jenkins no meu laptop: Abra o Jenkins, http: // localhost: 8080
  • Navigator: Gerenciar Jenkins | Baixe o plugin sem opção de instalação
  • Windows Explorer: copie o arquivo de plug-in baixado que está localizado na pasta "c: \ program files (x86) \ Jenkins \ plugins" (ou seja, role-strategy.jpi)
  • Cole-o em uma pasta compartilhada no servidor offline
  • Pare o serviço Jenkins (servidor offline Jenkins) por meio de serviços de componentes, serviço Jenkins
  • Copie o arquivo de plug-in (ou seja, role-strategy.jpi) na pasta "c: \ program files (x86) \ Jenkins \ plugins" no servidor (Offline Jenkins)
  • Reinicie o Jenkins e voila! Deve ser instalado.
Yyardim
fonte
2

As respostas dadas funcionam, com plugins adicionados.

Se você deseja substituir / atualizar um plugin embutido como o plugin de credenciais, que tem dependências, então você deve usar o frontend. Para automatizar eu uso:

 curl -i -F [email protected] http://jenkinshost/jenkins/pluginManager/uploadPlugin
bbaassssiiee
fonte
1

Esta é uma forma de copiar plug-ins de uma caixa do Jenkins para outra.

Copie sobre o diretório de plug-ins:

scp -r jenkins-box.url.com:/var/lib/jenkins/plugins .

Compacte os plug-ins:

tar cvfJ plugins.tar.xz plugins

Copie-os para a outra caixa do Jenkins:

scp plugins.tar.xz different-jenkins-box.url.com
ssh different-jenkins-box.url.com "tar xvfJ plugins.tar.xz -C /var/lib/jenkins"

Reinicie o Jenkins.

jmunsch
fonte
0

Para instalar o plugin "git" com todas as suas dependências:

curl -XPOST http://localhost:8080/pluginManager/installNecessaryPlugins -d '<install plugin="git@current" />'

Aqui, o plugin instalado é git; a versão, especificada como @currenté ignorada pelo Jenkins. Jenkins está executando na localhostporta 8080, altere isso conforme necessário. Pelo que eu sei, esta é a maneira mais simples de instalar um plugin com todas as suas dependências 'manualmente'. Testado em Jenkinsv1.644

m.kocikowski
fonte