1. 授权认证
  2. 获取用户个人信息
  3. 项目协同
  4. 代码托管
  5. 持续集成
  6. 制品仓库
  7. 测试管理
  1. 项目协同
  2. 代码仓库
  3. DevOps 实践之旅
  4. 一分钟开始持续集成之旅
  5. 持续部署
  6. 制品库

在流水线 / 阶段末尾执行插件

在配置持续集成的过程中,有一些步骤需要根据流水线 / 阶段的执行情况决定是否执行。例如,当「单元测试」步骤执行失败时,「收集测试报告」步骤就没有必要执行了。因此我们可以为「收集测试报告」步骤添加判断条件,让它在之前的「单元测试」阶段执行成功后方才执行。

您可以通过持续集成步骤里的「置底执行」开关控制实现上述效果。

使用图形化编辑器配置流水线 / 阶段末尾执行

流水线末尾执行

在流水线末尾的「结束阶段」点击 + 添加步骤,进入「高级配置」,选择执行条件。默认为始终执行,点击此处查看执行条件详情。

配置成功后,在流水线的最后阶段,构建任务会根据执行条件执行步骤。相同执行条件的步骤将会按照「结束」阶段里的设置顺序执行,不同执行条件下的的步骤执行顺序互不影响。

阶段末尾执行

如果您根据阶段的执行情况设置特定步骤,可以将阶段内的步骤设置为「置底执行」。

  1. 添加一个普通步骤。

  1. 进入高级配置,打开 “置底执行” 开关,该步骤会自动跳到「置底执行」区域。

  1. 选择执行条件,默认为始终执行。查看执行条件详情请到 执行条件详情

Jenkinsfile

pipeline {
  agent any
  stages {
    stage('检出') {
      steps {
        checkout([$class: 'GitSCM',
        branches: [[name: env.GIT_BUILD_REF]],
        userRemoteConfigs: [[
          url: env.GIT_REPO_URL,
          credentialsId: env.CREDENTIALS_ID
        ]]])
      }
    }
    stage('安装依赖') {
      steps {
        sh 'npm install'
      }
    }
    stage('单元测试') {
      // 该区域的步骤将会在单元测试阶段末尾执行  
      post {
        // 当单元测试阶段执行成功,才会执行 success 区域中的测试报告收集步骤
        success {
          junit 'target/surefire-reports/*.xml'
        }
      }
      steps {
        sh 'npm test'
      }
    }
  }
  // 该区域的步骤将会在流水线末尾执行
  post {
    // always 区域步骤会始终执行
    always {
      sh 'echo hello CODING'
    }
  }
}

执行条件详情

  • always : 无论流水线 / 阶段的完成状态如何,都允许在 post 部分运行该步骤。
  • aborted : 只有流水线 / 阶段执行结果为 “aborted” 时,才允许在 post 部分运行该步骤(例如手动终止)。
  • failure : 只有流水线 / 阶段执行结果为 “failure” 时,才允许在 post 部分运行该步骤。
  • success : 只有流水线 / 阶段执行结果为 “success” 时,才允许在 post 部分运行该步骤。
  • unsuccessful : 流水线 / 阶段执行结果不为 “success”时,就允许在 post 部分运行该步骤。
  • cleanup : 其他条件的 post 过程执行完毕后执行该步骤。
上一篇自动化发布 API 文档
最近更新
感谢反馈有用
感谢反馈没用