Concurrency 如何在并行执行中启动具有不同参数的相同作业?

Concurrency 如何在并行执行中启动具有不同参数的相同作业?,concurrency,hudson,parallel-processing,jenkins,Concurrency,Hudson,Parallel Processing,Jenkins,我有一个构建作业和一个测试作业参数 我希望在构建作业之后,使用一个参数同时运行测试作业,同时使用不同参数并行执行相同的测试作业 build job | / \ test job test job with one params with other params | | 如何做到这一点,以及是否

我有一个构建作业和一个测试作业参数

我希望在构建作业之后,使用一个参数同时运行测试作业,同时使用不同参数并行执行相同的测试作业

                build job  
                   |  
                  / \  
         test job    test job
   with one params    with other params
            |             |
如何做到这一点,以及是否有可能在不必编写自己的插件的情况下执行


谢谢

假设您在完成构建作业时知道参数,您可以使用该插件以不同的参数启动两个下游作业。

请您再说一点,为什么您需要同时运行测试作业


我确实使用了需要同时拆分和运行的测试,但我使用了一个权重大于1的Jenkins/Hudson作业(请参阅)。

创建测试作业时,将其创建为“构建多配置项目” 配置作业时,选择“配置矩阵”,然后选择“用户定义轴”


可以将此轴的名称用作作业中的参数。给定参数将在不同作业中同时启动。(如果有足够的执行器可用)

一个选项是将buildflow plugin()与Job DSL plugin()一起使用。您可以使用作业DSL定义作业步骤,这些步骤使用不同的命令行参数调用您的构建,并使用构建流编排构建。

根据@Soo Wei Tan的答案,我发现以下方法很有效

  • 参数化触发器插件
  • 选择“参数工厂”
  • 选择“对于每个属性文件,调用一个生成”
然后,在一个shell中,编写一系列属性文件,触发器插件将处理其余部分


您甚至可以以有趣的方式将其与顶层的矩阵式工作相结合。例如,在用户定义的轴上触发,使用网格跟踪所有轴。如果有一点隐藏,这确实是一种非常灵活的方法。

我有一个稍微不同的用例。在开发周期中,我们有针对主构建运行的测试作业。接近周期结束时;我们创建了一个候选版本构建,并对其运行相同的测试。我们还希望继续测试主构建

               Main Build     Release Build
                         \   /
                           |
                       same set of tests

我可以创建具有不同名称的重复作业来处理此问题。但是必须有一种更优雅/更简单的方法。

我也有同样的要求,但我发现这种方法不够灵活,无法并行地将不同的参数传递给不同(或相同)的作业。是的,您可以将参数工厂与属性文件一起使用,但这意味着将新的属性文件添加到我的版本控制中仅用于配置Jenkins。带有配置矩阵的多配置项目似乎也过于复杂

对我来说,更好、更直接的解决方案是具有阶段概念的。多作业可以有多个阶段。阶段按顺序运行,阶段内的作业将并行运行

安装多任务插件后,在创建新的Jenkins项目时,选择多任务项目。然后可以创建一个或多个阶段。 阶段中的每个作业都有自己的参数,请单击高级…->添加参数

此外,如果某个特定作业失败,如果整个多作业继续或失败等,则可以很容易地配置应发生的情况,请参阅上的终止阶段:下一阶段的继续条件 作业状态为时:设置


对我来说,这比参数化触发器插件或Mult配置项目更直观,并且不需要Jenkins之外的任何额外配置。

我知道这个插件,但它不会两次启动相同的工作。我对它进行了多次测试。通过using curl启动两个单独的作业如何?您可以创建一个虚拟作业,它只将参数传递给您的测试作业。这将是一项令人讨厌的工作,但会奏效。如果你想在测试工作之后做些什么,你也可以使用join插件。理论上,它应该支持您的用例。我有一个生成多个包的构建工作。对于每个包,我希望启动一个参数化的测试作业,这对所有包都是一样的,但只有作业的参数会改变。如果您能定义更多关于如何实现相同的事情的内容,这将非常好,因为我也在尝试实现相同的内容。这实际上是一个单独的问题。但一种简单的方法是,父作业将“环境”参数传递给下游作业,然后下游作业会根据父作业的不同行为。在这种情况下,不同的参数同时访问同一作业,哪个选项适合运行?因为我使用的是自由式作业,但会迫使我们在一个阶段内创建同一作业的副本两次。我有完全相同的要求,但我无法找到一个动态传递日期的选项。我需要在日期1-15和16-30同时运行相同的作业/31@AJm是的,您将在同一阶段使用不同参数调用同一作业两次。您需要将作业配置为可以并发运行(是否可以安全地并发运行?)。Jenkins作业配置中有一个复选框,如果需要,可以执行并发构建。我不知道你说的动态传递日期是什么意思。这可能是通过实现的,但最好是打开一个带有更多细节的特定问题。