在 Jenkins Pipeline 的一个步骤中添加多个阶段

ano*_*ite 3 jenkins jenkins-pipeline

我正在尝试获得一个并行运行 2 个步骤的管道,其中 YAML 如下所示:

      steps:
        - step: Step1
          stages:
            - stage: Build
              steps:
                - *build_a
                - *build_b
                - *build_c
            - stage: Sniff
              steps:
                - *sniff
            - stage: Accept
              steps:
                - *regress
                - *test_suite_a
        - *slow_build_that_can_run_in_parallel_to_all_the_above
Run Code Online (Sandbox Code Playgroud)

但詹金斯只是通过了上面的内容,没有运行任何东西。因此,我还尝试将上面的所有内容放入一个阶段中,然后slow_build_*运行但Step1未能运行,因为它尝试将整个步骤作为批处理而不是将其分解为多个阶段。

詹金斯是否可以在一个步骤中获得多个阶段?还是我做错了?

小智 11

您可以执行以下操作:

pipeline {
    stages {
        stage('This is a Level 1 Stage') {
            stages {
                stage(This is a level 2 stage') { steps{...} }
                stage(This is a level 2 stage') { steps{...} }
                stage(This is a level 2 stage') { steps{...} }
            }
        }
        stage('This is a Level 1 Stage') {
            stages {
                stage(This is a level 2 stage') { steps{...} }
                stage(This is a level 2 stage') { steps{...} }
                stage(This is a level 2 stage') { steps{...} }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

由于 Jenkins 现在允许嵌套阶段,因此您可以将阶段放入阶段中以形成阶段的嵌套级别。


Arn*_*del 7

不,你不能stagesstep

这是来自管道语法文档

  • 阶段:仅一次,在pipeline区块内

  • 舞台:区域stages

  • 步骤在每个stage块内