如何中止声明性管道

dav*_*rez 2 jenkins jenkins-pipeline

我正在尝试新的声明性管道语法.

我想知道,当例如参数具有无效值时,我如何中止管道的所有阶段和步骤.

我可以when在每个阶段添加一个子句,但这对我来说不是最佳选择.有没有更好的方法呢?

Chr*_*Orr 9

when如果您使用该error步骤,这应该适用于指令.

例如,如果给定的参数值不可接受,您可以进行前期检查并中止构建 - 防止后续阶段运行:

pipeline {
  agent any
  parameters {
    string(name: 'targetEnv',
           defaultValue: 'dev',
           description: 'Must be "dev", "qa", or "staging"')
  }
  stages {
    stage('Validate parameters') {
      when {
        expression {
          // Only run this stage if the targetEnv is invalid
          !['dev', 'qa', 'staging'].contains(params.targetEnv)
        }
      }
      steps {
        // Abort the build, skipping subsequent stages
        error("Invalid target environment: ${params.targetEnv}")
      }
    }
    stage('Checkout') {
      steps {
        echo 'Checking out source code...'
      }
    }
    stage('Build') {
      steps {
        echo 'Building...'
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

  • @Deepaklal 你不能在错误步骤之前使用 `script {currentBuild.result = 'SUCCESS'}` (2认同)