jenkins設定任務超時⏱(多種方法:圖文並茂?)

墨抒穎發表於2021-10-10

在使用jenkins進行自動編譯、構建時有些任務可能由於網路或其他原因一直阻塞,導致該專案不能再次執行編譯構建。我們希望在某些任務執行時間超過一定值時將其終止。

方法一(普通)

jenkins的”build timeout plugin”外掛可以幫我們完成該任務。我使用的是jenkins-2.7.1, 預設就已經安裝了該外掛,如果預設沒有安裝可在外掛管理中搜尋進行安裝。

請新增圖片描述

方法二(Pipeline)

Jenkins Pipeline 提供了很多的步驟(step),這些步驟可以相互組合巢狀,方便地解決像重複執行步驟直到成功(重試)和如果一個步驟執行花費的時間太長則退出(超時)等問題。

pipeline {
    agent any
    stages {
        stage('Deploy') {
            steps {
                retry(3) {
                    sh './flakey-deploy.sh'
                }

                timeout(time: 3, unit: 'MINUTES') {
                    sh './health-check.sh'
                }
            }
        }
    }
}

“Deploy”階段(stage)重複執行 flakey-deploy.sh 指令碼3次,然後等待 health-check.sh 指令碼最長執行3分鐘。 如果 health-check.sh 指令碼在 3 分鐘內沒有完成,Pipeline 將會標記在“Deploy”階段失敗。

內嵌型別

內嵌型別的步驟,例如 timeout 和 retry 可以包含其他的步驟,包括 timeout 和 retry 。

我們也可以組合這些步驟。例如,如果我們想要重試部署任務 5 次,但是總共花費的時間不能超過 3 分鐘。

pipeline {
    agent any
    stages {
        stage('Deploy') {
            steps {
                timeout(time: 3, unit: 'MINUTES') {
                    retry(5) {
                        sh './flakey-deploy.sh'
                    }
                }
            }
        }
    }
}

系列文章

jenkins的自動化配置
jenkins的tty問題
jenkins的反向代理配置
jenkins的java11問題
jenkins的私鑰格式錯誤問題
jenkins的webhooks配置
jenkins設定任務超時⏱(多種方法:圖文並茂?)

參考

相關文章