Jenkins中的可锁定资源插件不等待资源

时间:2020-07-28 11:37:33

标签: jenkins groovy jenkins-pipeline locking jenkins-plugins

我正在使用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}"
                    }
                }
            }
        }
    }
}

现在,假设Jenkins job-1正在运行以在Windows上构建应用程序,并且它已获取Windows资源Win_Res_1。此时,我启动了另一个Jenkins job-2,它也必须在Windows机器上进行构建。因此,这里的期望是job-2将等待资源,直到job-1放弃它。 job-1完成后,资源Win_Res_1将对job-2可用。

对于我来说,这没有发生。可锁定资源插件没有等待资源,而是引发以下错误(在job-2进行中的job-1中)

No such property: resource_name for class: groovy.lang.Binding

这是插件的已知限制吗?

我使用的是Jenkins 2.89.1版,可锁定资源插件的版本是2.2

1 个答案:

答案 0 :(得分:0)

这是一个已知问题,已在Lockable插件版本2.3(JENKINS-34433)中得到解决。

但是,我已升级到Jenkins 2.235.1和Lockable插件版本2.8,现在没有发现问题。