1. 概述

Jenkins 参数 提供了一种向流水线输入数据的方式,并能动态控制其执行流程。例如,我们可以根据参数值 prodstagingtesting 来决定部署到哪个环境。

我们还可以使用共享的流水线代码,并通过传入不同参数来部署多个服务或应用。这种方式可以减少重复代码,也便于在统一位置进行修改。

在本教程中,我们将展示如何在 Jenkins 中定义和使用参数,以及如何判断该参数是否为空。

2. 在 Jenkins 中定义参数

Jenkins 参数可以在多个位置定义。我们可以通过流水线配置界面定义,也可以直接在 Jenkinsfile 中声明。

2.1. 通过流水线配置界面定义参数

最简单的方式是通过 Jenkins 的图形界面定义参数。我们可以进入流水线的配置页面,勾选 This project is parameterized

通过 GUI 标记项目为参数化

如上图所示,我们创建了一个名为 environment 的字符串类型参数,并添加了描述,以帮助用户理解输入内容。

2.2. 在 Jenkinsfile 中定义参数

另一种方式是在 Jenkinsfile 中使用 parameters 指令定义参数,通常放在 pipeline 块内:

pipeline {
    agent any
    parameters {
        string description: 'This is the target environment for deployment', name: 'environment'
    }
}

我们在此处定义的参数与在 GUI 中创建的效果一致,但以代码形式存在。注意:参数只能在 GUI 或 Jenkinsfile 中定义一次,不能同时存在。

3. 打印参数值

定义好参数后,我们可以在流水线中使用它。例如,使用 echo 步骤打印参数值:

pipeline {
    agent any
    parameters {
        string description: 'This is the target environment for deployment', name: 'environment'
    }
    stages {
        stage("print parameter value"){
            steps {
                echo "we'll deploy on the $environment environment"
            }
        }
    }
}

我们使用 echo 将参数值嵌入到输出信息中。运行流水线时输入 production,输出如下:

流水线执行结果
控制台输出

可以看到,我们输入的参数值被正确打印出来了。

4. 判断 Jenkins 参数是否为空

当参数为空时,可能会导致流水线流程异常。因此,建议对空参数进行处理,比如抛出错误或设置默认值。

接下来我们介绍几种判断参数是否为空的方法。

4.1. 使用 isEmpty() 方法

判断字符串是否为空的一种简单方式是使用 isEmpty() 方法。该方法在字符串为空时返回 true,否则返回 false

我们可以在流水线中这样使用:

pipeline {
    agent any 
    parameters { 
        string description: 'This is the target environment for deployment', name: 'environment' 
    } 
    stages {
        stage("print parameter value") {
            steps {
                script {
                    if (environment.isEmpty()) {
                        echo "The environment parameter cannot be empty"
                    }
                    else {
                        echo "we'll deploy on the $environment environment"
                    }
                }
            }
        }
    }
}

⚠️ 注意:在流水线中使用 if-else 语句时,必须将其放在 script 块内,因为这是 Groovy 脚本的一部分,而不是 Jenkins 的原生步骤。

运行流水线并留空参数,输出如下:

设置空参数
控制台输出显示参数为空

可以看到,我们设置的提示信息成功输出。

4.2. 使用 if-else 判断空字符串或 null

另一种方式是直接使用 if-else 判断参数是否为 null 或空字符串:

pipeline {
    agent any 
    parameters { 
        string description: 'This is the target environment for deployment', name: 'environment'
    } 
    stages {
        stage("print parameter value") {
            steps {
                script {
                    if (environment == '' || environment == null) {
                        echo "The environment parameter is again empty"
                    }
                    else {
                        echo "we'll deploy on the $environment environment"
                    }
                }
            }
        }
    }
}

我们用原始的 if-else 替换了 isEmpty() 方法,并修改了提示语以区分测试结果。

再次运行流水线并留空参数:

再次触发参数
控制台输出显示参数为空

同样输出了我们设定的提示信息。

5. 总结

本文介绍了 Jenkins 参数的基本用法,包括如何通过界面或 Jenkinsfile 定义参数,以及如何在流水线中使用和判断参数是否为空。

我们展示了两种判断空值的方式:

  • 使用 isEmpty() 方法(推荐)
  • 使用 if-else 判断 null 或空字符串

建议在实际项目中优先使用 isEmpty(),代码更简洁且语义清晰。

通过这些技巧,可以有效避免因参数为空导致的流水线异常,提升脚本的健壮性。


原始标题:How to Check if a Pipeline Parameter Is Empty in Jenkins