使用声明式管道的waitUntil实现依赖并行任务的更优雅方法

cl

虽然我可以实现所需的结果,但它具有并行阶段,这些阶段将等待上一个(或任何给定的)阶段完成后再继续。我觉得这不是达到所需最终状态的正确方法。但是,即使在对github和stackoverflow进行了一些研究之后,我也找不到合适的答案,也无法引导我如何在声明式管道中实现相关的并行阶段。

def action_a_status
def action_b_status
def action_c_status
def action_d_status

pipeline {
    agent any
    stages {
        stage("Deploy") {
            parallel {
                stage("action 1") {
                    steps {
                        sleep 10
                        script {
                            action_a_status="completed"
                        }
                    }
                }
                stage("action 2") {
                    steps {
                        script {
                            waitUntil {
                              action_a_status=="completed"
                            }
                            sleep 5
                            action_b_status="completed"    
                        }
                    }
                }
                stage("action 3") {
                    steps {
                        script {
                            waitUntil {
                              action_b_status=="completed"
                            }
                            sleep 3
                            action_c_status="completed"
                        }
                    }
                }
                stage("action 4") {
                    steps {
                        script {
                            waitUntil {
                              action_c_status=="completed"
                            }
                            action_c_status="completed"
                        }
                    }
                }  
            }
        }
    }
}


作为演示,请检查以下gif: 演示

cl

重要的是要注意,这不是达到期望结果的最佳方法,并且我发现了一种适当的方法来分组阶段,因此我选择不继续使用非直观的代码来改善BlueOcean管道的可视化。相反,病态只是使用步骤。

确保所有人安全并清洁代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

同时声明多个变量的更优雅的方式

一种更优雅的方法来实现基本的Groovy

例程与任务并行库的实现

牛顿方法是否有更优雅的Go实现?

如何制定更优雅的实现

如何使用Ruby的Fibers实现并行任务?

更优雅的方式来实现类似regexp的量词

在Jenkins声明式管道中使用waitForQualityGate

Jenkins声明式管道并行阶段

Jenkins声明式管道并行步骤执行程序

在Angular App中处理过滤值的更优雅方法

在并行阶段之前在jenkins声明式管道中创建顺序步骤

如何在Jenkins声明式管道中检测哪个并行阶段失败?

Python:断言函数输入类型的更优雅方法

哪种方法在React中编写Event是更优雅的方法?

图形实现更优雅的解决方案?

并行示例Jenkinsfile声明式管道失败

更优雅的方法来避免对集合进行分组的这种单行简化的实现?

我可以使用一种更优雅/更优化的方法来制作此连接算法吗?

等待布尔值“真实”的更优雅的方法

如何在声明式管道中将并行作业限制为特定的从属

寻找更优雅的任务处理解决方案

是否有更优雅的方法使用system.text.json从JSON对象获取特定值

使用Invoke-Expression浏览复杂/嵌套哈希表的更紧凑/更优雅的方法吗?

红宝石中打包ASCII算法的更优雅实现

并行迭代多个bash数组更优雅

获得具有不同值的数组的更优雅方法

检查字谜的更优雅方法是什么?

Jenkins 声明式管道中的并行项