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

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}"
                }
            }
        }
    }
}

你之前的操作问题总结

  1. 错误认为Version Number Plugin会自动把BUILDS_TODAY注入环境变量,实际上该变量是插件的模板占位符,必须通过versionNumber步骤触发解析
  2. 用shell打印环境变量找不到BUILDS_TODAY是正常的,因为它从未被注入到环境变量集合中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 22:47:36