显示已加载的脚本管道中的阶段

时间:2019-01-14 16:25:50

标签: jenkins jenkins-pipeline jenkins-plugins

我想将特定的管道集成到更通用的管道中。通用解析电子邮件通知,并从特定的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'
  }
}

specific.jenkins文件:

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

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

View on BlueOcean View on classic

我如何才能像在经典网站上一样显示所有在BlueOcean中展开的内容?

1 个答案:

答案 0 :(得分:0)

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

我从stage('Calling specific') {}步骤中删除了load,并从specific.jenkins文件中删除了node {}。现在,可视化效果如预期。

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

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

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