Jenkins Pipeline(流水线) 某个任务构建失败时中止Or继续

最开始我写的pipeline用的是groovy的脚本如下:

pipeline{
    agent any
    stages
    {
        stage("1"){
            when { expression { return A.contains("1") } }
            steps
            {
                build "1"
            }
         }
        stage("2"){
            when { expression { return A.contains("2") } }
            steps
            {
                build "2"
            }
         }
     }
  }

一直没有遇到问题,直到有一天我发现1构建报错了,导致2没有执行。
当然,如果你的需求是1报错,后续不执行,就不需要往下看了,哈哈哈。

但是我想要的是1报错,仍然继续往下执行完所有的流程,怎么办呢?
最先我查出来的解决办法是这样:

pipeline{
    agent any
    stages
    {
        stage("1"){
            when { expression { return A.contains("1") } }
            steps
            {
                catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') 
                {
                	build "1"
                }
            }
         }
        stage("2"){
            when { expression { return A.contains("2") } }
            steps
            {
                build "2"
            }
        }
     }
  }

然后我点了构建pipeline,直接执行报错了。。。
Running in Durability level: MAX_SURVIVABILITY
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 98: Invalid parameter “buildResult”, did you mean “null”? @ line 98, column 28.
catchError(buildResult: ‘SUCCESS’, stageResult: ‘FAILURE’)

WorkflowScript: 98: Invalid parameter “stageResult”, did you mean “null”? @ line 98, column 52.
Error(buildResult: ‘SUCCESS’, stageResul

提示没有"buildResult",“stageResult”
之后又是一翻搜索,找到了解决办法如下:
他是这么说的:如果要捕获build步骤的结果,则需要将其放入script块中。
然后改成了如下形式:

pipeline{
    agent any
    stages
    {
        stage("1"){
            when { expression { return A.contains("1") } }
            steps
            {
                script
                {
                	catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') 
                	{
                		build "1"
                	}
                }
            }
         }
        stage("2"){
            when { expression { return A.contains("2") } }
            steps
            {
                build "2"
            }
        }
     }
  }

再执行就不报错了,而且当1构建失败时,2仍然会继续执行直到整个流水线执行完成。

初次接触流水线,踩了很多坑,感觉要学习的东西还很多,今天也要继续加油啊!!

So keep your head up before your crown falls。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Jenkins是一个开源的持续集成和交付工具,它提供了丰富的功能来自动化构建、测试和部署软件项目。Jenkins构建流水线是一种将软件开发过程划分为多个阶段,并在每个阶段执行一系列操作的方式。 Jenkins构建流水线可以通过Jenkinsfile文件或者通过Jenkins的Web界面进行配置。以下是一个简单的Jenkins构建流水线的示例: 1. 定义流水线的环境和参数: ``` pipeline { agent any parameters { string(name: 'ENV', defaultValue: 'dev', description: 'Environment') } stages { // ... } } ``` 2. 定义流水线的阶段: ``` stages { stage('Build') { steps { // 执行构建操作,如编译代码、生成可执行文件等 } } stage('Test') { steps { // 执行测试操作,如运行单元测试、集成测试等 } } stage('Deploy') { steps { // 执行部署操作,如将构建好的软件包部署到目标环境 } } } ``` 3. 定义流水线的触发条件: ``` triggers { // 定触发 cron('H 0 * * 1-5') // 或者根据代码仓库的变化触发 scm('git@github.com:username/repo.git') } ``` 4. 定义流水线的通知和报告: ``` post { success { // 构建成功后执行的操作,如发送通知、生成报告等 } failure { // 构建失败后执行的操作,如发送通知、生成报告等 } } ``` 通过以上配置,Jenkins会按照定义的流水线顺序执行每个阶段的操作,并根据触发条件自动触发构建。开发人员可以根据实际需求自定义流水线的各个阶段和操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值