Jenkins:如何用EXECUTOR_NUMBER定义环境变量
Jenkins节点环境变量嵌入EXECUTOR_NUMBER的实现方案
这个需求完全可以实现,针对你的Jenkins 2.361.1版本,分两种场景给出具体解决方法:
一、节点全局配置(所有运行在该节点的Job都生效)
节点默认的静态环境变量不会自动解析EXECUTOR_NUMBER这类内置变量,得用Groovy脚本动态生成值:
- 进入节点配置页:Manage Jenkins → Manage Nodes and Clouds → 选中目标节点 → Configure
- 找到「Node properties」,勾选「Environment variables」
- 点击「Add」,填写变量名(比如
DB_INSTANCE) - 在「Value」栏不要直接写
ci-db#$EXECUTOR_NUMBER,改用Groovy脚本格式:
(怕执行器未分配时出问题,可以加默认值:"ci-db#${EXECUTOR_NUMBER}"${EXECUTOR_NUMBER} ? "ci-db#${EXECUTOR_NUMBER}" : "ci-db#default") - 保存配置后,该节点上的Job就能拿到替换后的变量值了。
二、仅在特定Job中生效(自由风格/Pipeline)
自由风格Job
- 打开Job配置,找到「Build Environment」,勾选「Inject environment variables to the build process」
- 在「Properties Content」里直接写:
DB_INSTANCE=ci-db#${EXECUTOR_NUMBER} - 保存后,构建时变量会自动替换为实际的执行器编号。
Pipeline Job
直接在脚本里用环境变量语法定义:
pipeline { agent { label '你的节点标签' } environment { DB_INSTANCE = "ci-db#${env.EXECUTOR_NUMBER}" } stages { stage('测试变量') { steps { echo "当前DB实例:${DB_INSTANCE}" } } } }
运行时会自动把env.EXECUTOR_NUMBER替换成实际数值。
注意点
EXECUTOR_NUMBER只有在Job执行期间才会有有效值,节点空闲时这个变量可能为空,建议根据实际情况加默认值处理。
内容的提问来源于stack exchange,提问作者Maria Pedro Sales
相关产品推荐
相关产品推荐

