2016-05-11 12 views
12

Cách thích hợp để khởi chạy tập lệnh từ jenkins là gì, không nhận được bản dựng treo và để quá trình chạy? Tôi không thể làm cho nó hoạt động được. Hoặc tập lệnh không chạy hoặc bản dựng bị treo.Cách dọn dẹp kịch bản trình bao trong nền từ Jenkins

Nếu tôi đặt vào những năm xây dựng "Execute vỏ" bước bash relaunch.sh & hoặc relaunch.sh > output.log & hoặc nohup bash relaunch.sh &, có gì xảy ra; xây dựng kết thúc, nhưng quá trình không chạy. Tôi đoán nó có thể liên quan đến Jenkins đang đợi error pipe to close.

Nếu tôi làm nohup bash relaunch.sh 2>&1 > output.log như được đề xuất here, đầu ra được chuyển hướng đúng cách, nhưng treo xây dựng (không kết thúc) và quá trình chết khi tôi giết bản dựng.

Thêm export BUILD_ID=dontKillMe, như được đề xuất here, herehere, vào bước "Thực thi trình bao" hoặc chính tập lệnh cũng không giúp ích gì. Việc xây dựng treo cứng và quá trình chết khi tôi giết xây dựng. Không cần phải nói, kiến ​​thức về Linux của tôi rất hạn chế.

Làm cách nào để mọi người thực hiện điều này một cách rõ ràng?

Trả lời

18

Một cách thuận tiện để đạt được điều đó là thay đổi môi trường biến BUILD_ID dưới Execute vỏJenkins'sProcessTreeKiller đang tìm kiếm.

Bằng cách làm,

BUILD_ID=dontKillMe nohup bash relaunch.sh & 

Jenkins sẽ cho rằng công việc nền không sinh ra bởi việc xây dựng và sẽ không giết họ sau khi kết thúc công việc.

Nhờ Joshua quan sát của mình rằng bạn cũng có thể sử dụng JENKINS_NODE_COOKIE như

JENKINS_NODE_COOKIE=dontKillMe 
+1

Cảm ơn, điều này đã giúp chúng tôi rất nhiều ngay hôm nay! –

+1

Nếu cách này không hiệu quả, hãy thử đặt 'JENKINS_NODE_COOKIE = dontKillMe' - https://devops.stackexchange.com/questions/1473/running-a-background-process-in-pipeline-job?newreg=13a0d91a60b34ad19103b50348945dd4 – Joshua

4

Tôi đã có vấn đề chính xác như vậy. tôi đã kết thúc sửa chữa điều này bằng cách đặt những điều sau đây trong Jenkins thực hiện vỏ hộp:

BUILD_ID=dontKillMe ./grid.sh 

Tôi di chuyển các & bên trong file kịch bản. Dưới đây là những gì kịch bản trông giống như:

#!/bin/bash 
java -jar selenium-server-standalone-3.0.1.jar -role hub & 

Hy vọng điều này sẽ giúp ai đó!

Các vấn đề liên quan