如何分析触发的 jenkins 作业的控制台输出数据?

How can I analyze console output data from a triggered jenkins job?

我有 2 份工作 'job1' 和 'job2'。我将从 'job1' 触发 'job2'。我需要获取触发 'job2' 的 'job1' 构建的控制台输出,并希望在 'job2'.

中处理它

您可以使用 Post Build Task 插件,然后您可以使用 wget 命令获取控制台输出:

wget -O console-output.log ${BUILD_URL}consoleOutput

困难的部分是找出触发下游作业 (job2) 的上游作业 (job1) 的内部版本号。一旦你有了它,你就可以访问控制台日志,例如通过 ${BUILD_URL}consoleOutput,正如 ivoruJavaBoy 指出的那样。

下游构建如何确定它被触发的作业和构建号?这在 Jenkins 中出奇地困难:

解决方案 A("explicit" 方法):使用 Parameterized Trigger Plugin 到 "manually" 将内部版本号参数从 job1 传递到 job2。除了管理开销之外,这种方法还有一个更大的缺点:job1job2 将不再 运行 异步; 恰好 job2 中的 运行 个每个 运行 job1 中的运行。如果 job2job1 慢,那么您需要规划资源以避免 job2 的构建堆积在队列中。

因此,某些解决方案 "B" 会更好,您可以从 Jenkins 的内部数据中提取 隐式 上游信息。您可以为此使用 Groovy;一个更简单的方法可能是在 job2 中使用 Job Exporter Plugin。该插件将在 job2 构建的工作区中创建一个 "properties"(文本)文件。该文件包含两个完全包含您要查找的信息的条目:

build.upstream.number   Number of upstream job that triggered this job. Only filled if the build was triggered by an upstream project.
build.upstream.project  Upstream project that triggered this job.

读取该文件,然后使用上面的 URL 中的信息读取控制台日志。