我如何将 jenkins Build Duration 从毫秒转换为 hr:min:sec

Posted

技术标签:

【中文标题】我如何将 jenkins Build Duration 从毫秒转换为 hr:min:sec【英文标题】:How can i convert jenkins Build Duration from milliseconds to hr:min:sec 【发布时间】:2018-07-17 10:04:05 【问题描述】:

我可以通过 curl 使用 Rest API 获取 jenkins 构建持续时间,但时间以毫秒为单位。

curl -s "$JOB_URL/$BUILD_NUMBER/api/json?tree=duration

我正在寻找一种以标准格式获取时间的方法,即 hr:min:sec 我试过这个到现在

curl -s "$JOB_URL/$BUILD_NUMBER/api/json?tree=duration | awk -F : ' print $2 ' | awk -F  ' printf "%i hr %i min %i sec", ($1 / 3600000), ($1 % 3600000)/60000 , ($1 % 100)'

这绝对不正确,因为 URL 以毫秒为单位提供的时间是 417597,但它以 hr:min:sec0 hr 6 min 97 sec

curl -s $JOB_URL/3458/api/json?tree=duration
"duration":417597

curl -s $JOB_URL/3458/api/json?tree=duration | awk -F : ' print $2 ' | awk -F  ' printf "%i hr %i min %i sec", ($1 / 3600000), ($1 % 3600000)/60000 , ($1 % 100)'
0 hr 6 min 97 sec

分钟和小时的转换是正确的。 我被困在秒数转换中 有人可以建议这里有什么问题。 提前致谢。

【问题讨论】:

欢迎来到 Stack Overflow,您能否在您的帖子中使用 CODE TAGS 发布curl 命令的输出?将有助于我们帮助你,干杯:) 编辑了问题..:) 【参考方案1】:
echo 417597 | awk '
  t_sec = int($0/1000)
   divmod(t_sec, 60); t_min = Q; sec = R
   divmod(t_min, 60);    hr = Q; min = R
   printf "%s hr %s min %s sec\n", hr, min, sec

function divmod(a, b)  # quotient and remainder
    Q = int(a / b)
    R = a - Q * b
'

返回

0 hr 6 min 57 sec

【讨论】:

【参考方案2】:

从持续时间的值,你可以简单地计算 groovy 中的值:D

时髦

def duration = 635309

// Roud the hour
double hour = Double.valueOf((duration / 3600000)).round()
def hourStr = hour > 0 ? " $hourh" : ""

// Handle minute parts
double totalMin = Double.valueOf((duration % 3600000)/60000).round(2)
def realMin = "$totalMin".split("\\.")
def min = Integer.valueOf(realMin[0])
def minStr = Integer.valueOf(min) > 0 ? "$minmin" : ""

// Handle the reminder of seconds
def realSec = realMin[1]
double secVal = Double.valueOf("0.$realSec") * 60
def sec = "$secVal".split("\\.")[0]
sec = Integer.valueOf(sec) > 0 ? "$secsec" : ""

println "Duration is Build time$hourStr $minStr $sec"

执行

持续时间是构建时间 10 分 35 秒

【讨论】:

以上是关于我如何将 jenkins Build Duration 从毫秒转换为 hr:min:sec的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Jenkins 参数化构建?

Jenkins 为 Jenkins 服务器中的所有构建添加 Post Build Activity

共享 jenkins 库 build.gradle 错误

快速获取Jenkins上build

如何将Jenkins与禅道集成

如何在 Build 命令中传递 Jenkins BUILD_TIMESTAMP 变量来创建报告?