2017-05-17 138 views

回答

0

在新的管道中,您可以使用try-catch来实现这一点。

node{ 
    try{ 
     build job: 'system-check-flow' 
    }  
    catch (err){ 
     echo "system-check-flow failed" 
    } 
    try{ 
     build job: 'job2' 
    }  
    catch (err){ 
     echo "job2 failed" 
    } 
} 

这里它将构建'系统检查流程'作业。如果失败,将捕获错误,忽略,然后着手构建“作业2”

+2

虽然这看起来像会起作用,但它不是使用声明式管道语法来构建的。 – Sven

2

要忽略在声明管线中的失败一步你基本上有两种选择:

  1. 使用script一步,try-catch块(类似于前面的命题通过R_K但在声明样式)
stage('someStage') { 
    steps { 
     script { 
      try { 
       build job: 'system-check-flow' 
      } catch (err) { 
       echo err 
      } 
     } 
     echo currentBuild.result 
    } 
} 
  • 使用catchError
  • stage('someStage') { 
        steps { 
         catchError { 
          build job: 'system-check-flow' 
         } 
         echo currentBuild.result 
        } 
    } 
    

    在这两种情况下,构建也不会例外,在中build job: 'system-check-flow'中止。在这两种情况下,echo步骤(以及其他任何后续步骤)都将被执行。

    但是在这两个选项之间有一个重要区别。在第一种情况下,如果try部分引发异常,则整体构建状态将不会更改(因此echo currentBuild.result =>SUCCESS)。在第二种情况下,您的整体构建将失败(因此echo currentBuild.result =>FAILURE)。

    这一点很重要,因为你总是可以在第一种情况下(通过设置currentBuild.result = 'FAILURE')失败的整体构建,但你不能修复建立第二个选项(currentBuild.result = 'SUCCESS'将无法​​正常工作)。

    相关问题