gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 12:05:14 27 4
gpt4 key购买 nike

我正在使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com