Bắt đầu một quá trình mãi mãi trong một bước xây dựng Jenkins?


17

Tôi đang chạy một lệnh shell khi kết thúc triển khai Jenkins để khởi động lại tập lệnh mãi mãi:

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

Khi tôi chạy nó như một người dùng jenkins, mọi thứ đều hoạt động tốt và đầu ra giao diện điều khiển từ lịch sử xây dựng cũng cho tôi biết rằng tập lệnh mãi mãi đang chạy. Tuy nhiên, quá trình dừng lại ngay sau khi triển khai kết thúc và quá trình mãi mãi bị dừng lại.

Điều gì gây ra hành vi này và làm thế nào tôi có thể sửa chữa nó?

Câu trả lời:


28

Jenkins giết chết tất cả quá trình sinh sản của công việc.

Điều này có thể bị vô hiệu hóa bằng cách đặt BUILD_IDbiến môi trường thành một thứ khác:

export BUILD_ID=dontKillMe

xem https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller để biết chi tiết


1
Đây có phải là cách 'sạch' để làm hay điều gì khác được đề xuất không?
Patrick

Theo như tôi biết, đó là cách duy nhất để vô hiệu hóa ProcessTreeKiller
rcomblen


Trước đây tôi đã nhận được. [ssh-agent] Đã dừng. Bị giết bởi tín hiệu 15. Bị giết bởi tín hiệu 15. Sau đó, tôi nhận được [ssh-agent] Dừng lại. Nhưng nó vẫn đang bị giết :(
Amit Kumar Gupta

1

Câu hỏi khá cũ, nhưng có một giải pháp tốt hơn trong trường hợp này tôi nghĩ.

Sử dụng Plug-in Script sau khi xây dựng

Bản thân plugin không được cập nhật kể từ đầu năm 2016, nhưng nó thực hiện công việc và bạn không phải loay hoay với các biến môi trường. Có vẻ một chút gọn gàng hơn với tôi.


0

Trong các công việc Pipeline mới, thiết lập BUILD_IDkhông còn hoạt động. Thay vào đó, bạn cần thiết lập JENKINS_NODE_COOKIEđể ngăn Jenkins giết quá trình của bạn khi công việc kết thúc.

sh 'export JENKINS_NODE_COOKIE=dontKillMe'
sh 'myProcess'

Hoặc, chọn lọc hơn:

sh 'JENKINS_NODE_COOKIE=dontKillMe myProcess'

Xem wiki trên ProcessTreeKillernhận xét này trong Jenkins Jira .


0

Hãy thử với:

(
  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 &
) &
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.