在Jenkinsfile中创建时间戳

时间:2017-08-17 13:52:41

标签: jenkins jenkins-pipeline

我正在努力创建一个格式的时间戳,我希望在Jenkins中使用脚本管道。这是管道中的代码:

def cal = Calendar.instance
def dateFormat = 'YYYYMMDD-hhmmss'
def timeZone = TimeZone.getTimeZone('CST')
def timeStamp = cal.time​.format(dateFormat,timeZone)​
println "Timestamp is: ${timeStamp}"
env.BUILD_TIMESTAMP = timeStamp

当我通过Jenkins运行时,我得到以下内容:

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: unclassified field java.util.GregorianCalendar time​
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.unclassifiedField(SandboxInterceptor.java:387)
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:371)

我已经看到在线提及不同字段的类似问题,但将其添加到scriptapproval.xml(以及重新启动Jenkins)的解决方法似乎无法正常工作。

任何人都有一种方法可以生成类似于我尝试的格式的时间戳吗?

2 个答案:

答案 0 :(得分:8)

我找到了解决方法。我直接访问了字段time。如果我将呼叫从cal.time更改为cal.getTime(),Jenkins的表现要好得多。我把它整合成一个单行,但功能相同:

def timeStamp = Calendar.getInstance().getTime().format('YYYYMMdd-hhmmss',TimeZone.getTimeZone('CST'))

感谢那些看过的人。

答案 1 :(得分:0)

或使用Date()格式的SimpleDateFormat()

import java.text.SimpleDateFormat

def dateFormat = new SimpleDateFormat("yyyyMMddHHmmss")
def date = new Date()
def timestamp = dateFormat.format(date)