在Jenkins声明性流水线中实现多层级并行阶段

88次阅读
没有评论

问题描述

需要在Jenkins中定义一个声明性流水线,其中包含多层级的并行阶段,如下所示:

1   Prebuild_action
2   Prebuild_action
3.1 Build platform_1
3.2 Test1 platform_1
3.3 Test2 platform_1
3.4 Test3 platform_1
3.2 Build platform_2
3.3 Build platform_3
3.4 Build platform_4
4.1 Build platform_1
4.2 Build platform_2
4.3 Build platform_3
4.4 Build platform_4

首先,阶段1应该运行,然后阶段2应该运行,然后所有3.x阶段应该并行运行,在3.1完成后,所有4.x阶段应该并行运行。

然而,似乎有两个问题:

  1. 在父阶段中同时包含一个阶段和一组并行阶段似乎不可能。
  2. 并行块似乎只能在顶级阶段中定义,因此不能为3.x和4.x分别定义并行块。

用户想知道是否有一种方法可以实现这样的流水线结构,他目前尚未找到合适的方法。

解决方案

请注意以下操作可能会涉及版本差异,且在执行之前务必做好备份。

使用嵌套并行阶段

在Jenkins的声明性流水线中,实现多层级的并行阶段是可行的。尽管在Web界面中的可视化展示可能存在问题,但在流水线脚本中是支持的。你可以使用嵌套的parallel块来实现这个结构。

以下是一个示例流水线脚本,展示了如何在声明性流水线中实现你描述的多层级并行结构:

pipeline {
    agent any

    stages {
        stage('Prebuild_action') {
            steps {
                echo 'Running Prebuild_action'
            }
        }

        stage('Prebuild_action') {
            steps {
                echo 'Running Prebuild_action'
            }
        }

        stage('Build and Test') {
            parallel {
                stage('Build platform_1') {
                    steps {
                        echo 'Building platform_1'
                    }
                }

                stage('Test1 platform_1') {
                    steps {
                        echo 'Testing platform_1'
                    }
                }

                stage('Test2 platform_1') {
                    steps {
                        echo 'Testing platform_1'
                    }
                }

                stage('Test3 platform_1') {
                    steps {
                        echo 'Testing platform_1'
                    }
                }

                stage('Build platform_2') {
                    steps {
                        echo 'Building platform_2'
                    }
                }

                stage('Build platform_3') {
                    steps {
                        echo 'Building platform_3'
                    }
                }

                stage('Build platform_4') {
                    steps {
                        echo 'Building platform_4'
                    }
                }
            }
        }

        stage('Build platform_1') {
            steps {
                echo 'Building platform_1'
            }
        }

        stage('Build platform_2') {
            steps {
                echo 'Building platform_2'
            }
        }

        stage('Build platform_3') {
            steps {
                echo 'Building platform_3'
            }
        }

        stage('Build platform_4') {
            steps {
                echo 'Building platform_4'
            }
        }
    }
}

在这个示例中,我们使用了parallel块来嵌套并行阶段。在第一个Build and Test阶段中,我们定义了多个并行的子阶段,包括3.x和4.x中的不同构建和测试阶段。请根据你的实际需要,在每个阶段中添加适当的构建和测试步骤。

尽管可视化可能会受到影响,但这种嵌套并行的方式可以在声明性流水线中实现你所需的多层级并行结构。

参考链接

请注意,虽然可视化可能受限,但你可以根据需要在流水线中使用上述嵌套并行阶段的方式来实现所需的结构。

正文完