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

17

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 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 forever está em execução. No entanto, o processo para logo após a conclusão da implantação e o processo para sempre é interrompido.

O que causa esse comportamento e como posso corrigi-lo?

Patrick
fonte

Respostas:

28

Jenkins mata todo processo gerado pelo trabalho.

Isso pode ser desabilitado configurando a BUILD_IDvariável de ambiente para outra coisa:

export BUILD_ID=dontKillMe

consulte https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller para obter detalhes

rcomblen
fonte
11
Essa é uma maneira 'limpa' de fazer ou algo mais recomendado?
26413 Patrick
Até onde eu sei, é a única maneira de desativar o ProcessTreeKiller
rcomblen
rcomblen está correta, veja wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller
Jan Molak
Antes disso eu estava recebendo. [ssh-agent] Parado. Morto pelo sinal 15. Morto pelo sinal 15. Depois disso, fui parar com [ssh-agent]. Mas ainda está sendo morto :(
Amit Kumar Gupta
1

A questão é bastante antiga, mas acho que há uma solução melhor neste caso.

Usar plug-in de script pós-compilação

O plug-in em si não é atualizado desde o início de 2016, mas ele funciona e você não precisa mexer nas variáveis ​​de ambiente. Parece um pouco melhor para mim.

matewilk
fonte
0

Nos novos trabalhos de Pipeline, a configuração BUILD_IDnão funciona mais. Em vez disso, você precisa definir JENKINS_NODE_COOKIEpara impedir que Jenkins interrompa 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 .

jpyams
fonte
0

Tente com:

(
  set -e
  export BUILD_ID=dontKillMe
  export JENKINS_NODE_COOKIE=dontKillMe
  npm install
  forever stop app.js
  forever start -a -l /var/log/forever.log app.js &
) &
Eduardo Cuomo
fonte