jenkins - 你如何在 Jenkins 中获得构建持续时间?

标签 jenkins build jenkins-pipeline

我正在使用 Jenkins 管道配置 Android 应用程序构建过程。
在构建的开始和结束时,会向 Slack channel 发送一条消息。 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/ ")
我还希望 Slack 通知包含构建运行所需的时间。是否可以在不添加任何外部插件的情况下执行此操作?
如果有一个保存这些信息的环境变量就完美了,但我找不到这样的变量。

最佳答案

由于这个 jenkins-pipeline 脚本在 Groovy 中,你可以简单地使用 new Date()在上面。像这样的东西 "Current time ${new Date()}"message论点必须有效:

slackSend (channel: '#slack-test', color: 'warning', message: "Current time ${new Date()}")

这将在您的 channel 中生成以下消息:
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 中的以下脚本将开始时间保存在文件中:
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-pipeline 中,解析文件中的日期并获取与当前时间的差异:
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 - 你如何在 Jenkins 中获得构建持续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40022313/

相关文章:

eclipse - 在为项目构建不同的 Eclipse CDT 共享资源文件夹中

jenkins - 如何在 Jenkins 声明式管道步骤中检查数组中是否存在字符串

java - Selenium 警报框 Java

jenkins - 作业导入插件不导入文件夹

ubuntu - (增量)重建 Debian/Ubuntu 软件包

ios - 新建的WebRTC.framwork(iOS)缺少RTCAudioSession.h等文件

java - Jenkins 在后台启动应用程序

java - 使用 Maven 而不是 SonarRunner 从 Jenkins 调用 Java 和 Javascript 的 Sonar 分析

jenkins - 无法通过 SCM 跳过插件跳过 Jenkins 构建

Jenkins 声明性管道 : Sequential execution of an axis of a matrix-build