1. 概述
Jenkins 参数 提供了一种向流水线输入数据的方式,并能动态控制其执行流程。例如,我们可以根据参数值 prod
、staging
或 testing
来决定部署到哪个环境。
我们还可以使用共享的流水线代码,并通过传入不同参数来部署多个服务或应用。这种方式可以减少重复代码,也便于在统一位置进行修改。
在本教程中,我们将展示如何在 Jenkins 中定义和使用参数,以及如何判断该参数是否为空。
2. 在 Jenkins 中定义参数
Jenkins 参数可以在多个位置定义。我们可以通过流水线配置界面定义,也可以直接在 Jenkinsfile 中声明。
2.1. 通过流水线配置界面定义参数
最简单的方式是通过 Jenkins 的图形界面定义参数。我们可以进入流水线的配置页面,勾选 This project is parameterized:
如上图所示,我们创建了一个名为 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()
,代码更简洁且语义清晰。
通过这些技巧,可以有效避免因参数为空导致的流水线异常,提升脚本的健壮性。