这是为了测试目的。我有一个测试床,在这个环境中部署了多个物理 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可锁定资源-锁定而不解锁,但我不认为这是相同的场景。我的场景是构建完成后锁定资源。
您已经快到了,只是错过了一个参数类型 - 您尝试保留的资源应该包装到一个列表中。请参阅 Javadocs 此处。