当前位置: 首页 > 面试题库 >

Jenkins Pipeline-如何从并行构建中获取日志

廉学潞
2023-03-14
问题内容

是否可以(如果可以),如何分别获取每个并行步骤的日志输出?

即:

def projectBranches = [:]
        for (int i = 0; i < projects.size(); i++) {
            def _i = i
            projectBranches[_i] = {
                someFunction(_i)
            }
        }

        parallel projectBranches

现在是否可以获取每个projectBranches [_i]的日志?


问题答案:

您可以使用Jenkins REST API获取节点:job / test / 1 / api / json?depth = 2

结果应包含以下内容:

{"_class":"org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode","actions":[{},{},{}],"displayName":"Branch: 0","iconColor":"blue","id":"13","parents":["3"],"running":false,"url":"job/test/1/execution/node/13/"},
{"_class":"org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode","actions":[{},{},{}],"displayName":"Allocate node : Start","iconColor":"blue","id":"23","parents":["13"],"running":false,"url":"job/test/1/execution/node/23/"},
{"_class":"org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode","actions":[{},{}],"displayName":"Allocate node : Body : Start","iconColor":"blue","id":"33","parents":["23"],"running":false,"url":"job/test/1/execution/node/33/"},
{"_class":"org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode","actions":[{},{}],"displayName":"Print Message","iconColor":"blue","id":"37","parents":["33"],"running":false,"url":"job/test/1/execution/node/37/"}

因此,对于您的情况,您对分支名称为StepAtomNode的子级(给定名称为0-9)感兴趣。从中,您可以通过简单地将日志添加到控制台输出地址来获得控制台输出地址(例如:job
/ test / 1 / execution / node / 37 / log)。

现在,这里变得有些丑陋,您需要解析html才能从

<pre class="console-output">log here
</pre>


 类似资料:
  • —profile 参数可以收集一些构建期间的信息并保存到 build/reports/profile 目录下. 并且会以构建时间命名这些文件. 下面是一份日志. 这份日志记录了总体花费时间以及各过程花费的时间. 并以时间大小倒序排列. 并且记录了任务的执行情况. 如果采用了 buildSrc, 那么在 buildSrc/build 下同时也会生成一份日志记录记录.

  • 问题内容: 我从ResultSet获取Date对象时遇到问题。在数据库中,它具有一个值(例如2014-08-01),并且从resultSet获取它之后,它具有另一个值(2014-08-31)。我知道ResultSet的getDate方法返回java.sql.Date,但是我尝试了一些解决方案,例如: 或 但问题是相同的。如果尝试 ,则抛出NullPointerException。 有人可以解释吗?

  • 问题内容: 我如何从詹金斯获得最新版本的构建时间戳记?我想在后期构建操作中将此值插入“电子邮件”主题。 问题答案: 注意: 这在Jenkins 1.597中已更改,请参阅此处以获取有关迁移的更多信息 您应该能够导航到来查看构建期间可用的所有全局环境变量。 替换为用于获取Jenkins网页的URL(例如,可能是)。 环境变量之一是: 如果您使用jenkins可编辑的电子邮件通知,则应该可以在电子邮件

  • 问题内容: 它是纠正与Java 8,你需要执行下面的代码确实获得从平行流Collection? 从CollectionAPI: 默认Stream parallelStream() 返回一个可能与此流作为其源的并行Stream。此方法允许返回顺序流。 从BaseStreamAPI: S parallel() 返回并行的等效流。可能由于流已经是并行的,或者因为基础流的状态被修改为并行而返回自身。 我需

  • 在Java8中,您需要执行以下代码才能从中获得并行流,这是否正确? 来自API: 默认流parallelStream()

  • 问题内容: 我从ResultSet获取Date对象时遇到问题。在数据库中,它具有一个值(例如2014-08-01),并且从resultSet获取它之后,它具有另一个值(2014-08-31)。我知道ResultSet的getDate方法返回java.sql.Date,但是我尝试了一些解决方案,例如: 或 但问题是相同的。如果我尝试, 它将抛出NullPointerException。 有人可以解释