Memulai proses selamanya dalam langkah membangun Jenkins?

17

Saya menjalankan perintah shell di akhir penyebaran Jenkins untuk memulai kembali skrip selamanya:

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

Ketika saya menjalankan itu sebagai jenkins pengguna semuanya berfungsi dengan baik dan output konsol dari build history juga memberi tahu saya bahwa skrip selamanya berjalan. Namun, proses berhenti tepat setelah penyebaran selesai dan proses selamanya dihentikan.

Apa yang menyebabkan perilaku ini dan bagaimana cara memperbaikinya?

Patrick
sumber

Jawaban:

28

Jenkins membunuh semua proses yang muncul karena pekerjaan.

Ini dapat dinonaktifkan dengan mengatur BUILD_IDvariabel lingkungan ke sesuatu yang lain:

export BUILD_ID=dontKillMe

lihat https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller untuk detail

rcomblen
sumber
1
Apakah ini cara yang 'bersih' untuk dilakukan atau sesuatu yang lain disarankan?
Patrick
Sejauh yang saya tahu, itu satu-satunya cara untuk menonaktifkan
ProcessTreeKiller
rcomblen benar, periksa wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller
Jan Molak
Sebelum ini saya mendapatkan. [ssh-agent] Berhenti. Dibunuh oleh sinyal 15. Dibunuh oleh sinyal 15. Setelah ini, saya [ssh-agent] Berhenti. Tapi itu masih terbunuh :(
Amit Kumar Gupta
1

Pertanyaannya cukup lama, tetapi saya pikir ada solusi yang lebih baik.

Gunakan Plug-In Script Pasca Bangun

Plugin itu sendiri tidak diperbarui sejak awal 2016, tetapi itu berfungsi dan Anda tidak perlu mengutak-atik variabel lingkungan. Agak lebih rapi bagi saya.

matewilk
sumber
0

Di pekerjaan Pipeline baru, pengaturan BUILD_IDtidak lagi berfungsi. Sebaliknya, Anda perlu mengatur JENKINS_NODE_COOKIEuntuk mencegah Jenkins dari membunuh proses Anda ketika pekerjaan selesai.

sh 'export JENKINS_NODE_COOKIE=dontKillMe'
sh 'myProcess'

Atau, lebih selektif:

sh 'JENKINS_NODE_COOKIE=dontKillMe myProcess'

Lihat wiki di ProcessTreeKiller dan komentar ini di Jenkins Jira .

jpyams
sumber
0

Coba dengan:

(
  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
sumber