【问题标题】:How to get Jenkins "Console Output" after triggering build remotely?远程触发构建后如何获取Jenkins“控制台输出”?
【发布时间】:2014-06-12 03:32:37
【问题描述】:

我正在使用 Perl 脚本来触发在 Jenkins 中使用 LWP 模块的构建。这可行,但在执行作业后,我想解析控制台输出。

有没有办法得到这个?

【问题讨论】:

    标签: perl jenkins


    【解决方案1】:

    登录 Jenkins 并查看网页底部靠近右侧的位置,然后单击 REST API 链接。这将为您提供有关 Jenkins RESTful API 的信息,一旦您了解如何构建 URL,这是从 Jenkins 中提取信息的好方法。

    而且,您可以通过以下方式获取控制台文本:

    $ curl "${JENKINS_URL}/job/${JOB_NAME}/lastBuild/consoleText"
    

    您可以使用 Perl 的各种 LWP 模块与 Jenkins 对话。

    【讨论】:

    • 呃……当我看到这个时我非常兴奋,但它不包括日志消息中的时间戳!!!至少在版本 1.595
    • 我认为时间戳不是日志的一部分。当您查看日志时,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 的要求而导致的对象)
    • 现在我找到了真正的解决方案:D ${JENKINS_URL}/job/${JOB_NAME}/lastBuild/timestamps?appendLog&elapsed=HH:mm:ss.S
    • @Ingemar 我相信timestamps api 方法是由Timestamper plugin 提供的。它还提供startLineendLinelocale等参数。
    • 有没有办法也包含挂起的构建?当我触发构建时,初始化需要 2 前 3 秒,在此期间 latestBuild 确实返回了以前的构建。我讨厌添加睡眠或其他东西。
    【解决方案2】:

    为 Jenkins 使用 Log Parser Plugin。阅读page number 24 here 了解配置和其他详细信息。

    【讨论】:

      【解决方案3】:

      如果您想从另一个在主服务器上运行的 Jenkins 作业访问日志,您可以从链式(子)作业中进行访问,而无需发送 http GET。见https://stackoverflow.com/a/41974193/1580627

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-06-07
        • 1970-01-01
        • 2017-12-31
        • 1970-01-01
        • 2015-04-03
        • 2013-12-20
        • 1970-01-01
        相关资源
        最近更新 更多