How to set an environment variable programmatically in Jenkins/Hudson?
Solution 1
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.
Solution 2
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()]
Gogi
Updated on May 14, 2020Comments
-
Gogi almost 4 years
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.
-
Nux almost 5 yearsWorkspace is always separate for each build so there is no need to add a
build_id
. If you will add build_id you will end up with a lot of files eventually. It's better to simply start by removing old file if it exists (or simply overwrite it). -
Luis Elizondo over 3 yearsIt really depends on your use case. If you want to preserve the content of the file for a later usage you need to add the build-id in the file name. If you will only use the latest build info, then you can always replace it.