Jenkins构建/管道工作 - 工作在树/布局有序列表中的列表

时间:2018-04-28 00:13:04

标签: jenkins jenkins-plugins build-pipeline-plugin

对于给定的Build Pipeline作业(在构建或后期构建操作中具有下游作业" Trigger build on other projects")是否可能,我可以获得树列表视图哪个管道作业#N被调用,具有子构建#的调用顺序(顺序或并行)中的子作业为该管道运行构建#。

例如:如果我的管道作业有此视图: enter image description here 然后,

我希望得到一个类似于(以防我只是简单的文字格式)的热门列表:

vac-3.0-src:52 called: vac-3.0-unit-test-main:37
vac-3.0-unit-test-main:37 called: vac-3.0-unit-testA:36
vac-3.0-unit-test-main:37 called: vac-3.0-unit-testB:36
vac-3.0-unit-test-main:37 called: vac-3.0-unit-testC:35
vac-3.0-unit-test-main:37 called: vac-3.0-unit-testD:35
vac-3.0-unit-test-main:37 called: vac-3.0-unit-testReporting:35
vac-3.0-unit-testReporting:35 called: vac-3.0-integration-test-main:28
vac-3.0-integration-test-main:28 called: vac-3.0-integration-testA:27
vac-3.0-integration-test-main:28 called: vac-3.0-integration-testB:27
vac-3.0-integration-testB:27 called: vac-3.0-acceptance-test:25
vac-3.0-acceptance-test:25 called: vac-3.0-configure-something:24 
vac-3.0-configure-something:24 called: vac-3.0-perform-someaction:23
vac-3.0-perform-someaction:23 called: vac-3.0-preview-step:22
vac-3.0-preview-step:22 called: vac-3.0-deb-delivery-job:27
vac-3.0-preview-step:22 called: vac-3.0-rpm-el6:23
vac-3.0-preview-step:22 called: vac-3.0-vagrant-provision:20
vac-3.0-preview-step:22 called: vac-3.0-vagrant-run:21
vac-3.0-vagrant-run:21 called: vac-3.0-demo:10

或者,此信息可以以更强大的结构方式呈现,即它可以是JSON blob,其中父作业具有将在管道运行/给定顺序中具有所调用的所有作业(并行/序列)的结构。 p>

我使用Jenkins API尝试了主要工作的URL(通过卷曲),即/api/xml or /api/json?pretty=true&depth=10或更多,但它并没有向我提供我正在寻找的信息(与之相关)给定的管道运行)。

此信息在管道视图上可视化显示(根据图像),并且在给定的Jenkins作业仪表板(管道的一部分)上可以获得有关子项目的一些信息,但订单不存在。

如果您尝试解决此问题并且有任何解决方案来获取此数据,我将非常感激。这种努力的原因是为给定的管道运行水平查找度量(而不是垂直地为每个单独的作业作为管道的一部分,因为我已经有总时间,构建#,结果等的垂直/个人作业指标)但是如何我可以将给定管道运行的每个单独工作的指标联系起来,这是我想要获得的。

如果上面的图片示例足够大,我们可以在这里引用较小的运行图像快照:

enter image description here

2 个答案:

答案 0 :(得分:0)

我看到了一种可能的解决方案,不确定这是否有用,但肯定是尝试。

算法步骤:
==============
1)维护直接父子文件(即JobA:JobB,JobA:JobC,JobA:JobC,JobC:JobD,....),即此文件将告知每个作业 X ,什么是直接的子子/下游工作。通过Jenkins Groovy脚本,可以轻松生成/提供。 PS:您可以向此文件添加更多列,即JobA:JobB:构建:顺序或JobA:JobB:测试:并行以获得更好的水平指标,用于计算每个给定步骤的周转时间(构建,测试,部署等)以及父作业是按顺序调用子作业还是与两个或多个作业并行调用,并相应地计算指标。

2)内部"构建管道视图"配置(设置),设置否。要显示为1的作业。 PS :如果要捕获该主管道作业的给定管道构建#,则可以将其设置为5,10或更多。 / p>

出于测试目的,我只显示了一次管道构建运行。 enter image description here

3)在Linux中,使用curl,获取"查看源代码" HTML页面信息在构建管道视图的NAME上( PS :这是不在主管道作业)。    即**不适用于jobA或xxvt-main或**,但使用View Name URL(显示整个管道)。让我们假设视图名称(通过Build Pipeline View插件)创建为" MyPipelineView "    例如:curl -s http://my-jenkins-server:8080/view/MyPipelineView/ > /tmp/9.txt

这将为您提供HTML内容。   将此信息存储在某个文件中(临时)。我们假设我将其存储在/tmp/9.txt

3)运行以下命令以获取作业的构建#s。根据第二个较小的管道图像(在我的帖子中),其输出将是:

grep -o "\"extId\":\"[a-zA-Z0-9_-][a-zA-Z0-9_-]*#[0-9][0-9]*\"" /tmp/9.txt

这将为您提供输出(使用sed / cut以使其更清洁):

"extId":"xxvt_main#157"
"extId":"xxvt_splunk_run_collect_operation#29"
"extId":"xxvt_splunk_run_process_operation#29"
"extId":"xxvt_splunk_update_date_restart_splunk#29"
"extId":"xxvt_splunk_get_jenkins_data#38"
"extId":"xxvt_splunk_get_clearquest_dr_data#47"

4)现在,您使用父子(直接关系)文件(我们在项目符号1中生成)获得给定管道运行的上述输出,我们可以使用它来创建我们的最终构建管道树文件,即< / p>

xxvt_main#157 called: xxvt_splunk_get_jenkins_data#38
xxvt_main#157 called: xxvt_splunk_get_clearquest_dr_data#47
xxvt_main#157 called: xxvt_splunk_run_collect_operation#29
xxvt_splunk_run_collect_operation#29 called: xxvt_splunk_run_process_operation#29
xxvt_splunk_run_process_operation#29 called: xxvt_splunk_update_date_restart_splunk#29

5)在知道给定的运行相关 作业名称其构建#后,我们可以使用Jenkins&#39; { {1}}谨慎地,获取我们想要获取指标的字段,最后以您喜欢的任何格式创建/提出.csv文件,将具有给定管道运行的指标 - HORIZONTALLY

答案 1 :(得分:0)

如果您正在使用Jenkinsfile DSL等。 我是通过动态创建阶段,并行运行它们以及使Jenkinsfile UI显示单独的列来实现的。假设并行步骤彼此独立(否则,请不要使用并行),并且您可以根据需要嵌套它们的深度(取决于for循环)。

Jenkinsfile Pipeline DSL: How to Show Multi-Columns in Jobs dashboard GUI - For all Dynamically created stages - When within PIPELINE section有关更多信息,请参见此处。