我想做的事
好吧,如果它是一个 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 之后:
所有准备工作都“眨眼”,
完成后,所有人都会在 MJ 视图中报告相同的结果和持续时间,
然后所有运行的作业都会“闪烁”,
并且行为与准备工作相同,
对于每一对重复,每次运行的结果被写入所有类似的运行,而不仅仅是 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 的新手,所以我不会感到惊讶)。如果是这样,有人能指出我正确的方向吗?
(如果可能的话,我想保持布局平坦,即避免混乱的子项目或“运行后”触发器。)