我在管道中有类似下面的流程。
stage('Build') {
build job: 'Build'
}
stage('Run') {
build job: 'Run', parameters: [string(name: 'build_version', value: <to get from Build job>)]
}
我正在Build作业中运行python脚本作为执行批处理脚本。
```python build.py```
“ build.py”将具有变量“ build_version”。我想将其传递给jenkins Job“ Build”,然后转到管道,然后将其从管道传递给“ Run”作业。
我该怎么做?
答案 0 :(得分:0)
这是一种可能的解决方案..
def build_version = bat(script: '/path/to/python /path/to/build.py', returnStdout: true)
并且python脚本应将要分配给$ build_version的值写入STDOUT
答案 1 :(得分:0)
请注意,每个外壳程序(管道中的sh
步骤)都会打开一个新的外壳程序,而前一个外壳程序是未知的。如果要使Shell变量可见,则需要export
变量。
请注意,在这些情况下,我通常不导出变量(您需要从python中的env获取它),而是“创建”一个包含所有所需变量的python文件。稍后,您的build.py
脚本只需导入即可。
要将环境变量注入该环境python文件,您可以使用shell命令(例如cat
或type
,具体取决于您的操作系统)或使用groovy函数(请参见writeFile)< / p>
答案 2 :(得分:0)
不确定这是有效的解决方案。但是下面的方法对我有用。
从python脚本中,我正在创建一个属性文件,其中包含下一步所需的值。 然后使用EnvInject插件将其推送到构建的环境变量,然后在管道中使用方法“ rawBuild.getEnvironment()”来获取它。 示例代码:
def param_val = ""
stage("Build"){
def build_var = build job: 'Build'
param_val = build_var.rawBuild.getEnvironment()[<Variable name you defined>]
}
stage("Run") {
build job: 'Run', parameters: [string(name: '<param>', value: param_val)
}