当代理关闭时,如何阻止Jenkins拖延?

ruyhziif  于 2023-08-03  发布在  Jenkins
关注(0)|答案(1)|浏览(118)

我的Jenkins代理是可以关闭的正常工作站。如果在工作中发生这种情况,我希望Jenkins能失败。相反,作业会无限期地暂停,甚至在代理返回后也是如此。我该如何让它失败呢?从最后一步重新开始会更好,但这是一个非常好的拥有。
最后一条日志消息是
无法联系某座席:java.lang.InterruptedException
当我中止失速工作时,我得到
由管理员中止
向进程发送中断信号
单击此处强制终止正在运行的步骤
20s后过程未停止
什么进程没有停止?此时代理上不可能运行任何东西。
Jenkins版本是最新的LTS,作业是调用PowerShell脚本的声明性管道。摘录:

stage('Build')
{
    steps
    {
        powershell '. Tools\\Build\\Build.ps1 -version $env:VERSION'
    }
}
stage('Package')
{
    steps
    {
        powershell '. Tools\\Build\\Package.ps1 -artifact $env:ARTIFACT'
        archiveArtifacts ARTIFACT
    }
}

字符串

ff29svar

ff29svar1#

Jenkins插件Pipeline: Basic Steps提供了一个称为超时的步骤,您可能会感兴趣。
它可以应用于单个阶段,也可以应用于整个管道。
下面是一个使用脚本语法的示例:

timeout(time: 30, unit: 'MINUTES) {
    node {
      stage('test') { ... }
    }
}

字符串
如果您使用的是声明式语法,则在顶级代理中声明的timeout选项仅在 * 代理变得可用后 * 才生效,这不是您想要实现的。相反,您可以通过在顶层使用agent none并为每个阶段指定代理来解决这个问题。这一现象实际上在文档中有描述。
示例如下:

pipeline {
    agent none
    options {
        timeout(time: 1, unit: 'HOURS') 
    }
    
    stages {
        stage('Hello') {
            agent { label 'my-label' }
            steps {
                echo 'Hello World'
            }
        }
    }
}


另请参阅此线程:How to add a timeout step to Jenkins Pipeline

相关问题