Jenkins声明性管道:矩阵构建轴的顺序执行

问题描述 投票:2回答:1

我正在尝试建立一个矩阵构建,并在几个问题上运行。矩阵看起来像:

stage( 'BuildAll' ) {
    matrix {
        axes {
            axis {
                name 'PLATFORM'
                values 'win32vc9', 'win32vc19' 
            }                   
            axis {
                name 'VARIANT'
                values 'debug', 'release'                   
            }
            axis {
                name 'MODULES'
                values 'repo1/module1', 'repo1/module2', 'repo2/module1', 'repo2/module2'
            }
        }

        stages {                                                
            stage( 'Checkout' ) {
            }
            stage( 'Build' ) {
            }
            stage( 'Test' ) {
            }
       }

我遇到的问题:

  • jenkins正在执行自己工作区中矩阵的每个单元,但是我的模块彼此依赖。这就是为什么我要签出它们并在同一工作区中构建它们的原因。顺便说一句:我的构建系统可以在同一工作空间中使用所有变体(调试/发行版x vc9 / vc19)。

  • jenkins正在并行执行所有单元。我需要的是MODULES轴的执行序列化。

关于如何解决此问题的任何想法?

例如有没有办法描述像几个模块上的循环这样的东西,它们在一行中而不是并行地产生一系列的阶段?在该序列内,我只能在2个轴上实现矩阵。

我知道扩展的工作空间插件,但是没有找到有关如何在声明式管道中使用此文档的任何文档。

非常感谢!问候,Christoph

jenkins matrix jenkins-pipeline declarative
1个回答
0
投票

Declarative Pipeline matrix指令当前不支持顺序执行。在当前的matrix语法中,您可以做的最好的事情是:

 stage( 'BuildAll' ) {
    matrix {
        axes {
            axis {
                name 'PLATFORM'
                values 'win32vc9', 'win32vc19' 
            }                   
            axis {
                name 'VARIANT'
                values 'debug', 'release'                   
            }
        }
        stages {                
            stage('repo1/module1') {
                stages {
                    stage( 'Checkout' ) {
                    }
                    stage( 'Build' ) {
                    }
                    stage( 'Test' ) {
                    }
                }
            }
            stage('repo1/module2') {
                stages {
                    stage( 'Checkout' ) {
                    }
                    stage( 'Build' ) {
                    }
                    stage( 'Test' ) {
                    }
                }
            }
            stage('repo2/module1') {
                stages {
                    stage( 'Checkout' ) {
                    }
                    stage( 'Build' ) {
                    }
                    stage( 'Test' ) {
                    }
                }
            }
            stage('repo2/module2') {
                stages {
                    stage( 'Checkout' ) {
                    }
                    stage( 'Build' ) {
                    }
                    stage( 'Test' ) {
                    }
                }
            }
        }
    }
}

其他人也要求类似。我已基于此问题提交了JENKINS-62085

© www.soinside.com 2019 - 2024. All rights reserved.