簡體   English   中英

Jenkins 構建步驟超時

[英]Timeout on a Build Step of Jenkins

在 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'
          }
        }
    }
}

文檔: https : //jenkins.io/doc/book/pipeline/syntax/#options

在管道作業中,您可以使用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 coreutilstimeout命令可能是你想要的。 這是假設您的構建步驟是腳本。

請為您的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM