詹金斯构建步骤超时

roh*_*its 38 build-automation build-process jenkins jenkins-plugins

在Jenkins中,有没有办法为每个或选定的构建步骤提供不同的超时?
构建时插件提供了超时功能"如果它被卡住了就完成项目中止",我需要的是为每个步骤提供不同的超时.这样我就可以提高我的流程效率.

Chr*_*s R 34

如果您使用的是 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'
          }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

  • 这应该是公认的答案。 (4认同)

JES*_*Sii 24

截至目前的Jenkins版本,可以做到这一点.点击"配置",然后选择"构建环境"选项卡,然后设置超时.

这是一个截图: 在此输入图像描述


kat*_*ash 11

在管道作业中,您可以使用timeout以下步骤包装您的步骤:

timeout(time: 5, unit: 'MINUTES') { // steps to execute }

  • 如果超时后需要继续执行其他步骤,可以用 try/catch 包围它并继续正常执行。但请记住,这只能在一个步骤内应用。示例: ``` steps { try { timeout(time: 5, unit: 'MINUTES') { // 在这 5 分钟内执行的步骤 } } catch (Exception e) { // 在这里做任何你想做的事 } // continue在这里执行其他步骤}``` (3认同)
  • 超时让管道失败,还是会继续下一步?也许一个完整的例子会有所帮助。 (2认同)

Ale*_*owe 9

这个问题最初是在 Jenkins Pipeline 存在之前提出的。虽然您可以继续通过 GUI 使用和配置 Jenkins,但目前建议将您的项目转换到管道。使用流水线允许您跟踪对流水线的更改,并将其存储为代码,因此如果您需要移动 Jenkins 服务器,可以轻松地在任何机器上重新创建您的构建。

使用管道,为构建的特定部分添加超时是微不足道的。管道语法简单易用。

timeout(time:5, unit:'DAYS') {
    input message:'Approve deployment?', submitter: 'it-ops'
}
Run Code Online (Sandbox Code Playgroud)

相关问题:如何向 Jenkins Pipeline 添加超时步骤

示例无耻地取自:CloudBees Jenkins 管道插件的 10 大最佳实践


Jes*_*ick 6

没有我所知道的这样的功能.JENKINS-8900要求它.


Chu*_*uan 6

构建超时插件不适用于管道。参考维基

对于管道超时,请尝试以下操作:

timeout(time: 30, unit: 'MINUTES') {
  node {
    sh 'foo'
  }
}
Run Code Online (Sandbox Code Playgroud)

来自另一个线程的类似答案: How to add a timeout step to Jenkins Pipeline


小智 5

请为您的 Jenkins 安装 Build Timeout 插件。

Jenkins> 管理 Jenkins> 管理插件

在可用选项卡中搜索“构建超时”。安装它。您会在构建环境中发现它为“如果卡住则中止构建”。设置超时策略和时间。绝对期限弹性可能卡住没有活动

就我而言,我使用了“无活动”。

希望能帮助到你。


Łuk*_*nek 2

最简单的方法(这就是我正在做的方法)是实际上让不同的项目相互依赖并连续构建它们。它并不完美,但另一个选择是使用不同的工具/构建行为来监视不同插件的执行。

尽管如此,这种方法仍然有效,尽管它确实很糟糕......

顺便说一句,有一个很好的插件可以帮助您使用一组项目 - Build Pipeline 插件。我现在正在使用它来可视化和验证我创建的管道。实在是太方便了...