在不同的MultiJob阶段运行相同的工作

时间:2013-10-22 11:25:59

标签: testing jenkins

我想做什么

好吧,如果它是一个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之后:

  1. 所有准备工作sart为“闪烁”,

  2. 完成后,所有人都会在MJ视图中报告相同的结果和持续时间,

  3. 然后所有运行作业sart to“blink”,

  4. ,其行为与准备工作相同,

  5. 对每一对重复,每次运行的结果写入所有类似的 运行,而不仅仅是MJ视图中的单个阶段。

  6. 所以例如,如果“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的新手,所以我不会感到惊讶)。如果是这样,有人能指出我正确的方向吗?

    (如果可能的话,我希望保持布局平整,即避免混乱的子项目或“乱跑”触发器。)

1 个答案:

答案 0 :(得分:1)

此问题已记录在案(Future obj not observed when same job executed parallel),我提供了bug-fix,遗憾的是该修补程序不属于最新版本。