运行Jenkins管道脚本时,如何确定后续步骤的优先级?

csa*_*app 6 continuous-integration jenkins jenkins-pipeline

假设我有两个类似的简单管道脚本,每个脚本基本上都是这样的:

stage('only stage') {
    node {
      // first step
    }

    node {
     // second step
    }
}
Run Code Online (Sandbox Code Playgroud)

让我们将第一个脚本A和B中的步骤称为第二个脚本C和D中的步骤。

从我的测试中了解到的方式,当我启动这些脚本的构建时,Jenkins似乎仅将每个脚本的第一步排入队列,然后仅在第一个脚本完成时排入下一步。结果,似乎倾向于总体上在管道中更早地运行步骤。考虑以下示例,该示例映射了我已采取的操作=>结果的Jenkins步骤队列:

启动脚本1 => [A]

启动脚本2 => [A,C]

A开始=> [C]

A完成=> [C,B]

C开始=> [B]

...等等

我的问题是:在最后一步中,我描述了C的起始位置,是否有一种方法可以优先考虑B的起始位置,因为这是构建的后续步骤(相对于C是第一步)?我的动机是,我希望一个构建要早点完成,而不是同时进行几个构建或部分完成。

似乎通过参数化触发器插件在自由式项目中是可能的(此问题的详细信息)),但我无法弄清楚是否有类似的方法可以通过管道脚本进行此操作。我已经看到了Priority Sorter插件,该插件最近显然增加了管道兼容性,但是由于无法找到有关其用法的任何示例或文档,我不了解该管道兼容性的实际工作原理,并且我不确定硬编码优先级无论如何,将数字添加到我的步骤将是一个理想的解决方案(实际上,脚本比我提供的示例要复杂得多,因此我可以看到优先级数字很快变得笨拙和混乱)。我发现了其他一些基于“优先级”的插件,尤其是Accelerated Build Now插件,但由于多年没有更新,因此没有管道支持。

到目前为止,我已经看到的态度是,在队列形成并且需要对任务进行优先级排序的情况下,“只需添加更多从属”即可。这是一个合理的设计决定,但不幸的是,我正在使用有限的资源,并且确实需要一些队列管理,因为我不能仅仅添加更多的从属来缓解队列。还有其他人解决吗?