jenkins - Jenkins 中的可锁定资源插件不等待资源
问题描述
我正在使用 Jenkins Lockable Resources 插件来决定在我的声明式管道中将哪个服务器用于各种构建操作。我已经设置了我的可锁定资源,如下表所示:
Resource Name Labels
Win_Res_1 Windows
Lx_Res_1 Linux
我获取可锁定资源的代码如下:
pipeline {
agent any
stages {
stage("Lock resource") {
steps {
script {
int num = 1
String label = "Windows"
lock(label: label, quantity: num, variable: "resource_name") {
echo "Locked resource name is ${env.resource_name}"
}
}
}
}
}
}
现在假设 Jenkinsjob-1
正在运行以在其上构建应用程序,Windows
并且它已获取 Windows 资源Win_Res_1
。在这一点上,我启动了另一个 Jenkins job-2
,它也必须在Windows
机器上进行构建。所以这里的期望是job-2
等待资源直到job-1
放弃它。job-1
完成后,资源将Win_Res_1
可供job-2
.
就我而言,这没有发生。Lockable 资源插件不是等待资源,而是抛出以下错误(正在进行中)job-2
:job-1
No such property: resource_name for class: groovy.lang.Binding
这是插件的已知限制吗?
我在 Jenkins 版本 2.89.1 上,可锁定资源插件版本是 2.2
解决方案
这是一个已知问题,已在 Lockable 插件版本 2.3 (JENKINS-34433) 中得到解决。
但是,我升级到 Jenkins 2.235.1 和 Lockable 插件版本 2.8,现在没有观察到问题。
推荐阅读
- c++ - Linking VS 2015 build dll to a VS 2012 application
- django - Django - 将登录用户的用户名作为另一个模型的默认值
- php - 在 laravel nova 中重置密码
- javascript - 在Javascript中以X为增量生成随机数不起作用
- php - 在不使用 git 客户端的情况下定期更新驻留在 github 上的文件的本地副本的安全方法
- android - 将意图从一个包传递到另一个包
- c# - 带有 Jenkins 的 ASP.NET CORE 2.2
- java - Java 验证:多种类型的类型级别注释
- asp.net-core - Blazor 本地化
- javascript - 将参数传递给 npm 的多命令脚本