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. 參考
- script console 介紹:https://www.jenkins.io/doc/book/managing/script-console/
- Stack Overflow:https://stackoverflow.com/a/26306081
我是梅小西,最近在某東南亞電商公司做 DevOps 的相關事情,從本期開始,將陸續分享基于 Jenkins 的 CI/CD 作業流,包括 Jenkins On k8s 等,
如果你對 Java 或者 Jenkins 等感興趣,歡迎與我聯系,微信:wxweven(備注 DevOps),也歡迎關注:

本文由博客群發一文多發等運營工具平臺 OpenWrite 發布
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/479218.html
標籤:Java
