繁体   English   中英

在终端使用 curl 调用构建后,如何在终端构建期间查看 Jenkins 控制台输出?

[英]How to view Jenkins console output during a build from the terminal after invoking build using curl from the terminal?

我已经构建了一个 Jenkins 作业来运行自动 ZAP-Proxy 扫描。

我使用curl -X POST -u YOUR_USER:YOUR_USER_PASSWORD http://YOUR_JENKINS_URL/job/YOUR_JOB从终端构建作业。 有没有办法在构建作业时在终端中显示控制台输出?

这是可能的,但由于两个原因,它有点复杂:

  1. 当您通过curl触发新构建时,构建不会立即开始 构建将进入构建队列,并且只有在 Jenkins 找到合适的执行器后才会开始执行。 在此之前,根本没有构建 URL。
  2. 从技术上讲,(连续)控制台输出以多个片段形式交付,必须通过 HTTP 单独检索这些片段

所以,一旦你触发了构建,你需要离开构建队列找到它的 URL。 它可以在 Groovy 中很好地完成 —— 作为一种更简单的启发式方法,您可以等待特定时间,然后使用lastBuild引用。

为了获取控制台日志片段,您将使用<buildUrl>/logText/progressiveText端点。 创建一个循环获取该 URL 并检查X_More_DataX_Text_Size HTTP 标头以获取有关控制台输出是否(以及什么)可用的信息。 您可以在bash使用curl循环执行此操作; 我在网上找到了这个Groovy 示例

最后,最优雅的解决方案可能是

  • 通过提交将触发构建的 Groovy 脚本触发新构建然后等待构建离开构建队列,返回构建 URL。
  • 然后使用另一个脚本来轮询/获取/显示该构建的控制台输出。

如果您使用 CLI 界面提交脚本,那么您可以在单个脚本中完成所有这些步骤。 如果您使用 REST API,那么由于 REST API 端的输出缓冲,第二部分(“连续输出”)可能无法工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM