当前位置: 首页 > 知识库问答 >
问题:

如何向Jenkins Pipeline添加超时步骤

曾新立
2023-03-14

当您使用自由风格项目时,您可以设置在20分钟后,如果未结束,则中止生成。Jenkins多分支管道项目如何实现这一点?

共有3个答案

尉迟高澹
2023-03-14

在声明式管道中,您可以使用:

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

                timeout(time: 3, unit: 'MINUTES') {
                    sh './health-check.sh'
                }
            }
        }
    }
}
宗政财
2023-03-14

对于声明性管道,建议在选项部分使用超时步骤。

执行块内的代码,并确定超时限制。如果达到时间限制,则抛出异常(org.jenkinsci.plugins.workflow.steps.FlowInterruptedException),导致中止构建(除非以某种方式捕获并处理它)。单元是可选的,但默认为分钟。

timeout-Step有3个参数可以配置:

>

  • 时间(必需,int)

    • 超时量(如果未指定单位),持续时间(分钟)

    活动(可选,布尔)

    • 此块的日志中没有活动后超时,而不是绝对持续时间

    单位(可选,值:纳秒、微秒、毫秒、秒、分钟、小时、天)

    • 时间单位默认为分钟

    例子:

    timeout(time: 10) // would lead to a timeout of 10 minutes (MINUTES is default value)
    timeout(time: 10, unit: 'SECONDS') // a 10 seconds timeout
    timeout(time: 10, activity: false, unit: 'MILLISECONDS')
    

    Jenkins官方文档中有一个很好的超时使用示例:

    pipeline {
        agent any
        options {
            timeout(time: 1, unit: 'HOURS') 
        }
        stages {
            stage('Example') {
                steps {
                    echo 'Hello World'
                }
            }
        }
    }
    

  • 漆雕唯
    2023-03-14

    您可以使用超时步骤:

    timeout(20) {
      node {
        sh 'foo'
      }
    }
    

    如果需要不同于分钟的时间单位,可以提供参数:

    timeout(time: 20, unit: 'SECONDS') {
    

    2018年8月编辑:如今,随着更常见的声明性管道(很容易被顶级管道构造识别),也可以在不同级别(每个整体管道或每个阶段)使用选项指定超时:

    pipeline {
      options {
          timeout(time: 1, unit: 'HOURS') 
      }
      stages { .. }
      // ..
    }
    

    不过,如果您想对声明性管道中的单个步骤应用超时,可以如上所述使用它。

     类似资料:
    • 问题内容: 使用自由样式项目时,您可以设置20分钟后,如果未结束,则构建将中止。Jenkins多分支管道项目如何做到这一点? 问题答案: 您可以使用超时步骤: 如果你需要一个不同的比 MINUTES ,您可以提供的参数: 编辑2018年8月: 如今,使用更常见的声明性管道(易于被顶层构造识别),也可以在不同级别(每个整体管道或每个阶段)使用指定超时: 尽管如此,如果您想将超时应用于声明式管道中的单

    • 问题内容: 我有一种用于在本地主机上执行命令的方法。我想向该方法添加一个超时参数,以便如果被调用的命令没有在合理的时间内完成,则该方法将返回错误代码。这是到目前为止的样子,无法超时: 谁能为我提出一种实现超时参数的好方法? 问题答案:

    • 我有类似这样的结构 SQS->lambda->DLQ 但是,当lambda在向SQS添加新消息时被触发,然后失败时,消息不会存储在DLQ中。 我发现当新消息发布到SQS时触发的事件本质上是同步的。 SQS事件触发器异步调用lambda 或

    • 我想将我的添加到列中,这样我就可以在加载更多项目时在这个列表视图下面添加CircularProgressIndex ator。我使用了如何在Flutter中将列表视图添加到列中的建议?因此我制作了结构列- 你能告诉我我做错了什么吗?这个构建了新的小部件,但它构建在另一个列上。也许这是错的?

    • 问题内容: 过去,已经进行了许多尝试以在Python中添加超时功能,以便在指定的时间限制到期时,等待的代码可以继续运行。不幸的是,以前的配方要么允许正在运行的功能继续运行并消耗资源,要么使用特定于平台的线程终止方法终止该功能。该Wiki的目的是针对这个问题开发跨平台的答案,许多程序员必须针对各种编程项目解决该问题。 编辑: 这段代码是为Python 3.x编写的,并非为装饰类方法而设计。该模块并非

    • 问题内容: 我想在JDialog中添加诸如TextField,Button等组件。 问题答案: 1)首先创建一个Jpanel 2)将组件添加到该JPanel 3)创建JDialog 4)将JPanel添加到JDialog