Jenkins如何获取当日构建次数?Version Number Plugin使用异常
解决Jenkins流水线获取当日构建次数的问题
核心问题分析
你遇到的问题根源是:Version Number Plugin不会自动将BUILDS_TODAY注入环境变量,直接通过env.BUILDS_TODAY读取自然返回null。这个变量是插件提供的占位符,必须通过插件专属步骤才能解析出实际值。
方法一:正确使用Version Number Plugin
确保插件已安装后,在流水线中使用versionNumber步骤来提取当日构建次数,示例脚本:
pipeline { agent any stages { stage('获取当日构建次数') { steps { script { // 调用插件解析BUILDS_TODAY占位符 def todayBuildCount = versionNumber(buildNumberString: '${BUILDS_TODAY}') echo "当前流水线今日构建次数:${todayBuildCount}" } } } } }
执行后就能得到正确的当日构建次数,插件会自动统计当前流水线从今日0点到现在的构建数量。
方法二:无需插件,用Jenkins原生API实现
如果不想依赖插件,可以直接通过Jenkins API遍历当前项目的构建记录并过滤计数,示例脚本:
pipeline { agent any stages { stage('计算当日构建次数') { steps { script { // 获取今日0点的时间戳 def today = new Date() def startOfToday = new Date(today.year, today.month, today.date, 0, 0, 0) // 获取当前流水线的所有构建记录 def allBuilds = currentBuild.rawBuild.project.getBuilds() def todayBuildCount = 0 // 遍历过滤今日构建 allBuilds.each { build -> if (build.getTime().after(startOfToday)) { todayBuildCount++ } } echo "当前流水线今日构建次数:${todayBuildCount}" } } } } }
你之前的操作问题总结
- 错误认为Version Number Plugin会自动把
BUILDS_TODAY注入环境变量,实际上该变量是插件的模板占位符,必须通过versionNumber步骤触发解析 - 用shell打印环境变量找不到
BUILDS_TODAY是正常的,因为它从未被注入到环境变量集合中
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

