如何在Jenkinsfile中正确使用Version Number插件?
解决Jenkins Version Number插件在Jenkinsfile中的编译错误
你碰到的这个MultipleCompilationErrorsException错误,核心原因是Groovy语法不允许直接用${BUILD_DATE_FORMATTED, "yyyy-MM-dd"}这种方式调用Version Number插件的变量,而且插件注入的环境变量需要通过正确的方式引用。下面给你两种可行的正确用法:
方法一:引用插件预定义的环境变量
如果你已经在Jenkins全局配置的Version Number插件里,定义了BUILD_DATE_FORMATTED(格式为yyyyMMdd)和BUILDS_TODAY这类变量,那在Jenkinsfile里需要通过env对象来访问这些环境变量,Groovy的字符串插值要放在双引号里:
stage("Build") { echo "Building..." TAG = "${env.BUILD_DATE_FORMATTED}-develop-${env.BUILDS_TODAY}" sh "docker build -t ${IMAGE}:${TAG} ." }
方法二:直接在Pipeline中使用versionNumber step生成标签
如果不想依赖全局配置,也可以直接在Pipeline里调用插件的versionNumber step来生成你需要的标签格式,这样更灵活:
stage("Build") { echo "Building..." def TAG = versionNumber(buildNumber: '${BUILDS_TODAY}', versionString: '${BUILD_DATE, "yyyyMMdd"}-develop-${BUILDS_TODAY}') sh "docker build -t ${IMAGE}:${TAG} ." }
这里的versionString参数里可以直接使用插件支持的变量表达式,比如${BUILD_DATE, "yyyyMMdd"}会生成指定格式的日期,${BUILDS_TODAY}是当天构建次数。
需要注意的是:
- 字符串插值在Groovy里,只有双引号包裹的字符串才会解析变量,单引号会原样输出;
- 确保你已经在Jenkins的插件管理里正确安装了Version Number插件,并且Jenkins服务已经重启生效(如果是新安装的话)。
内容的提问来源于stack exchange,提问作者Dimon Buzz
相关产品推荐
相关产品推荐

