Estou procurando uma maneira de executar um processo java em segundo plano usando o pipeline declarativo Jenkins. Abaixo está o trecho de código
stage('Deploy'){
steps{
script{
withEnv(['BUILD_ID=dontkill']) {
sh "nohup java -jar test-0.0.1-SNAPSHOT.war &"
}
}
}
}
Já conhece o ProcessTreeKiller de Jenkins e todas as respostas sugerem fazer o mesmo. Eu tentei usar o ambiente dentro do bloco de etapas sem sorte.
Versão Jenkins: 2.60.1
Plug-in Pipeline: 1.1.7
Qualquer ajuda é muito apreciada.
O que acontece? Mensagem de erro? Falha silenciosa?
—
Camada B
Eu não tenho um processo java em execução. Esta é a fase final do meu pipeline, portanto, meu palpite é que Jenkins a inicia e termina no momento seguinte.
—
Dharanidhar 5/07
O que acontece quando você executa o comando diretamente no escravo? Efetue login no host do agente / escravo, vá para a área de trabalho do trabalho (ou se foi limpo manualmente, copie o arquivo war em algum lugar ...
—
B Camada
/tmp
por exemplo) e execute tudo entre aspas duplas.
Além disso, se o espaço de trabalho não foi eliminado, procure um arquivo chamado nohup.out em qualquer diretório que o comando shell tenha executado. o nohup registra automaticamente nesse arquivo quando a saída não é redirecionada de outra forma.
—
B Camada
@BlairM o mesmo script funciona bem quando eu tento com o usuário jenkins através de um shell não interativo sem login. Executar aspas duplas não faz diferença. nohup.out está presente, mas tem 0 KB.
—
Dharanidhar 6/07