2014-10-09 14 views
5

Làm cách nào để Jenkins khởi động lại một cá thể Tomcat sau khi triển khai thành công?Khởi động lại Tomcat sau khi triển khai thành công với Jenkins

Tôi đã thử sử dụng tập lệnh theo lô, nhưng phiên bản Tomcat bị giết khi quá trình xây dựng hoàn tất.

+0

Khi nào bạn chạy tập lệnh batch? Nếu bạn làm điều đó sau "Sự kiện sau khi tạo dựng", nó sẽ hoạt động. – Akhil

Trả lời

5

Câu trả lời của bạn nằm ở Jenkins ProcessTreeKiller. A more detailed explanation here.

Đó là một quyết định thiết kế để giết bất kỳ quy trình nào được sinh ra bởi bản dựng để duy trì môi trường trong sạch. Thật không may điều đó có nghĩa là bạn không thể để lại một quá trình (như Tomcat) chạy sau khi xây dựng.

Bạn có thể tắt chức năng này trên toàn cầu (không khuyến khích) bằng cách tung ra Jenkins như thế này:
java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war

Hoặc bạn có thể vô hiệu hóa này trên một cơ sở cho mỗi trường hợp, bằng cách tung ra quá trình này với một biến môi trường đã thay đổi:
BUILD_ID=dontKillMe ./catalina restart

Tuy nhiên, một số người báo cáo thay đổi BUILD_ID là không đủ. Họ cũng khuyên bạn nên unset:
JENKINS_COOKIE
JENKINS_SERVER_COOKIE

Edit:
Một vấn đề đó có thể là lúc chơi là khi bạn kết nối với vỏ từ xa, và bắt đầu một quá trình trong đó phiên remote shell, một lần bạn (Jenkins) ngắt kết nối, phiên bị giết và tất cả các quá trình sinh ra bởi phiên làm việc cũng bị giết. Để giải quyết vấn đề đó, bạn cần phải hủy liên kết quá trình từ phiên trình bao.

Một cách là:

nohup ./catalina restart &

+0

Tôi đã sử dụng thành công Jenkins ProcessTreeKiller với thành công. Khi tôi bắt đầu Jenkins với tham số này, tôi nhận thấy không có sự khác biệt về hành vi của các quá trình sinh sản. – Joachim

+0

Bạn có đang kết nối với vỏ từ xa không? Đã chỉnh sửa câu trả lời để đưa vỏ từ xa vào tài khoản – Slav

1

Đây là cách tôi đang khởi động lại Tomcat sau khi triển khai thông qua Jenkins.

Tôi đang có hai máy chủ DEV và QA nơi tôi cần triển khai và khởi động lại tomcat. Tôi đã cài đặt Jenkins trong máy chủ DEV.

  1. Trước tiên, bạn cần cài đặt Post build task Plugin trong Jenkins.
  2. Sau đó tạo kịch bản này tomcat-restart.ksh trong máy chủ mà bạn đã cài đặt tomcat ..

#!/bin/bash echo "*********************Restarting Tomcat70.******************" sh /apps/apache/sss-tomcat70.ksh status echo "Trying to stop Tomcat." sh /apps/apache/sss-tomcat70.ksh stop echo "Getting Tomcat Status." sh /apps/apache/sss-tomcat70.ksh status echo "Trying to Start Tomcat" sh /apps/apache/sss-tomcat70.ksh start sleep 2 echo "Getting Tomcat Status" sh /apps/apache/sss-tomcat70.ksh status

Khởi động lại Tomcat trên máy chủ DEV.

Vì Jenkins và Tomcat được cài đặt trong cùng một máy, tôi trực tiếp gọi tập lệnh.

Trong Jenkins đi đến Add post-build action và chọn Post build task và trong Script textbox thêm những điều sau đây: /apps/apache/tomcat-restart.ksh

Khởi động lại Tomcat trong máy chủ QA.

Vì Jenkins được cài đặt trong máy chủ khác, tôi đang gọi tập lệnh khởi động lại Tomcat qua Secure Shell.

Trong Jenkins đi đến Thêm post-build action chọn Post build task và trong hộp văn bản Script thêm những điều sau đây:
sshpass -p 'myPassword' ssh -tt [email protected] sudo sh /apps/apache/tomcat-restart.ksh

Bạn cần cài đặt sshpass nếu nó vẫn chưa được cài đặt.

Nếu mọi thứ ổn, bạn có thể thấy nội dung như thế này trong nhật ký Jenkins của mình.

Running script : /apps/apache/tomcat-restart.ksh 
[workspace] $ /bin/sh -xe /tmp/hudson43653169595828207.sh 

+ /apps/apache/tomcat-restart.ksh 
*********************Restarting Tomcat70.********************* 
Tomcat v7.0 is running as process ID 3552 
*********************Trying to stop Tomcat.********************* 
Stopping Tomcat v7.0 running as process ID 3552... 
*********************Getting Tomcat Status.********************* 
Tomcat v7.0 is not running 
*********************Trying to Start Tomcat********************* 
Starting Tomcat v7.0 server... 

*********************Getting Tomcat Status********************* 
Tomcat v7.0 is running as process ID 17969 

Hy vọng điều này sẽ hữu ích.

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