首页 > 解决方案 > 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-2job-1

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

这是插件的已知限制吗?

我在 Jenkins 版本 2.89.1 上,可锁定资源插件版本是 2.2

标签: jenkinsgroovyjenkins-pipelinelockingjenkins-plugins

解决方案


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

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


推荐阅读