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?

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


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


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.


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 .


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 &
) &
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.