【发布时间】:2014-06-12 03:32:37
【问题描述】:
我正在使用 Perl 脚本来触发在 Jenkins 中使用 LWP 模块的构建。这可行,但在执行作业后,我想解析控制台输出。
有没有办法得到这个?
【问题讨论】:
我正在使用 Perl 脚本来触发在 Jenkins 中使用 LWP 模块的构建。这可行,但在执行作业后,我想解析控制台输出。
有没有办法得到这个?
【问题讨论】:
登录 Jenkins 并查看网页底部靠近右侧的位置,然后单击 REST API 链接。这将为您提供有关 Jenkins RESTful API 的信息,一旦您了解如何构建 URL,这是从 Jenkins 中提取信息的好方法。
而且,您可以通过以下方式获取控制台文本:
$ curl "${JENKINS_URL}/job/${JOB_NAME}/lastBuild/consoleText"
您可以使用 Perl 的各种 LWP 模块与 Jenkins 对话。
【讨论】:
consoleText 替换为 consoleFull,您将获得 HTML 格式的日志。然后,您当然需要解析它以提取内容。在 Windows 上,您可以使用 Powershell 免费获得它。 $resp = Invoke-Webrequest "$(JENKINS_URL)/job/$(JOB_NAME)/lastBuild/consoleFull" $resp.ParsedHtml.body.innerText > someFile.log(Linux 上也可用的 Powershell 核心不包括 ParsedHtml由于对 MS DLL 的要求而导致的对象)
${JENKINS_URL}/job/${JOB_NAME}/lastBuild/timestamps?appendLog&elapsed=HH:mm:ss.S
timestamps api 方法是由Timestamper plugin 提供的。它还提供startLine、endLine、locale等参数。
latestBuild 确实返回了以前的构建。我讨厌添加睡眠或其他东西。
为 Jenkins 使用 Log Parser Plugin。阅读page number 24 here 了解配置和其他详细信息。
【讨论】:
如果您想从另一个在主服务器上运行的 Jenkins 作业访问日志,您可以从链式(子)作业中进行访问,而无需发送 http GET。见https://stackoverflow.com/a/41974193/1580627。
【讨论】: