jenkins groovy 文件步骤管理:使步骤在出现先前的错误时继续

jenkins groovy 文件步骤管理:使步骤在出现先前的错误时继续

你好,我使用 jenkins groovy 文件来管理我的管道的步骤。

结构如下:

>     ```
>     
>     2 pipeline                                                                                                                                                                                                                                      3 {                                                                   
> 4     agent none                                                      
> 5                                                                     
> 6     options {                                                       
> 7         timeout(time: 240, unit: 'MINUTES')                         
> 8     }                                                               
> 9                                                                     
> 10     stages {                                                       
> 11         stage ("clean xxxxxxx") {                                  
> 12             agent {                                                
> 13                 node {                                             
> 14                     label "xxxxxxx"                                
> 15                     customWorkspace "F:\\xxxxxxx"                  
> 16                 }                                                  
> 17             }                                                      
> 18             steps                                                  
> 19             {                                                      
> 20                 script                                             
> 21                 {                                                  
> 22                     bat """                                        
> 23                         f:                                         
> 24                         cd \\                                      
> 25                         python
> xxxxxxx/scripts/pipeline/removeOldJenkinsBuildDir.py --nbdays 30
> --delete yes                                                                                                                        26                         python
> xxxxxxx/scripts/pipeline/cleanDotConan.py f: --delete                 
> 27                         Powershell("Get-wmiObject -Class
> win32_logicaldisk")                                                   
> 28                     """                                            
> 29                 }                                                  
> 30             }                                                      
> 31         }   
>     
>     ```

对于列表中的每个节点,依此类推。

我的问题

如果一个步骤失败,其余步骤将重新启动并忽略消息: Stage "clean XXXXXXXX" skipped due to earlier failure(s)

所以跳过了步骤但我真的希望它们运行。

我的目标

在这里设置一些内容,可能在步骤或更高级别,以避免跳过并强制运行所有步骤。我能做些什么呢?更改选项集?为每个步骤添加选项?

(事实上​​我找到了很多例子;但无法使用它们或者崩溃了:))

答案1

这是官方文档中提到,其中提供了两条建议:Pipeline 步骤catchError { }和原生的 Groovy try--处理异常的语法catchfinally

因为听起来你可能希望你的代码在许多不同的节点上重复,所以另一个选择可能是将你的节点放入parallel。一个并行分支出现故障不会停止任何其他并行分支的执行。

答案2

当 Jenkins 阶段失败时,其余所有阶段都会启动并忽略消息。因此,阶段会被跳过,但您确实希望它们运行。您可以使用 catchError 块来捕获错误并继续管道。以下是一个例子:

stage('Example') {
    steps {
        catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
            sh './run-my-script.sh'
        }
    }
}

相关内容