如果jenkins作业失败如何保持资源锁定 - 可锁定资源

问题描述 投票:0回答:1

这是为了测试目的。我有一个测试床,在这个环境中部署了多个物理 DUT,每次开发人员触发 PR 时,它都会自动触发 jenkins 构建固件并部署到我们测试环境中的随机 DUT 上并执行测试。

我们想要做的是在测试失败时保留 DUT,并且我们可以通过保持资源锁定来避免在该 DUT 上执行测试。有没有办法通过可锁定资源来实现这一点?

这是我的测试脚本。

pipeline {
    agent {
        label 'one_slave'
    }
    options {
        lock(resource: "DUT_1", variable: 'LOCKED_RESOURCE', quantity: 1)
    }
    stages{
        stage("test"){
            steps {
                error("Build failed because of this and that..")
            }
        }
    }
    post {
        failure{
            script {
                // To keep the failed DUT locked.
            }
        }
    }
}

我尝试导入

org.jenkins.plugins.lockableresources.LockableResourcesManager
并使用
reserve
函数,但收到错误消息 `执行失败后置条件时出错:

groovy.lang.MissingMethodException: No signature of method: java.lang.Class.reserve() is applicable for argument types: () values: [[resources:DUT_1, userName:Lyndon]]`

我还检查了这篇文章Jenkins可锁定资源-锁定而不解锁,但我不认为这是相同的场景。我的场景是构建完成后锁定资源。

jenkins jenkins-pipeline jenkins-plugins jenkins-groovy
1个回答
0
投票

您已经快到了,只是错过了一个参数类型 - 您尝试保留的资源应该包装到一个列表中。请参阅 Javadocs 此处

© www.soinside.com 2019 - 2024. All rights reserved.