将 Jenkins 变量传递给 Ruby 个脚本

Pass Jenkins variable to Ruby scripts

目前我正在尝试回显使用

触发构建的用户的名称

$BUILD_USER_ID

来自用户 vars 插件,但我不确定如何将其传递到我的 ruby 脚本中,我是在批处理命令中执行的:

set USER= $BUILD_USER_ID

这就是我的 ruby 文件中的内容:

ENV['USER']

但它 return 一串奇怪的字母,我猜这是我用于 运行 作业的从属节点中的用户名。

有什么我想念的吗?

您可以将您的插件与 envinject 插件相结合,以在您的 Jenkins 作业中注入环境变量。

我创建了一个 jenkins 作业并安装了两个插件。我勾选了 "Set jenkins user build variables"。 我还勾选了:"Inject environment variables to the build process" 并在 "Properties Content":

中定义
USER = $BUILD_USER_ID

这将创建一个新的环境变量 USER,其内容为变量 BUILD_USER_ID(由用户 env 插件创建)的内容。

测试:

我创建了一个 file.rb,其中包含我的 ruby 代码来打印环境变量(就在 shell 中)。

# write script
echo "#!/usr/bin/env ruby" > file.rb
echo "# Print some variables" >> file.rb
echo "puts ENV['BUILD_USER_ID']" >> file.rb

# execute script
ruby file.rb

输出:

[EnvInject] - Injecting as environment variables the properties content 
USER=$BUILD_USER_ID

[EnvInject] - Variables injected successfully.
[test] $ /bin/sh -xe /tmp/jenkins3544234152865572985.sh
+ echo #!/usr/bin/env ruby
+ echo # Print some variables
+ echo puts ENV['USER']
+ ruby file.rb
admin
Finished: SUCCESS