使用声明式管道的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 条评论
登录 后参与评论

相关文章

更优雅的代码编写方式

这个问题有更优雅的解决方案吗?

如何使用 jenkins 声明式管道添加条件构建后操作?

如何在流编程中使用Highland.js的parallel()实现并行化?

使用 Kotlin 实现插件时,如何为 Gradle 扩展任务?

如何让这个 RxJs 代码更优雅?代码记录鼠标悬停在特定区域的时间

如何制作并行任务并等待任务完成

具有依赖关系的工厂方法模式的实现

有没有更优雅的方式来编写这个 If/or 条件?

如何使用 numpy 更优雅地实现这个 for 循环?

并行运行任务 - pyspark

列表理解后是否有更优雅的方法从列表中删除无

如何更优雅地在蛇游戏(pygame)中添加食物?

无法映射属性,考虑声明/实现映射方法

有没有更优雅的解决方案来修改这些文件名?

如何在 Jenkins 声明式管道中循环参数值

使用 OpenMP 任务进行带中断的并行 for 循环

使用 flexbox 实现复杂的响应式设计

使用依赖注入在类上实现接口

F#:在列表中乘以负数的更优雅方式

依赖嵌套循环的并行化

根据数字显示标签的更优雅方式

寻找更优雅的方法来解决这个简单的逻辑任务

并行处理任务

有没有更优雅的方式在 R 中使用映射值?

接口隐式声明 Object 类的公共方法?

检查所有状态值的更优雅的方式

反应式管道中的后台任务(即发即忘)

在调用声明为@MainActor 的异步函数的任务中使用@MainActor

如何并行运行多个 celery 任务(通过使用组)?