You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins使用Lockable Resource Plugin按环境动态锁定资源问题求助

问题根因

声明式Pipeline的options块会在Pipeline初始化阶段提前解析,此时用户输入的构建参数还未完成加载,因此始终只能读取到参数的默认值,无法获取运行时用户选择的参数。

解决方案

将lock配置从options块移除,改用脚本式lock步骤在运行时动态调用,此时构建参数已经完成加载,可以正常读取用户选择的环境值,同时可以覆盖整个父级stage下的所有子阶段:

pipeline {
    parameters {
        choice choices: ['---', 'prod', 'test'], description: 'Environment', name: 'environment'
    }
    stage('MY_APPLICATION') {
        steps {
            // 运行时动态获取参数加锁,锁的作用域覆盖闭包内所有逻辑
            lock(resource: params.environment) {
                stage('TEST') {
                    when { expression { params.environment == 'prod' } }
                    steps {
                        // 业务逻辑
                    }
                }
                stage('PROD') {
                    when { expression { params.environment == 'test' } }
                    steps {
                        // 业务逻辑
                    }
                }
            }
        }
    }
}

注意事项

  • 该写法的锁作用域和原options写法完全一致,会在进入MY_APPLICATION阶段时申请锁,锁释放时机为所有子阶段执行完成后
  • 参数引用不需要额外加"${}"包裹,直接使用params.environment即可,避免不必要的字符串插值冗余

内容的提问来源于stack exchange,提问作者schowave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:27:03