首页 > 解决方案 > 显示加载的脚本化管道中的阶段

问题描述

我想将特定管道集成到更通用的管道中。通用的解析电子邮件通知并从特定的 SCM 签出项目。此时它运行在该项目中找到的 Jenkinsfile。这两个都是脚本化的管道。

generic.jenkins 文件:

node {
  stage('Initial') {
      echo 'Checking for new RRs and creating build sandbox'
  }

  stage('Calling specific') {
      def jen = load "../specific.jenkinsfile"
  }

  stage('Cleanup') {
      echo 'running cleanup'
  }
}

具体的.jenkins 文件:

node() {
  stage('Build') {
      echo 'Build ...'          
  }
  stage('Flash ') {
      echo 'Flash ...'          
  }
  stage('Test  ') {    
      echo 'Test  ...'    
  }
}

specific.jenkins 文件中的阶段中的步骤会运行并打印这些步骤。问题是特定 Jenkinsfile 中的阶段不会在 BlueOcean Web 界面上的构建概述页面上显示为单独的阶段。相反,调用特定在步骤返回后累积所有load步骤。(虽然load正在运行,但所有阶段都是并排“扩展”的。)这不会发生在经典界面上。也许这是一个设计决定?

查看蓝海 看经典

我怎样才能让它像在经典网站上一样在 BlueOcean 中显示所有扩展?

标签: jenkinsjenkins-pipelinejenkins-plugins

解决方案


解决方案比我预期的要容易。

stage('Calling specific') {}从步骤周围删除了load,并node {}从 specific.jenkins 文件中删除了 。现在可视化的行为符合预期。

# scripted pipeline
node {
  stage('Initial') {
    echo 'Checking for new RRs and creating build sandbox'
  }

  def jen = load "../specific.jenkinsfile"

  stage('Cleanup') {
    echo 'running cleanup'
  }
}

推荐阅读