我正在努力创建一个格式的时间戳,我希望在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)的解决方法似乎无法正常工作。
任何人都有一种方法可以生成类似于我尝试的格式的时间戳吗?
答案 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)