如何显示在Jenkins中运行构建所花费的时间?
我正在使用Jenkins管道配置Android应用程序构建过程。
在构建的开始和结束时,将消息发送到相关的Slack通道。
Jenkinsfile的相关部分如下所示:
slackSend (channel: '#slack-test', color: 'warning', message: "Finished: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' State: ${STATE}. Artifacts can be viewed here: ${env.BUILD_URL}artifact/Product/build/outputs/ ")
除了上述信息之外,我还想包括构建运行到该消息的时间,该消息通知构建结束。
是否可以在不添加任何外部插件的情况下做到这一点?如果有一个环境变量可以保存此信息,那将是完美的,但我找不到这样的变量。
回答:
由于此 jenkins-pipeline 脚本位于 Groovy中,因此 您可以new Date()
在其上简单地使用它。这样"Current
time ${new Date()}"的message
论点必须起作用:
slackSend (channel: '#slack-test', color: 'warning', message: "Current time ${new Date()}")
这将在您的频道中产生以下消息:
Current time: Thu Oct 13 17:25:12 CEST 2016
如果需要特定的日期格式,可以使用format(String format)
方法,例如"${new
Date().format('dd/MM/yyyy')}":
slackSend (channel: '#slack-test', color: 'warning', message: "Current time ${new Date().format('dd/MM/yyyy')}")
相反,它将产生以下消息:
Current time: 13/10/2016
由于您不想使用任何外部插件(这样做有些棘手),因此可以使用jenkins-pipeline中的follow脚本将开始时间保存在文件中:
def f = new File("/tmp/buildStart.txt")def start = new Date().format('dd/MM/yyyy HH:mm:ss')
f.text = start
slackSend color: 'red', message: "Build start at ${start}"
然后在构建完成的另一个jenkins管道中,从文件中解析日期,并获得与当前时间的差值:
def f = new File("/tmp/buildStart.txt")def startDate = new Date().parse('dd/MM/yyyy HH:mm:ss',f.text)
def endDate = new Date()
def tookTime = groovy.time.TimeCategory.minus(endDate,startDate).toString()
slackSend color: 'red', message: "Total time: ${tookTime}"
以上是 如何显示在Jenkins中运行构建所花费的时间? 的全部内容, 来源链接: utcz.com/qa/405092.html