2014-01-30 61 views
5

我有一個Jenkins作業來停止節點應用程序,部署代碼並啓動應用程序。如果運行時發生新起點停止

使用Upstart腳本完成啓動/停止。

我用initctl stop node-App

如果作業正在運行,這個偉大的工程。但是,如果應用程序已經死亡或處於停止狀態,則輸出爲initctl: Unknown instance:

這會導致Jenkins作業失敗並且無法繼續執行下一步。

有沒有辦法在發出啓動命令之前檢查作業是否已啓動?或者,詹金斯是否有辦法不考慮這個錯誤而失敗呢?

回答

6

一位同事想出了一個很好的解決方案

if (initctl status node-App | grep start); then 
    initctl stop node-App 
fi 

非常簡單,從詹金斯運行時正常工作

+0

我簡單的語法是'狀態節點,應用軟件| grep start && stop node-App' – unnu

+2

@unnu:您的單行代碼會將返回代碼設置爲非零值。我相信這可能會導致詹金斯失敗。上面的解決方案更好,因爲它會將返回碼設置爲零。 – jwfearn

+0

@jwfearn如果作業已關閉,則單行返回0,如果未處於運行狀態,則返回1。考慮到你的答案是正確的;) – unnu

相關問題