在使用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設定任務超時⏱(多種方法:圖文並茂?)
參考
- nginx配置禁特定路徑下的反向代理
- nginx配置禁止訪問目錄或禁止訪問目錄下的檔案
- nginx跨域處理
- 帶你深入瞭解nginx基本登入認證(包含配置步驟)
- 使用htpasswd生成密碼
- 使用openssl生成密碼
- 使用python生成密碼
- 你的nginx登入認證安全嗎?
- 配置http基本驗證(Basic Auth)
- Centos安裝htpasswd_Nginx中使用htpasswd
- 帶你深入瞭解nginx基本登入認證(包含所有配置步驟和深度解析)
- 帶你深入瞭解nginx基本登入認證:使用htpasswd生成密碼
- 帶你深入瞭解nginx基本登入認證:使用openssl生成密碼
- 帶你深入瞭解nginx基本登入認證:使用python生成密碼