当前位置: 首页 > 知识库问答 >
问题:

更好地可视化声明性管道中跳过的阶段

巢星纬
2023-03-14

我正在考虑将我们的脚本化管道转移到声明性管道。

我使用when关键字来跳过阶段

stage('test') {       
     // Only do anything if we are on the master branch
     when { branch 'master' }
     //...
}

这是可行的,但是跳过的阶段显示为绿色。我希望它在管道概述中显示为灰色。有办法实现这一点吗?

共有2个答案

齐思淼
2023-03-14

如果舞台对您显示为绿色,则它可能仍在实际运行。跳过的阶段在 Jenkins 经典阶段视图中应如下所示。请考虑以下代码示例,该示例有三个阶段,中间阶段使用 when 指令有条件地跳过。

pipeline {
    agent any
    stages {
        stage('Always run 1') {
            steps { echo "hello world" }
        }
        stage('Conditionally run') {
            when {
                expression { return false }
            }
            steps { echo "doesn't get printed" }
        }
        stage("Always run 2") {
            steps { echo "hello world again" }
        }
    }
}

这应该会在您的构建日志中生成以下行

Stage "Conditionally run" skipped due to when conditional

这个问题的另一位回答者提到了《蓝海》,它绝对呈现了一个美丽的舞台观。这是一张在蓝海舞台视图中跳过舞台的图像。请注意,蓝海是一个UI,无论您选择使用哪个UI,您的作业的底层管道代码都是相同的。

濮阳靖
2023-03-14

正如您在评论中提到的,我建议您在处理管道时使用Jenkins Blue Ocean。

它为您的管道项目提供了更现代和用户友好的视图。甚至管道本身也以更方便的方式显示。

 类似资料:
  • 我正在使用詹金斯声明管道,不知道是否有任何方法可以定期触发特定阶段。 我的意思是,当我们签出SCM时,管道会触发,但阶段2对我们的一些项目来说太长了。因此,我不想等待这个阶段,我只想每天运行这个阶段,但仍然将这个阶段保存在Jenkins文件中。 有没有办法做到这一点?这样做的最佳方法是什么?

  • 问题内容: 我正在尝试将旧样式的基于项目的工作流转换为基于Jenkins的管道。在浏览文档时,我发现有两种不同的语法分别命名为和。例如最近(2016年底)发布的Jenkins网络语法。尽管有一个新的语法版本,Jenkins仍然也支持脚本语法。 现在,我不确定这两种类型的哪种情况最合适。语法将很快被弃用吗?詹金斯管道的未来会是这样吗? 任何可以分享有关这两种语法类型的想法的人。 问题答案: 最初创建

  • 我有以下管道: 不幸的是,这引发了: groovy.lang.MissingPropertyException:没有这样的属性:org.kohsuke.groovy上的类groovylang.Binding.getVariable(Binding.java:63)的master:org.jenkinsi.plugins.scriptsecurity.sandbox.groovy-SandboxIn

  • 问题内容: 我正在尝试做这样的事情: 但这给了我这个例外: 是否可以将阶段定义为外部闭包? 问题答案: 您不能在声明式管道之外定义阶段。声明性管道的主要目的是提供经过简化且自以为是的语法,因此您可以专注于应该做什么(通过使用一些可用的步骤)而不是如何去做。 如果您对更灵活的管道实现方式感兴趣,可以选择“ 脚本化管道”方法,该语法在语法方面并不严格-仅受Groovy和CPS执行模块的限制。 您的示例

  • 问题内容: 如何报告声明式管道失败的阶段?在fail块中,我想获取failureStage.name并将其报告(最终报告为松弛)。 问题答案: PipelineVisitor是一种很好的方法。但是,如果您只想查看错误,那么利用可能会更好。 以下内容提供了每个失败步骤的映射列表,并且还遍历了下游作业。我发现它非常有用。 您将要使用共享库来避免安全沙箱警告/批准

  • 我有bash脚本构建,标记和推docker图像到存储库。这是我的Jenkinsfile的一部分; 如何使用podTemplate执行我的步骤。当我使用docker容器进行阶段构建BMF后端时,我有这些错误; 无法连接到UNIX:///var/run/Docker.sock上的Docker守护进程。docker守护进程正在运行吗? /home/jenkins/workspace/bmf/bmf-we

  • 问题内容: 我想在声明性Jenkins管道内的锁内运行多个阶段: 我收到以下错误: 这是什么问题 该文档明确指出: 也可以用于将多个阶段包装到单个并发单元中 问题答案: 问题是,尽管事实上在2016年9月Beta版中提供了声明式管道,但您引用的博客文章(自10月起)记录的是脚本化管道,而不是声明式的(声明不多,所以我觉得您痛)。尚未将可锁定资源作为声明性管道步骤来使用,而该方式不能启用您正在寻找的

  • 问题内容: 如何在Jenkins声明式管道中循环参数化并行阶段?(或脚本管道,如果声明式不能) 这是我简单的伪示例。如何循环(“部署serverN”)阶段? 数组可能具有1..n变量。 我不想重复代码。詹金斯管道中一定有办法吗?还是我应该使用矩阵。我已经尝试了一些,但是没有成功。 我也尝试过这种方法,但是由于前一阶段不依赖于下一阶段,因此它并不是完美的。 在Blue Ocean中应该看起来像这样(