Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set an environment variable programmatically in Jenkins/Hudson?

I have two scripts in the pre-build step in a Jenkins job, the first one a perl script, the second a system groovy script using the groovy plugin. I need information from the first perl script in my second groovy script. I think the best way would be to set some environment variable, and was wondering how that can be realized.

Or any other better way.

Thanks for your time.

like image 216
Gogi Avatar asked May 28 '12 19:05

Gogi


2 Answers

The way to propagate environment variables among build steps is via EnvInject Plugin.

Here are some previous answers that show how to do it:

  • How to set environment variables in Jenkins?
  • Jenkins : Report results of intermediate [windows batch] build steps in email body

In your case, however, it may be simpler just to write to a file in one build step and read that file in another. To make sure you do not accidentally read from a previous version of the file you can incorporate BUILD_ID in the file name.

like image 144
malenkiy_scot Avatar answered Sep 30 '22 05:09

malenkiy_scot


Using EnvInject Plugin from job configuration you should use Inject environment variables to the build process / Evaluated Groovy script.

Depending on the setup you may execute Groovy or shell command and save it in map containing environment variables:

Example

By either getting command result with execute method:

return [DATE: 'date'.execute().text]

or with Groovy equivalent if one exists:

return [DATE: new Date()]
like image 28
luka5z Avatar answered Sep 30 '22 04:09

luka5z