可锁定资源插件 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 { ... }
}
}
}
}
这是一个声明性的 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 { ... }
}
}
}
}