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

如何在Jenkins声明式流水线代码中获取Epoch(Unix)时间戳

Jenkins声明式Pipeline获取13位毫秒级Unix时间戳方案

以下两种实现都可以直接输出符合要求的13位毫秒级Epoch时间戳(格式参考1656166890987),不需要复杂换算:

  • 无插件通用方案(优先推荐)
    直接使用Groovy/Java原生的静态方法获取,不需要安装任何Jenkins插件,兼容所有版本的声明式Pipeline。如果需要在全Pipeline所有阶段复用这个时间戳,可以直接在全局环境变量块定义:
pipeline {
    agent any
    environment {
        // 核心取值逻辑,直接返回13位毫秒时间戳
        EPOCH_TIMESTAMP = "${System.currentTimeMillis()}"
    }
    stages {
        stage('自动化测试执行') {
            steps {
                // 直接通过env变量调用即可,比如打日志、传给测试脚本作为版本标识
                echo "当前测试批次毫秒时间戳: ${env.EPOCH_TIMESTAMP}"
                // 示例:把时间戳作为参数传给测试启动命令
                sh "python run_test.py --batch-id=${env.EPOCH_TIMESTAMP}"
            }
        }
    }
}

说明:System.currentTimeMillis()是原生内置方法,直接返回从1970-01-01 00:00:00 UTC到当前时刻的真实毫秒数,输出长度固定为13位,完全匹配格式要求,没有精度损失。

  • 已安装timestamper插件的简化写法
    如果你的Jenkins环境已经预装了常用的timestamper日志时间戳插件,也可以直接用构建对象自带的时间属性取值:
pipeline {
    agent any
    stages {
        stage('获取时间戳') {
            steps {
                script {
                    def epochMillis = currentBuild.startTimeInMillis.toString()
                    echo "构建启动时间的13位毫秒戳: ${epochMillis}"
                }
            }
        }
    }
}

避坑提醒:不要使用秒级时间戳乘1000的方式凑13位,这种写法生成的时间戳最后三位固定为000,没有真实毫秒精度,不符合实际使用要求。也不推荐使用new Date().getTime()的写法,效果和原生方法一致但会额外生成临时对象,没有必要。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 06:27:14