我想在控制台内打印包括舞台标题在内的所有舞台的舞台时间。
类似的东西:
Build Code: 19s
Unit Tests: 7s
Integration Tests: 17s
看看插件代码,我可以看到它是如何通过格式化程序呈现的,但是我无法弄清楚如何通过Jenkinsfile访问这些值。
在源代码中,似乎正在使用毫秒级的时间。我可以轻松地将其转换为更好的人类可读时间。
/**
* Calculate how long something took from start to end
* @param start Start time in milliseconds
* @param end End Time in milliseconds
* @return Duration as String from start to end
*/
def calculateDuration(start, end) {
long elapsedTime = end - start
Long second = (elapsedTime / 1000).longValue() % 60;
Long minute = (elapsedTime / (1000 * 60)).longValue() % 60;
Long hour = (elapsedTime / (1000 * 60 * 60)).longValue() % 24;
Long remainderMillis = elapsedTime % 1000
return "${hour}h ${minute}m ${second}s ${remainderMillis}ms"
}
答案 0 :(得分:1)
因此,这并不是您要找的超级简单的解决方案,但是我也不知道如何执行此操作,因此想尝试一下。
基本上,我是在OS级别上将简单的HTML写入文件,最后通过 Rich Text Publisher 插件进行发布。然后显示在构建页面上。
我不确定如何将持续时间正确格式化为hh:mm:ss
def logit(logMessage) {
logFile.append(logMessage + "\n")
}
def calculateDuration(start, end) {
long elapsedTime = end - start
Long second = (elapsedTime / 1000).longValue() % 60;
Long minute = (elapsedTime / (1000 * 60)).longValue() % 60;
Long hour = (elapsedTime / (1000 * 60 * 60)).longValue() % 24;
Long remainderMillis = elapsedTime % 1000
return "${hour}h ${minute}m ${second}s ${remainderMillis}ms"
}
node () {
stage('Create logfile') {
sh "rm -f /tmp/log.html"
logFile = new File("/tmp/log.html")
logit("<html>")
logit(" <body>")
}
stage('Time this stage') {
start = System.currentTimeMillis()
logit("Start time " + start + "<br>")
sleep(3)
end = System.currentTimeMillis()
logit("End time " + end + "<br>")
dur = calculateDuration(start, end)
println "Duration: " + dur
logit("Duration: " + dur + "<br>")
}
stage('Publish') {
logit(" </body>")
logit("</html>")
rtp (nullAction: '1', stableText: '${FILE:/tmp/log.html}')
}
}
答案 1 :(得分:0)