Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-48980

Add ability to hide skipped stages/ignore stages altogether (support DRY)

XMLWordPrintable

      我已经在其他票证和网站上多次看到这一点,但我找不到专门解决它的票证。(所以希望我不只是简单地错过它)

       

      问题:给定几个不同的存储库,具有执行不同阶段的不同分支,没有简单的方法可以基于某些配置修改管道以保持声明性管道 DRY。

       

      简单的例子:

      • 分支 1 阶段:A -> B -> C
      • 分支 2 阶段:A -> B -> D
      • 分支 3 个阶段:A -> B -> C -> D

      目前,这需要定义 3 个不同的管道,这意味着冗余代码存在于不同的文件中,进而增加了发生错误的可能性。在更复杂的情况下,根本不可能查看对所有不同管道组合的更改。

      例如,在阶段中使用“when”是解决此问题的一种方法,但这会导致在分支构建中看到“部署”阶段而不是部署的开发人员感到困惑。此外,对于复杂的场景,可能会有许多跳过的阶段,这些阶段总是会被跳过,并简单地向可视化添加不必要的冗长。

      另一种解决方法是使用脚本化管道,但使用声明式提供的许多可视化功能不存在或始终无法正常工作。此外,由于阶段列表不是预先确定的,阶段视图总是在构建期间重置。

       

      我能想到的解决方案有两种:

      1. 提供修改“何时”行为的能力,让蓝海可视化完全忽略它。这种方法的问题在于,我相信在执行阶段时会评估“何时”条件,但阶段列表是在评估管道时在开始时确定的。这可能实际上可以实现,只是简单地在可视化中隐藏舞台而不是完全忽略它。例如:(这可能会大大改进,但它表明了这一点):
        config = [ 
            skipStage2 : true 
        ] 
        
        pipeline { 
            agent any 
            stage { 
                stage( "Stage 1" ) { ... } 
                stage( "Stage 2" ) { 
                    when { 
                         showOnlyWhen { 
                             expression { return !config.skipStage2 } // 在执行阶段
                         } 
                     } 
                    ... 
                } 
            } 
        }
      1.  添加另一个预先评估以确定阶段列表的指令。如果阶段列表从构建到构建发生变化,这与整个声明性管道发生变化并且存在不同阶段没有什么不同。例如:
        config = [ 
            skipStage2 : true , // 当existsStage2 = false
             existsStage2 : false 
        ]
        
        管道{ 
            agent any 
            stage { 
                stage( "Stage 1" ) { ... } 
                stage( "Stage 2" ) { 
                    when { 
                        expression { return ! config.skipStage2} //在执行阶段之后评价
                    }
                    存在{
                        表达式{返回config.existsStage2} //评估的前期确定是否 这舞台甚至运行
                    } 
                    ... 
                } 
            } 
        }

         

       

            olamy Olivier Lamy
            pixman20 pixman20
            Votes:
            26 Vote for this issue
            Watchers:
            27 Start watching this issue

              Created:
              Updated: