2017-10-19 113 views
1

我正在尝试使用groovy DSL写一个脚本化的Jenkinsfile,它将在一组阶段中具有并行步骤。脚本jenkinsfile并行阶段

这里是我的jenkinsfile:

node { 
stage('Build') { 
    sh 'echo "Build stage"' 
} 

stage('API Integration Tests') { 
    parallel Database1APIIntegrationTest: { 
     try { 
      sh 'echo "Build Database1APIIntegrationTest parallel stage"' 
     } 
     finally { 
      sh 'echo "Finished this stage"' 
     }    

    }, Database2APIIntegrationTest: { 
     try { 
      sh 'echo "Build Database2APIIntegrationTest parallel stage"' 
     } 
     finally { 
      sh 'echo "Finished this stage"' 
     } 

    }, Database3APIIntegrationTest: { 
     try { 
      sh 'echo "Build Database3APIIntegrationTest parallel stage"' 
     } 
     finally { 
      sh 'echo "Finished this stage"' 
     } 
    } 
} 

stage('System Tests') { 
    parallel Database1APIIntegrationTest: { 
     try { 
      sh 'echo "Build Database1APIIntegrationTest parallel stage"' 
     } 
     finally { 
      sh 'echo "Finished this stage"' 
     }    

    }, Database2APIIntegrationTest: { 
     try { 
      sh 'echo "Build Database2APIIntegrationTest parallel stage"' 
     } 
     finally { 
      sh 'echo "Finished this stage"' 
     } 

    }, Database3APIIntegrationTest: { 
     try { 
      sh 'echo "Build Database3APIIntegrationTest parallel stage"' 
     } 
     finally { 
      sh 'echo "Finished this stage"' 
     } 
    } 
} 
} 

我想有三个阶段:建立;集成测试和系统测试。 在两个测试阶段中,我希望并行执行3组测试,每组测试都针对不同的数据库。

我有3个可用的执行者。一个在主人和2个代理商,我希望每个并行步骤在任何可用的执行器上运行。

我已经注意到的是,我的运行后,管道,我只看到了3个阶段,每个标出来为绿色。我不想查看该阶段的日志,以确定该阶段的任何并行步骤是否成功/不稳定/失败。

我想会看到我的测试阶段内的3个步骤 - 标记为绿色,黄色或红色(成功,不稳定或失败)。我已经考虑将测试扩展到他们自己的阶段,但已经意识到并行阶段不被支持(有谁知道这是否会被支持?),所以我不能做到这一点,因为管道将需要很长的时间太久无法完成。

任何有识之士将不胜感激,谢谢

回答

0

我已经在并行块多次使用stage{}。然后每个阶段都显示在舞台视图中。包含parallel的父阶段不包括所有并行阶段的时间安排,但每个并行阶段在阶段视图中显示。

在蓝色海洋,并行级单独出现,而不是示出的阶段。如果有父级,则显示为并行级的父级。

如果您没有相同的体验,可能是因为插件升级。

+1

你能给其中已使用并行块内的级的例子?我正在努力寻找关于此的任何文档 –

0

下面是从他们的docs一个例子:

并行执行

在部分上面的示例运行在一个线性串联跨两个不同的平台上的测试。在实践中,如果执行make check需要30分钟才能完成,那么“测试”阶段现在需要60分钟才能完成!

幸运的是,管道具有内置的功能,用于执行脚本管道部分平行,在恰当地命名为并行步骤实现。

重构上面的例子中使用的并行步骤:

// Jenkinsfile (Scripted Pipeline) 


stage('Build') { 
    /* .. snip .. */ 
} 

stage('Test') { 
    parallel linux: { 
     node('linux') { 
      checkout scm 
      try { 
       unstash 'app' 
       sh 'make check' 
      } 
      finally { 
       junit '**/target/*.xml' 
      } 
     } 
    }, 
    windows: { 
     node('windows') { 
      /* .. snip .. */ 
     } 
    } 
}