一尘不染

Jenkins + Build Flow,如何将变量从一项工作传递到另一项工作

jenkins

我有一个类似于文档示例的构建流程场景:两个作业,一个在另一个上运行。

b = build("job1")
build("job2", param1: b.????)

My job1是一个Shell脚本,它从检出的git repositoy构建一个包,并打印出所构建包的版本。

我需要从job1(解析输出?)中提取版本,并以某种方式将其用作的参数job2。如何做到这一点?请注意我在运行之前不知道版本job1


阅读 271

收藏
2020-07-25

共1个答案

一尘不染

export在shell脚本构建步骤中简单使用的问题是,退出的变量在shell脚本退出时消失,它们不会传播到作业中。

使用EnvInject插件在您的构建中创建环境变量。如果您在构建过程中写出属性文件,则EnvInject可以读取该文件并在构建步骤中注入变量。属性文件具有简单的KEY=VALUE格式:

MY_BUILD_VERSION=some_parsed_value

一旦在工作中设置了环境变量,就可以在Build Flow插件中提取该变量的值并在后续工作中使用它:

def version = build.environment.get( "MY_BUILD_VERSION" )
out.println String.format("Parameters: version: %s", version)
build( "My Second Build", MY_BUILD_VERSION: version )
2020-07-25