我正在使用 Jenkins 来自动化我们的构建和发布过程。
在 Jenkins 下执行作业时,时间戳不会显示在控制台构建日志中。
为了将时间戳添加到控制台构建日志中,我已经下载了"时间戳器"插件,并在 Jenkins 下的每个作业配置中启用了"将时间戳添加到控制台输出"选项。现在,时间戳已附加到 Jenkins 中的控制台构建日志中。
但是当我在 Jenkins 主目录下的"jobs"文件夹中检查相同的构建日志文件时,时间戳未附加到日志文件中。
由于在向利益干系人发送邮件时,此日志文件会附加作业构建详细信息,因此不可避免地会在日志文件中添加时间戳。
请检查以下内容。
在控制台构建日志中
15:40:04 Started by user TEST
15:40:04 [EnvInject] - Loading node environment variables.
15:40:04 Building in workspace C:jenkinsworkspace
15:40:04 No emails were triggered.
在实际日志文件中
Started by user TEST
[EnvInject] - Loading node environment variables.
Building in workspace C:jenkinsworkspace
No emails were triggered.
所以,我有两个问题
- 如何在 Jenkins 中有更多作业时启用"将时间戳添加到控制台输出"选项作为所有作业的一次性处理?
- 如何将时间戳添加到 Jenkins 主目录下"作业"文件夹下的实际构建日志文件中?
提前谢谢。
时间戳器提供了一个 API 来获取带有时间戳的日志。
您可以使用我的回答"如何在 jenkins 中手动读取/timestamps 文件的内容 ",了解如何获取带有时间戳的日志以提取日志的副本并将其另存为文本文件。
总之:
使用此网址
http://${JENKINS_IP_PORT}/job/${JOB_NAME}/${JOB_NUMBER}/timestamps/?time=yyyy-MM-dd%20HH:mm:ss&appendLog
获取纯文本响应
2020-03-19 13:16:47 Jenkins did something here
2020-03-19 13:16:47 and this is something else that happend
2020-03-19 13:16:47 This line shows some output
2020-03-19 13:16:47 etc.
2020-03-19 13:16:47 etc.
2020-03-19 13:16:47 ...
2020-03-19 13:16:47 ...
2020-03-19 13:16:47
2020-03-19 13:16:47
并将其保存到作业文件夹中的文件中。
尝试在管道下的 jenkinsfile 中使用"选项"添加时间戳:
pipeline {
...
options {
timestamps()
}
...
}
我有同样的问题#2。
如果你的 Jenkins 服务器需要身份验证,你需要 ~/.wgetrc:
http-user=<user>
http-password=<your password>
wget -O - --auth-no-challenge "http://<Jenkins server URL>/job/<Job name>/<job#>/consoleFull" | sed -e 's@<span class="timestamp"><b>(.*)</b> </span>@1 @' > logfile.with.timestamp