2

Currently i'm trying to echo the name of the user that trigger a build using

$BUILD_USER_ID

from the user vars plugin, but from there i'm unsure as to how to pass this into my ruby scripts, i did this in a batch commmand:

set USER= $BUILD_USER_ID

and this is what i have in my ruby file:

ENV['USER']

But it return weird bunch of letters, which im guesing is the user name in the slave node i'm using to run the job.

is there something i'm missing?

1 Answers1

2

You can combine your plugin with the envinject plugin to inject environment variables in your Jenkins job.

I've created a jenkins job and installed both plugins. I've ticked the "Set jenkins user build variables". I've also ticked: "Inject environment variables to the build process" and define inside the "Properties Content":

USER = $BUILD_USER_ID

This will create a new environment variable USER with as content the content of the variable BUILD_USER_ID (which is created by the user env plugin).

To test:

I've created a file.rb which contains my ruby code to print an environment variable (just in the 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

Output:

[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
lvthillo
  • 28,263
  • 13
  • 94
  • 127