可锁定资源插件 Jenkinsfile -> 动态

Lockable Resource Plugin Jenkinsfile -> Dynamic

这是一个声明性的 Jenkins 管道。

使用可锁定资源插件 (https://plugins.jenkins.io/lockable-resources/) 我想根据用户在参数部分选择的环境动态锁定多个阶段。这就是我希望完成的方式:

    pipeline {
    parameters {
        choice choices: ['---', 'prod', 'test'], description: 'Environment', name: 'environment'
    }
    stage('MY_APPLICATION') {
        options{
            lock('resource': "${params.environment}")
        }
        stages {
            stage('TEST') {
                when { expression { "${params.environment}" == 'prod' } }
                steps { ... }
            }
            stage('PROD') {
                when { expression { "${params.environment}" == 'test' } }
                steps { ... }
            }
        }
    }
    }

但我无法访问选项块中的参数,它始终使用默认值。有谁知道如何根据环境变量动态锁定资源?

我是这样解决的:

在选项块中,有可用的 $currentBuild 变量,这样就可以动态锁定资源:

pipeline {
 parameters {
     choice choices: ['---', 'prod', 'test'], description: 'Environment', name: 'environment'
 }
 stage('MY_APPLICATION') {
     options{
         lock('resource': "${currentBuild.getRawBuild().getEnvironment(TaskListener.NULL).environment}")
     }
     stages {
         stage('TEST') {
             when { expression { "${params.environment}" == 'prod' } }
             steps { ... }
         }
         stage('PROD') {
             when { expression { "${params.environment}" == 'test' } }
             steps { ... }
         }
     }
 }
}