You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Python变量传递至Groovy(Jenkins)脚本?

实现Python变量传递给Jenkins Groovy脚本的几种方法

方法1:通过标准输出(stdout)传递

让Python脚本将变量内容打印到标准输出,Groovy脚本执行Python命令并捕获输出内容,适合传递复杂结构的变量。

Python脚本示例(var_provider.py)

# 定义要传递的变量
my_var = "Jenkins Build v1.0.0"
env_config = {"env": "prod", "timeout": 300}

# 将变量转为JSON字符串输出,保证结构完整性
import json
print(json.dumps({"my_var": my_var, "env_config": env_config}))

Groovy脚本示例(Jenkinsfile)

// 执行Python脚本并捕获标准输出
def pythonOutput = sh(script: "python3 var_provider.py", returnStdout: true).trim()

// 解析JSON格式的输出内容
def parsedVars = new groovy.json.JsonSlurper().parseText(pythonOutput)

// 使用传递过来的变量
echo "获取到的版本变量: ${parsedVars.my_var}"
echo "生产环境超时配置: ${parsedVars.env_config.timeout}"

方法2:通过临时文件传递

Python脚本将变量写入临时文件,Groovy脚本读取该文件内容,适合需要持久化传递的场景。

Python脚本示例

import json

vars_to_pass = {"build_number": 123, "artifact_path": "/dist/app.zip"}

# 将变量写入临时JSON文件
with open("vars_temp.json", "w") as f:
    json.dump(vars_to_pass, f)

Groovy脚本示例

// 读取临时文件内容
def tempFile = new File("vars_temp.json")
def parsedVars = new groovy.json.JsonSlurper().parse(tempFile)

// 使用传递的变量
echo "当前构建编号: ${parsedVars.build_number}"
echo "制品存放路径: ${parsedVars.artifact_path}"

// 可选:清理临时文件
tempFile.delete()

方法3:通过环境变量传递

Python脚本输出shell可执行的环境变量设置语句,Groovy脚本通过shell执行并读取环境变量,适合简单字符串类型变量。

Python脚本示例(set_env.py)

# 输出shell环境变量设置语句
print(f"export MY_VAR='Hello from Python'")
print(f"export BUILD_VERSION='2.3.4'")

Groovy脚本示例

// 执行Python脚本输出的shell命令,将环境变量写入临时文件
sh(script: "eval \$(python3 set_env.py) && echo \$MY_VAR > var_temp.txt")

// 读取环境变量内容
def myVar = readFile("var_temp.txt").trim()
echo "环境变量传递的内容: ${myVar}"

注意:复杂结构变量不建议用环境变量传递,容易出现格式解析问题,优先选择JSON格式的标准输出或临时文件方式。

内容的提问来源于stack exchange,提问作者LM10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:12:52