Jenkins elimina todo o processo gerado pelo trabalho.
Isso pode ser desativado configurando a variável de ambiente BUILD_ID
para outra coisa:
export BUILD_ID=dontKillMe
veja link para detalhes
Estou executando um comando shell no final de uma implantação do Jenkins para reiniciar um script para sempre:
npm install && forever stop app.js && forever start -a -l /var/log/forever.log app.js
Quando executo isso como um usuário jenkins tudo funciona bem e a saída do console do histórico de compilação também me diz que o script para sempre está em execução. No entanto, o processo pára logo após a conclusão da implementação e o processo para sempre é interrompido.
O que causa esse comportamento e como posso corrigi-lo?
Jenkins elimina todo o processo gerado pelo trabalho.
Isso pode ser desativado configurando a variável de ambiente BUILD_ID
para outra coisa:
export BUILD_ID=dontKillMe
veja link para detalhes
A questão é bem antiga, mas acho que existe uma solução melhor nesse caso.
Use o Plug-in de script pós-compilação
O próprio plugin não é atualizado desde o início de 2016, mas ele faz o trabalho e você não precisa mexer nas variáveis de ambiente. Parece um pouco mais puro para mim.
Nos novos trabalhos do Pipeline, a configuração BUILD_ID
não funciona mais. Em vez disso, você precisa definir JENKINS_NODE_COOKIE
para evitar que o Jenkins mate seu processo quando o trabalho terminar.
sh 'export JENKINS_NODE_COOKIE=dontKillMe'
sh 'myProcess'
Ou mais seletivamente:
sh 'JENKINS_NODE_COOKIE=dontKillMe myProcess'
Veja o wiki no ProcessTreeKiller e este comentário no Jenkins Jira .
Tags jenkins node.js deployment