Estou executando o Jenkins de um usuário que jenkins
foi $PATH
definido como algo e quando entro na interface da web do Jenkins, na janela Propriedades do sistema ( http://$host/systemInfo
) vejo um diferente $PATH
.
Instalei o Jenkins no Centos com o rpm nativo do site do Jenkins. Estou usando o script de inicialização fornecido com a instalação usandosudo /etc/init.d/jenkins start
Alguém pode me explicar por que isso acontece?
jenkins
environment-variables
hudson
Michael
fonte
fonte
echo $PATH
ele corresponde ao que você vê em jenkins?Respostas:
Michael,
Duas coisas:
Quando o Jenkins se conecta a um computador, ele vai para o
sh
shell, e não para obash
shell (pelo menos é o que percebi - posso estar errado). Portanto, quaisquer alterações feitas em $ PATH em seu arquivo bashrc não são consideradas.Além disso, quaisquer mudanças que você fizer em $ PATH em seu shell local (aquele em que você pessoalmente fez ssh) não aparecerão no Jenkins.
Para alterar o caminho que o Jenkins usa, você tem duas opções (AFAIK):
1) Edite seu
/etc/profile
arquivo e adicione os caminhos que você deseja lá2) Vá para a página de configuração do seu escravo e adicione a variável de ambiente
PATH
, com o valor:$PATH:/followed-by/paths/you/want/to/add
Se você usar a segunda opção, as informações do sistema ainda não as mostrarão, mas suas compilações verão os caminhos adicionados.
fonte
Continuei tendo esse problema, mas agora eu apenas adiciono:
Como a primeira etapa do meu processo de construção. Agora todas as minhas regras subsequentes estão carregadas para que o Jenkins opere sem problemas.
fonte
source /etc/profile
como o primeiro comando nessa área de texto Build> Execute Shell> Command./usr/local/bin
é especificado em/etc/paths
, e/etc/paths
é usado por/usr/libexec/path_helper
, e path_helper é executado em/etc/profile
.Você também pode editar o
/etc/sysconfig/jenkins
arquivo para fazer quaisquer alterações nas variáveis de ambiente, etc. Eu simplesmente adicioneisource /etc/profile
ao final do arquivo./etc/profile
tem todas asPATH
configurações de variáveis adequadas . Ao fazer isso, certifique-se de reiniciar o JenkinsEstamos executando o ZendServer CE, que instala o pear, phing, etc. em um caminho diferente, então isso foi útil. Além disso, não recebemos os
LD_LIBRARY_PATH
erros que costumávamos obter com o cliente Oracle e Jenkins.fonte
Eu tentei
/etc/profile
,~/.profile
e~/.bash_profile
nada funcionou. Eu descobri que editar~/.bashrc
para a conta do escravo Jenkins sim.fonte
/etc/profile
nem~/.profile
As informações nesta resposta estão desatualizadas. Você precisa ir para Configure Jenkins> E você pode clicar para adicionar um par de valores-chave Variável de ambiente a partir daí.
por exemplo:
export MYVAR=test
seriaMYVAR
é a chave etest
é o valor.fonte
Na minha instância EC2 mais recente, simplesmente adicionar o novo valor ao PATH do .profile do usuário do Jenkins e reiniciar o tomcat funcionou para mim.
Em uma instância mais antiga onde a configuração é diferente, usar o # 2 da resposta de Sagar foi a única coisa que funcionou (ou seja, .profile, .bash * não funcionou).
fonte
Encontrei dois plug-ins para isso. Um carrega os valores de um arquivo e o outro permite configurar os valores na tela de configuração do trabalho.
Plugin Envfile - Este plugin permite definir variáveis de ambiente por meio de um arquivo. O formato do arquivo deve ser o formato de arquivo de propriedade Java padrão.
Plugin EnvInject - Este plugin torna possível adicionar variáveis de ambiente e executar um script de configuração para configurar um ambiente para o Job.
fonte
Você não poderia simplesmente adicioná-lo como uma variável de ambiente nas configurações do Jenkins:
Gerenciar Jenkins -> Propriedades globais> Variáveis de ambiente: Em seguida, clique em "Adicionar" para adicionar um PATH de propriedade e seu valor ao que você precisa.
fonte
Foi assim que resolvi esse problema irritante:
PATH
Mudei a variável conforme @sagar sugeriu em sua 2ª opção, mas ainda assim obtive umPATH
valor diferente do que esperava.Acabei descobrindo que foi o
EnvInject
plugin que substituiu minhaPATH
variável!Então, eu poderia desinstalar
EnvInject
ou apenas usá-lo para injetar a variável PATH.Como muitos de nossos trabalhos do Jenkins usam esse plug-in, eu não queria desinstalá-lo ...
Então, criei um arquivo:
environment_variables.properties
no meu diretório inicial do Jenkins.Este arquivo contém o valor de ambiente do caminho que eu precisava:
PATH=$PATH:/usr/local/git/bin/
.A partir da interface web Jenkins:
Manage Jenkins -> Configure System
. Nesse ecrã - I assinalada aPrepare jobs environment
opção, e noProperties File Path
campo entrei no caminho para o meu arquivo:/var/lib/jenkins/environment_variables.properties
.Dessa forma, todos os trabalhos do Jenkins que recebemos recebem quaisquer variáveis que coloquei neste
environment_variables.properties
arquivo.fonte
Jenkins também suporta o formato
PATH+<name>
para preceder a qualquer variável, não apenas PATH:Variáveis de ambiente globais ou variáveis de ambiente de nó:
Isso também é compatível com a etapa do pipeline
withEnv
:Apenas tome nota, ele precede a variável. Se precisar ser anexado, você precisará fazer o que as outras respostas mostram.
Veja o documento de etapas do pipeline aqui .
Ou os documentos java sobre EnvVars aqui .
fonte
Eu só tive progresso neste problema depois de um "/etc/init.d/jenkins force-reload". Eu recomendo tentar isso antes de qualquer coisa, e usar isso ao invés de reiniciar.
fonte
No meu Ubuntu 13.04, tentei alguns ajustes antes de conseguir isso:
fonte
Adicionar
em
Jenkins usa sh para que mesmo / etc / profile não funcione para mim. Quando eu adiciono isso, tenho todo o env.
fonte
Solução que funcionou para mim
source ~/.bashrc
Explicação
Primeiro verifiquei que Jenkins estava executando o BASH, com
echo $SHELL
eecho $BASH
(observe que estou colocando explicitamente#!/bin/bash
no topo da textarea no Jenkins, não tenho certeza se isso é um requisito para obter o BASH).source
ing/etc/profile
como outros sugeriram não estava funcionando.Olhando
/etc/profile
eu encontreie inspecionar "$ PS1" descobriu que era nulo. Eu tentei spoofing
$PS1
sem sucesso assimno entanto, isso não produziu o resultado desejado (adicione o restante do
$PATH
que espero ver). Mas se eu disser ao bash para ser interativoo
$PATH
foi alterado como eu esperava.Eu estava tentando descobrir como falsificar adequadamente um shell interativo
/etc/bash.bashrc
para carregá-lo, mas descobri que tudo que eu precisava estava lá dentro~/.bashrc
, então simplesmentesource
resolvi o problema.fonte
#!/bin/bash -el
para dizer ao bash para iniciar como um shell de login. Isso deve fazer com que o bash forneça os arquivos .rc necessáriosEu tentei todas as coisas de cima - não funcionou para mim.
Encontrei duas soluções (ambas para SSH-Slave)
Vá para as configurações do escravo
Adicionar uma nova variável de ambiente
A parte "$ {HOME}" é importante. Isso torna o PATH adicional absoluto. O caminho relativo não funcionou para mim.
Opção II (pipeline-script)
fonte
No Ubuntu, eu apenas edito / etc / default / jenkins e adiciono a fonte / etc / profile no final e funciona para mim.
fonte
Executar o comando com a variável de ambiente definida também é eficaz. Claro, você tem que fazer isso para cada comando executado, mas provavelmente tem um script de trabalho, então provavelmente só tem um comando por compilação. Meu script de trabalho é um script python que usa o ambiente para decidir qual python usar, então eu ainda precisava colocar /usr/local/bin/python2.7 em seu caminho:
fonte
O que funcionou para mim foi substituir o ambiente PATH para o escravo.
Em seguida, desconecte e reconecte o escravo.
Apesar do que as informações do sistema mostravam, funcionou.
fonte
Eu tenho Jenkins 1.639 instalado no SLES 11 SP3 via zypper (o gerenciador de pacotes). A instalação configurou jenkins como um serviço
Embora sejam
/etc/init.d/jenkins
fontes/etc/sysconfig/jenkins
, quaisquer variáveis env definidas lá não são herdadas pelo processo jenkins porque ele é iniciado em um shell de login separado com um novo ambiente como este:A maneira como eu consegui definir env vars para o processo jenkins é via
.bashrc
em seu diretório inicial -/var/lib/jenkins
. Tive que criar/var/lib/jenkins/.bashrc
porque não existia antes.fonte
Aqui está o que eu fiz no ubuntu 18.04 LTS com Jenkins 2.176.2
Criei o arquivo .bash_aliases e adicionei ali o caminho, as variáveis de proxy e assim por diante.
No início de .bashrc isso estava definido.
Portanto, ele está verificando se iniciarmos um shell não interativo, não faremos nada aqui.
parte inferior do .bashrc havia inclusão para .bash_aliases
então movi .bash_aliases carregando primeiro em .bashrc logo acima da verificação não interativa.
Isso não funcionou primeiro, mas depois desconectei o escravo e o reconectei para que ele carregasse as variáveis novamente. Você não precisa reiniciar jenkins inteiros se estiver modificando variáveis escravas. apenas desconecte e reconecte.
fonte
1- adicione ao seu arquivo de perfil ".bash_profile" o arquivo
está na pasta "/ home / your_user /"
vi .bash_profile
adicionar:
==> é o espaço de trabalho e jenkins
2- Se você usar jetty: vá para o arquivo jenkins.xml
e adicione :
fonte