Deployment

在 Jenkins 建構步驟中開始一個永遠的過程?

  • December 20, 2019

我在 Jenkins 部署結束時執行 shell 命令以重新啟動永久腳本:

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

當我以使用者 jenkins 的身份執行它時,一切正常,建構歷史記錄的控制台輸出也告訴我永久腳本正在執行。但是,該過程在部署完成後立即停止,並且永久過程停止。

是什麼導致了這種行為,我該如何解決?

詹金斯殺死了工作產生的所有程序。

這可以通過將BUILD_ID環境變數設置為其他值來禁用:

export BUILD_ID=dontKillMe

有關詳細資訊,請參閱https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller

在新的管道作業中,設置BUILD_ID不再有效。相反,您需要設置JENKINS_NODE_COOKIE以防止 Jenkins 在作業完成時終止您的程序。

sh 'export JENKINS_NODE_COOKIE=dontKillMe'
sh 'myProcess'

或者,更有選擇性:

sh 'JENKINS_NODE_COOKIE=dontKillMe myProcess'

請參閱ProcessTreeKiller 上的 wikiJenkins Jira 中的此評論

引用自:https://serverfault.com/questions/502593