好吧,如果它是一个bash脚本,它将是这样的:
# run "foo" test
prepare_test_machine --profile=foo
run_test
# run "bar" test
prepare_test_machine --profile=bar
run_test
# run "baz" test
prepare_test_machine --profile=baz
run_test
我不需要任何并行化,因为所有测试实际上都在同一个盒子上运行。
我创建了两个作业,一个用于 prepare_test_machine ,另一个用于 run_test 。 prepare_test_machine 只接受一个参数, run_test 不接受任何参数 - 它可以简单地假设前面的作业已经设置了所有内容。
接下来我设置了一个MultiJob,它将每个步骤调用为MultiJob阶段,仅在必要时传递参数。
虽然它确实似乎完成了我需要的工作但它的行为完全令人困惑:在我启动MultiJob之后:
所有准备工作sart为“闪烁”,
完成后,所有人都会在MJ视图中报告相同的结果和持续时间,
然后所有运行作业sart to“blink”,
,其行为与准备工作相同,
对每一对重复,每次运行的结果写入所有类似的 运行,而不仅仅是MJ视图中的单个阶段。
所以例如,如果“baz”分别占用97s和8s,“bar”需要87s和11s,而“baz”需要111s和25s我希望看到这样的东西(“#”标记相位标签):
+-----------------------------------+
| # prepare foo |
| O prepare_test_machine 97s |
| # run foo |
| O run_test 8s |
| # prepare bar |
| O prepare_test_machine 87s |
| # run bar |
| O run_test 11s |
| # prepare baz |
| O prepare_test_machine 111s |
| # run baz |
| O run_test 25s |
+-----------------------------------+
但请看:
+-----------------------------------+
| # prepare foo |
| O prepare_test_machine 111s |
| # run foo |
| O run_test 25s |
| # prepare bar |
| O prepare_test_machine 111s |
| # run bar |
| O run_test 25s |
| # prepare baz |
| O prepare_test_machine 111s |
| # run baz |
| O run_test 25s |
+-----------------------------------+
可以调整此设置以使其行为符合我的要求吗?或者我只是在使用错误的工具? (我是Jenkins的新手,所以我不会感到惊讶)。如果是这样,有人能指出我正确的方向吗?
(如果可能的话,我希望保持布局平整,即避免混乱的子项目或“乱跑”触发器。)
答案 0 :(得分:1)
此问题已记录在案(Future obj not observed when same job executed parallel),我提供了bug-fix,遗憾的是该修补程序不属于最新版本。