Iniciando um processo para sempre em uma etapa de compilação do Jenkins?

14

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?

    
por Patrick 25.04.2013 / 17:10

3 respostas

26

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

    
por 25.04.2013 / 20:45
1

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.

    
por 23.01.2017 / 12:43
0

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 .

    
por 09.02.2018 / 20:56