如何从单个 Jenkins Pipeline 并行块获取 stdout 和 stderr?

How to get stdout and stderr from single Jenkins Pipeline parallel blocks?

我在我的 Jenkinsfile 中使用了一个 parallel 块来同时执行一些测试,但是所有的输出都变得混乱了。

这是我的 Jenkinsfile 的摘录,例如:

// do some IT against different databases
stage name: 'IT'

parallel (
    mysqlIT: {
        node {
            executeMysqlIT()
        }
    },
    oracleIT: {
        node {
            executeOracleIT()
        }
    }
)

请注意,按照建议 here 我是 运行 每个 parallel 中的一个新 node,因此它们得到了适当的并行化,并且每个都得到了它的自己的工作区。

我应该怎么做才能让 Jenkins 显示 parallel 块的分离输出?

在您的作业的构建页面上,左侧有一个 link "Pipeline steps"。在树状结构中,您可以找到您的作业具有的所有步骤 运行,包括并行步骤。您可以进入每个步骤并使用左侧的 link 访问其控制台日志。或者,您可以使用同一行右侧的 "terminal" 图标。

单击它,您将看到仅在该步骤中生成的控制台日志,不会与其他步骤同时 运行 混合。如果一个步骤或多个并行步骤仍在进行中,它们的日志将在每个控制台日志页面上动态更新。

提供了一种从并行块中获取日志的方法

  • 作为管道代码中的字符串
  • 或保存为 运行
  • 的神器

那里使用的库还提供了内部 ID 的访问器,我认为可以用来生成指向 "pipeline steps" 个文件的链接