Jenkins 強制停止 job 執行

0.背景

某天,Jenkins 運維支持羣裏,有同學反饋說,點擊 job 頁面的取消執行按鈕不生效,job 執行停不下來。

收到這個反饋後,我自己也試了下,發現確實點頁面取消按鈕不管用,點了好幾次,job 執行就是停不下來。

跟 SRE 同學諮詢了下,原來是 Jenkins 因爲磁盤故障,發生了重啓。Jenkins 的 job 在重啓後,會默認恢復執行,可能是因爲重啓後,數據狀態錯亂了,導致 job 執行無法被取消。

然而用戶又有這種需求,怎麼處理呢?

看了下網上有人說需要重啓 Jenkins,kill 進程。其實大可不必這樣,先不說單單爲了停止一個 job 的運行而大費周章的重啓 Jenkins 帶來的代價,就算是重啓後,job 依然可能被恢復執行,所以根本解決不了問題。

那麼有沒有辦法能夠強制停止 job 的執行呢?答案當然是有!

1. Script console 執行腳本

Jenkins 的提供了 script console 的功能,允許你寫一些腳本,來調度 Jenkins 執行一些任務。
我們就可以利用 script console 來強制停止 job 執行。

首先進入 Jenkins 的 script console 頁面:

  • script console 路徑:manage jenkins -> manage nodes -> master -> script console

然後執行下面的腳本:

Jenkins.instance.getItemByFullName("JobName")
	.getBuildByNumber(JobNumber)
	.finish(
		hudson.model.Result.ABORTED,
		new java.io.IOException("Aborting build")
	);

運行後,就會發現,原來停不下來的 job,已經停止執行了!

2. 參考


我是梅小西,最近在某東南亞電商公司做 DevOps 的相關事情。從本期開始,將陸續分享基於 Jenkins 的 CI/CD 工作流,包括 Jenkins On k8s 等。

如果你對 Java 或者 Jenkins 等感興趣,歡迎與我聯繫,微信:wxweven(備註 DevOps),也歡迎關注:

本文由博客羣發一文多發等運營工具平臺 OpenWrite 發佈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章