[英]Timeout on a Build Step of Jenkins
在 Jenkins 中,有沒有辦法為每個或選定的構建步驟提供不同的超時時間?
構建時插件提供了超時功能“如果構建被卡住則中止構建”,我需要的是為每個步驟提供不同的超時。 這樣我可以使我的過程更有效率。
如果您使用的是 Jenkins 管道和較新的聲明式樣式(具有頂級pipeline {
元素),則有一個timeout
option
可用於整個工作或單個階段:
pipeline {
agent any
options {
timeout(time: 1, unit: 'HOURS') // timeout on whole pipeline job
}
stages {
stage('Example') {
options {
timeout(time: 1, unit: 'HOURS') // timeout on this stage
}
steps {
echo 'Hello World'
}
}
}
}
在管道作業中,您可以使用timeout
包裝您的步驟,如下所示:
timeout(time: 5, unit: 'MINUTES') {
// steps to execute
}
這個問題最初是在 Jenkins Pipeline 存在之前提出的。 雖然您可以繼續通過 GUI 使用和配置 Jenkins,但目前建議將您的項目轉換到管道。 使用流水線允許您跟蹤對流水線的更改,並將其存儲為代碼,因此如果您需要移動 Jenkins 服務器,可以輕松地在任何機器上重新創建您的構建。
使用管道,為構建的特定部分添加超時是微不足道的。 管道語法簡單易用。
timeout(time:5, unit:'DAYS') {
input message:'Approve deployment?', submitter: 'it-ops'
}
相關問題: 如何向 Jenkins Pipeline 添加超時步驟
示例無恥地取自: CloudBees Jenkins 管道插件的 10 大最佳實踐
我知道沒有這樣的功能。 JENKINS-8900請求它。
構建超時插件不適用於管道。 參考維基
對於管道超時,請嘗試以下操作:
timeout(time: 30, unit: 'MINUTES') {
node {
sh 'foo'
}
}
來自另一個線程的類似答案: How to add a timeout step to Jenkins Pipeline
我認為來自 GNU coreutils的timeout
命令可能是你想要的。 這是假設您的構建步驟是腳本。
請為您的 Jenkins 安裝 Build Timeout 插件。
Jenkins> 管理 Jenkins> 管理插件
在可用選項卡中搜索 Build Timeout .. 安裝它。 您會在構建環境中發現它為“如果它被卡住則中止構建”。 設置超時策略和時間。 絕對截止日期 彈性 可能卡住 沒有活動
就我而言,我使用了 No Activity。
希望能幫助到你。
最簡單的方法(這就是我這樣做的方法)實際上是讓不同的項目相互依賴並連續構建它們。 這並不完美,但另一種選擇是使用不同的工具/構建行為來監視不同插件的執行。
盡管如此,該方法仍然有效,盡管它確實很糟糕......
順便說一句,有一個很好的插件可以幫助您使用一組項目 - Build Pipeline plugin 。 我現在正在使用它來可視化和驗證我創建的管道。 真的很方便...
如果您不想使用 Jenkins 插件並希望使腳本或任何命令超時,那么您可以使用 Linux 內置實用程序“timeout”。
timeout -s KILL 1m ./test
上述命令將運行test
可執行文件 1 分鍾,如果它在超時后繼續執行,則該命令將超時並通過KILL
實用程序KILL
進程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.