Jenkins: Como usar uma variável de um shell de pré-compilação no Maven “Metas e opções”
Eu tenho um trabalho Maven em Jenkins. Antes da etapa de criação real, tenho uma etapa de pré-compilação "Executar shell". Nesse shell eu defino uma variável:
REVISION=$(cat .build_revision)
Eu gostaria de usar essa variável no trabalho de construção do Maven em "Metas e opções":
clean install -Drevision=${REVISION}
Mas isso não funciona! A "drevision" está definida como "$ {REVISION}" e não o valor real de $ {REVISION}. Saída:
Executing Maven: -B -f /home/gerrit/.jenkins/jobs/<job_name>/workspace/pom.xml clean install -Drevision=${REVISION}
Funciona com variáveis de ambiente do Jenkins:
clean install -Dbuild=${BUILD_NUMBER}
Define "Dbuild" para o número de compilação atual. Saída:
Executing Maven: -B -f /home/gerrit/.jenkins/jobs/<job_name>/workspace/pom.xml clean install -Dbuild=54
Minha pergunta: Como usar uma variável de shell no Maven "Metas e opções"?
EDITAR:
Eu tentei usarPlugin Jenkins EnvInject para "Injectar variáveis de ambiente" após o shell de pré-compilação, e minha variável agora está acessível, por exemplo, post-build shells, mas ainda não está disponível no Maven "Goals and options".
Então é possível definir "Injectar variáveis de ambiente para o processo de construção" usando o EnvInject Plugin, que realmente disponibiliza essas variáveis no Maven "Metas e opções", mas elas são definidas logo após a verificação do SCM, ou seja, antes das etapas de pré-compilação e não suportam avaliações de expressão.