Avvio di un processo per sempre in una fase di creazione di Jenkins?


17

Sto eseguendo un comando shell alla fine di una distribuzione Jenkins per riavviare uno script per sempre:

npm install && forever stop app.js && forever start -a -l /var/log/forever.log app.js

Quando lo eseguo come utente jenkins, tutto funziona bene e l'output della console dalla cronologia di build mi dice anche che lo script forever è in esecuzione. Tuttavia, il processo si interrompe subito dopo il completamento della distribuzione e il processo per sempre viene interrotto.

Cosa causa questo comportamento e come posso risolverlo?

Risposte:


28

Jenkins uccide tutto il processo generato dal lavoro.

Questo può essere disabilitato impostando la BUILD_IDvariabile d'ambiente su qualcos'altro:

export BUILD_ID=dontKillMe

vedi https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller per i dettagli


1
È un modo "pulito" di fare o qualcos'altro consigliato?
Patrick,

Per quanto ne so, è l'unico modo per disabilitare ProcessTreeKiller
rcomblen,


Prima stavo ottenendo. [ssh-agent] Arrestato. Ucciso dal segnale 15. Ucciso dal segnale 15. Dopo questo ho fatto arrestare [ssh-agent]. Ma viene ancora ucciso :(
Amit Kumar Gupta,

1

La domanda è piuttosto vecchia, ma penso che ci sia una soluzione migliore in questo caso.

Usa il plug-in Post-Build Script

Il plug-in stesso non viene aggiornato dall'inizio del 2016, ma fa il lavoro e non è necessario giocherellare con le variabili di ambiente. Mi sembra un po 'più ordinato.


0

Nei nuovi lavori Pipeline, l'impostazione BUILD_IDnon funziona più. Invece, è necessario impostare JENKINS_NODE_COOKIEper impedire a Jenkins di interrompere il processo al termine del lavoro.

sh 'export JENKINS_NODE_COOKIE=dontKillMe'
sh 'myProcess'

O, più selettivamente:

sh 'JENKINS_NODE_COOKIE=dontKillMe myProcess'

Vedi la wiki su ProcessTreeKiller e questo commento nella Jenkins Jira .


0

Prova con:

(
  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 &
) &
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.