Eu gostaria de poder fazer algo como:
AOEU=$(echo aoeu)
e mande Jenkins AOEU=aoeu
.
A seção Variáveis de ambiente em Jenkins não faz isso. Em vez disso, ele define AOEU='$(echo aoeu)'
.
Como faço para que Jenkins avalie um comando shell e atribua a saída a uma variável de ambiente?
Eventualmente, desejo poder atribuir o executor de um trabalho a uma variável de ambiente que possa ser passada ou usada por outros scripts.
Respostas:
Isso pode ser feito através do plugin EnvInject da seguinte maneira:
Crie uma etapa de compilação "Executar shell" que execute:
Crie uma etapa de criação de variáveis de ambiente Inject e defina "Caminho do arquivo de propriedades" como
propsfile
.Nota : Este plug-in (principalmente) não é compatível com o plug-in Pipeline.
fonte
sh
no caminho.foo
serão exportados nessa ação específica do shell, mas não em outras ações.A maneira mais simples
Você pode usar o plug - in EnvInject para injetar variáveis de ambiente na inicialização da compilação. Por exemplo:
Como você sabe que está funcionando
fonte
key=value
. No meu caso uso I gerar a linha completamente:cat app/build.gradle | grep "def majorVersion" | python -c 'import sys,re,os; print("VERSION_NUMBER="+re.findall(r"[\d+\.]+", sys.stdin.read())[0]+os.environ["BUILD_NUMBER"])'
BUILD_DATE=date "+%Y-%m-%d-%H_%M_%S"
eBUILD_DATE=$(date "+%Y-%m-%d-%H_%M_%S")
eBUILD_DATE=`date "+%Y-%m-%d-%H_%M_%S"`
não funcionou para mimNo meu caso, eu precisava adicionar a
JMETER_HOME
variável de ambiente para estar disponível através dos meus scripts de construção Ant em todos os projetos no meu servidor Jenkins (Linux), de uma maneira que não interferisse no meu ambiente de construção local (Windows e Mac) nobuild.xml
script . Definir a variável de ambiente por meio das propriedades Gerenciar Jenkins - Configurar Sistema - Global foi a maneira mais fácil e menos invasiva de fazer isso. Nenhum plug-in é necessário.A variável de ambiente está disponível no Ant via:
Isso pode ser verificado para os trabalhos adicionando:
O que produz:
fonte
git
/path/to/my/git
ePATH+git
/path/to/my/git
. No entanto, se eu estou tentando o acessogit
do umJenkins pipeline script
, eu recebo:/bin/sh: git: command not found
.Você pode usar o Plug - in do Injetor de ambiente para definir variáveis de ambiente no Jenkins nos níveis de tarefa e nó. Abaixo, mostrarei como configurá-los no nível do trabalho.
Manage Jenkins > Manage Plugins
e instale o plug-in.Configure
tela do seu trabalhoAdd build step
naBuild
seção e selecioneInject environment variables
Se você precisar definir uma nova variável de ambiente, dependendo de algumas condições (por exemplo, parâmetros do trabalho), poderá consultar esta resposta .
fonte
Você pode tentar algo como isto
fonte
Jenkinsfile
para um pipeline (não trabalho)! Isso é incrível, obrigado por isso!EnvInject Plugin tcp ( Environment Injector Plugin ), oferece várias opções para definir variáveis de ambiente na configuração do Jenkins.
Ao selecionar,
Inject environment variables to the build process
você receberá:Properties File Path
Properties Content
Script File Path
Script Content
e, finalmente
Evaluated Groovy script
.Evaluated Groovy script
oferece a possibilidade de definir variável de ambiente com base no resultado do comando executado :execute
método:Groovy
código explícito :(Mais detalhes sobre cada método podem ser encontrados na ajuda interna (?))
Infelizmente, você não pode fazer o mesmo,
Script Content
como afirma:fonte
Existe o Build Env Propagator Plugin, que permite adicionar novas variáveis de ambiente de compilação, por exemplo
fonte
No meu caso, eu tinha configurado variáveis de ambiente usando a seguinte opção e funcionou-
fonte
Normalmente, você pode configurar variáveis de ambiente nas propriedades globais em Configurar sistema .
No entanto, para variáveis dinâmicas com substituição de shell, convém criar um arquivo de script no diretório Jenkins HOME e executá-lo durante a compilação. O acesso SSH é necessário. Por exemplo.
sudo su - jenkins
ousudo su - jenkins -s /bin/bash
Crie um script de shell, por exemplo:
No Jenkins Build ( Executar shell ), chame o script e suas variáveis antes de qualquer outra coisa, por exemplo
fonte
sudo su - jenkins
, aindaecho $USER
me dároot
.su -l
parâmetro para fazer isso; caso contrário, faça uma pergunta separada.Nota: O valor da variável de ambiente está vindo como uma String. Se você quiser usá-lo como um booleano, precisará analisá-lo usando Boolean.parse (env.DISABLE_SQL).
fonte
Experimente o Environment Script Plugin ( GitHub ), que é muito semelhante ao EnvInject . Ele permite que você execute um script antes da construção (após o check-out do SCM) que gera variáveis de ambiente para ele. Por exemplo
e no seu script, você pode imprimir, por exemplo,
FOO=bar
na saída padrão para definir essa variável.Exemplo para anexar a uma
PATH
variável -style existente :Portanto, você pode fazer o que precisar no script -
cat
um arquivo ou executar um script em outro idioma da árvore de fontes do projeto, etc.fonte
Você pode usar uma das seguintes maneiras listadas abaixo:
Gerenciar Jenkins -> Configurar Sistema -> Propriedades Globais -> Variáveis de Ambiente -> Adicionar
fonte
Por alguma razão
sudo su - jenkins
não me registra nojenkins
usuário , acabei usando uma abordagem diferente.Consegui definir as variáveis globais env usando jenkins
config.xml
em/var/lib/jenkins/config.xml
(instalado no Linux / RHEL) - sem usar plugins externos.Eu simplesmente tive que parar o jenkins add, add
globalNodeProperties
e, em seguida, reiniciar.Exemplo, estou definindo variáveis
APPLICATION_ENVIRONMENT
eSPRING_PROFILES_ACTIVE
paracontinious_integration
abaixo,fonte
Usamos o arquivo de trabalho groovy:
fonte