繁体   English   中英

如何知道詹金斯工作的经过时间

[英]How to know elapsed time of a Jenkins Job

我有一份 Jenkins 工作,在工作结束时(可能是在发布操作或该工作的最后阶段,我想知道自工作开始以来已经过去了多少时间。

怎么能找到呢? 有没有简单直接的方法来了解它?

安装时间戳插件

Timestamper 插件将时间戳添加到 Jenkins 作业的控制台输出中。 例如:

21:51:15  Started by user anonymous
21:51:15  Building on master
21:51:17  Finished: SUCCESS

/timestamps/默认情况下,以秒为单位显示经过的时间,小数点后三位。

/timestamps/?time=HH:mm:ss&appendLog显示系统时钟时间并附加日志中的行。

/timestamps/?elapsed=HH:mm:ss.S&appendLog显示经过的时间并附加日志中的行。

/timestamps/?time=HH:mm:ss&elapsed=HH:mm:ss.S显示系统时钟时间和经过时间。

/timestamps/?currentTime&time=HH:mm:ss在 Jenkins 控制器上显示当前时间。

示例管道脚本

pipeline {
    agent any

    stages {
        stage('Hello') {
            steps {
                echo 'Hello World'
                sleep 10
            }
        }
    }
    post {
        always {
            println "${currentBuild.durationString}"
        }
    }
}

输出:

[Pipeline] {
[Pipeline] stage
[Pipeline] { (Hello)
[Pipeline] echo
Hello World
[Pipeline] sleep
Sleeping for 10 sec
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Declarative: Post Actions)
[Pipeline] echo
14 sec and counting
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

如果你不喜欢and counting部分,你可以随时做

"${currentBuild.durationString}".replaceAll(' and counting', "")

除了上面的所有答案之外,还有一种非常好的方法:

import hudson.Util
.
.
.
String time = Util.getTimeSpanString(System.currentTimeMillis() - currentBuild.startTimeInMillis)

如果您显示time ,它将采用以下格式:

2 hr 15 min 47 sec

这非常简洁,最初不需要设置任何额外的变量,也不需要编辑(在我的情况下,我想要这种确切的方式)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM