How to set environment variables in Jenkins?












180















I would like to be able to do something like:



AOEU=$(echo aoeu)


and have Jenkins set AOEU=aoeu.



The Environment Variables section in Jenkins doesn't do that. Instead, it sets AOEU='$(echo aoeu)'.



How can I get Jenkins to evaluate a shell command and assign the output to an environment variable?



Eventually, I want to be able to assign the executor of a job to an environment variable that can be passed into or used by other scripts.










share|improve this question




















  • 1





    EnvInject plugin is having some serious security vulnerability. Now Jenkins is having inbuilt support for this stackoverflow.com/a/53430757/1753177

    – lambodar
    Nov 22 '18 at 13:27
















180















I would like to be able to do something like:



AOEU=$(echo aoeu)


and have Jenkins set AOEU=aoeu.



The Environment Variables section in Jenkins doesn't do that. Instead, it sets AOEU='$(echo aoeu)'.



How can I get Jenkins to evaluate a shell command and assign the output to an environment variable?



Eventually, I want to be able to assign the executor of a job to an environment variable that can be passed into or used by other scripts.










share|improve this question




















  • 1





    EnvInject plugin is having some serious security vulnerability. Now Jenkins is having inbuilt support for this stackoverflow.com/a/53430757/1753177

    – lambodar
    Nov 22 '18 at 13:27














180












180








180


45






I would like to be able to do something like:



AOEU=$(echo aoeu)


and have Jenkins set AOEU=aoeu.



The Environment Variables section in Jenkins doesn't do that. Instead, it sets AOEU='$(echo aoeu)'.



How can I get Jenkins to evaluate a shell command and assign the output to an environment variable?



Eventually, I want to be able to assign the executor of a job to an environment variable that can be passed into or used by other scripts.










share|improve this question
















I would like to be able to do something like:



AOEU=$(echo aoeu)


and have Jenkins set AOEU=aoeu.



The Environment Variables section in Jenkins doesn't do that. Instead, it sets AOEU='$(echo aoeu)'.



How can I get Jenkins to evaluate a shell command and assign the output to an environment variable?



Eventually, I want to be able to assign the executor of a job to an environment variable that can be passed into or used by other scripts.







jenkins environment-variables






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 18 '18 at 14:00









vallismortis

3,674104366




3,674104366










asked May 16 '12 at 19:21









November YankeeNovember Yankee

7,528155997




7,528155997








  • 1





    EnvInject plugin is having some serious security vulnerability. Now Jenkins is having inbuilt support for this stackoverflow.com/a/53430757/1753177

    – lambodar
    Nov 22 '18 at 13:27














  • 1





    EnvInject plugin is having some serious security vulnerability. Now Jenkins is having inbuilt support for this stackoverflow.com/a/53430757/1753177

    – lambodar
    Nov 22 '18 at 13:27








1




1





EnvInject plugin is having some serious security vulnerability. Now Jenkins is having inbuilt support for this stackoverflow.com/a/53430757/1753177

– lambodar
Nov 22 '18 at 13:27





EnvInject plugin is having some serious security vulnerability. Now Jenkins is having inbuilt support for this stackoverflow.com/a/53430757/1753177

– lambodar
Nov 22 '18 at 13:27












12 Answers
12






active

oldest

votes


















181














This can be done via EnvInject plugin in the following way:





  1. Create an "Execute shell" build step that runs:



    echo AOEU=$(echo aoeu) > propsfile


  2. Create an Inject environment variables build step and set "Properties File Path" to propsfile.



Note: This plugin is (mostly) not compatible with the Pipeline plugin.






share|improve this answer





















  • 2





    EnvInject doesn't handle the situation I gave above: [EnvInject] - Injecting as environment variables the properties content AOEU=$(echo aoeu) [EnvInject] - Variables injected successfully. [EnvInject] - Unset unresolved 'AOEU' variable.

    – November Yankee
    May 17 '12 at 0:32













  • It seems that I did not quite get what it was that you wanted. My meaning was that you first run a shell build step where you write something like echo 'AOEU=' > propsfile and then echo `echo aoeu` > propsfile. In the next build step you load propsfile (the contents of which is now AOEU=aoeu).

    – malenkiy_scot
    May 17 '12 at 6:13








  • 1





    That solution uses Unix shell syntax and won't work on windows.

    – fbmd
    Apr 16 '15 at 13:14






  • 2





    @fbmd I'm running it on Windows. You just need to make sure you have sh on the path.

    – Custodio
    Sep 17 '15 at 19:29






  • 2





    EnvInject does not work if the "execute shell" exits with an error because the build does not proceed to the injection part.

    – Chadi
    Apr 19 '16 at 7:57



















89














The simplest way



You can use EnvInject plugin to injects environment variables at build startup. For example:



Add key=value (bash OK!) under 'Build Environment'->'Inject environment variables to the build process' -> 'Properties Content'



How you know it's working



EnvInject - Variables injected successfully






share|improve this answer





















  • 5





    Try setting the value based on the output of a shell command.

    – November Yankee
    Jun 18 '15 at 23:11






  • 1





    @NoelYap Works too, as long as in the end the line evaluates to key=value. In my use case I generate the line completely: cat app/build.gradle | grep "def majorVersion" | python -c 'import sys,re,os; print("VERSION_NUMBER="+re.findall(r"[d+.]+", sys.stdin.read())[0]+os.environ["BUILD_NUMBER"])'

    – theFunkyEngineer
    Jun 19 '15 at 6:52













  • @theFunkyEngineer what version of EnvInject are you using? With 1.91.3, a command like yours is interpreted as "cat=app...". Would be great if this feature was supported, but I'm getting the sense that this may have worked for you by accident.

    – killthrush
    Jul 23 '15 at 20:50






  • 1





    attempting to assign a value to the output of a shell command is not working for me either: BUILD_DATE=date "+%Y-%m-%d-%H_%M_%S" and BUILD_DATE=$(date "+%Y-%m-%d-%H_%M_%S") and BUILD_DATE=`date "+%Y-%m-%d-%H_%M_%S"` did not work for me

    – scottyseus
    Dec 11 '15 at 14:02








  • 1





    @scottyseus I ended up using this wiki.jenkins-ci.org/display/JENKINS/Environment+Script+Plugin worked like a charm. stackoverflow.com/a/38286383/1240268

    – Andy Hayden
    Feb 24 '17 at 17:31





















43














In my case, I needed to add the JMETER_HOME environment variable to be available via my Ant build scripts across all projects on my Jenkins server (Linux), in a way that would not interfere with my local build environment (Windows and Mac) in the build.xml script. Setting the environment variable via Manage Jenkins - Configure System - Global properties was the easiest and least intrusive way to accomplish this. No plug-ins are necessary.



Manage Jenkins Global Properties





The environment variable is then available in Ant via:



<property environment="env" />
<property name="jmeter.home" value="${env.JMETER_HOME}" />


This can be verified to works by adding:



<echo message="JMeter Home: ${jmeter.home}"/>


Which produces:




JMeter Home: ~/.jmeter







share|improve this answer
























  • That is a global property. It will effect ALL jobs on Jenkins. Supposed I just want this property for one job?

    – IgorGanapolsky
    Nov 17 '16 at 21:36











  • I've added to Manage Jenkins - Configure System - Global properties, the following: git /path/to/my/git and PATH+git /path/to/my/git. However, if I am trying to access git from the a Jenkins pipeline script, I get: /bin/sh: git: command not found.

    – octavian
    Mar 6 '17 at 15:46






  • 1





    I just needed to set up JAVA_HOME environment variable and this answer was the one that helped me.

    – Sandoval0992
    Jan 11 at 10:24



















12














EnvInject Plugin aka (Environment Injector Plugin) gives you several options to set environment variables from Jenkins configuration.



By selecting Inject environment variables to the build process you will get:




  • Properties File Path

  • Properties Content

  • Script File Path


  • Script Content


  • and finally Evaluated Groovy script.





Evaluated Groovy script gives you possibility to set environment variable based on result of executed command:




  • with execute method:


    return [HOSTNAME_SHELL: 'hostname'.execute().text, 
DATE_SHELL: 'date'.execute().text,
ECHO_SHELL: 'echo hello world!'.execute().text
]



  • or with explicit Groovy code:


    return [HOSTNAME_GROOVY: java.net.InetAddress.getLocalHost().getHostName(),
DATE_GROOVY: new Date()
]


(More details about each method could be found in build-in help (?))





Unfortunately you can't do the same from Script Content as it states:




Execute a script file aimed at setting an environment such as creating
folders, copying files, and so on. Give the script file content. You
can use the above properties variables. However, adding or overriding
environment variables in the script doesn't have any impacts in the
build job
.







share|improve this answer

































    11














    You can try something like this



    stages {
    stage('Build') {
    environment {
    AOEU= sh (returnStdout: true, script: 'echo aoeu').trim()
    }
    steps {
    sh 'env'
    sh 'echo $AOEU'
    }
    }
    }





    share|improve this answer
























    • Does this really work?

      – rjurney
      Nov 16 '17 at 20:08











    • This doesn't parse.

      – rjurney
      Nov 16 '17 at 20:12






    • 1





      This formatt is for the Jenkinsfile pipeline project. What job type are you using this snippet in?

      – JSixface
      Jan 15 '18 at 16:28











    • This works perfectly in a Jenkinsfile for a pipeline (not job)! That's awesome, thanks for it!

      – mathielo
      Sep 4 '18 at 9:50



















    8














    There is Build Env Propagator Plugin which lets you add new build environment variables, e.g.



    Jenkins Build - Propagate build environment variables




    Any successive Propagate build environment variables step will override previously defined environment variable values.







    share|improve this answer


























    • Thank you! Build Env Propagator Plugin worked when I tried it, and it's great to have the ability to set environment variables during the Build steps!

      – twasbrillig
      Dec 16 '16 at 18:44



















    7














    You can use Environment Injector Plugin to set environment variables in Jenkins at job and node levels. Below I will show how to set them at job level.




    1. From the Jenkins web interface, go to Manage Jenkins > Manage Plugins and install the plugin.


    Environment Injector Plugin




    1. Go to your job Configure screen

    2. Find Add build step in Build section and select Inject environment variables

    3. Set the desired environment variable as VARIABLE_NAME=VALUE pattern. In my case, I changed value of USERPROFILE variable


    enter image description here



    If you need to define a new environment variable depending on some conditions (e.g. job parameters) you can refer to this answer.






    share|improve this answer

































      5














      Normally you can configure Environment variables in Global properties in Configure System.



      However for dynamic variables with shell substitution, you may want to create a script file in Jenkins HOME dir and execute it during the build. The SSH access is required. For example.




      1. Log-in as Jenkins: sudo su - jenkins or sudo su - jenkins -s /bin/bash


      2. Create a shell script, e.g.:



        echo 'export VM_NAME="$JOB_NAME"' > ~/load_env.sh
        echo "export AOEU=$(echo aoeu)" >> ~/load_env.sh
        chmod 750 ~/load_env.sh



      3. In Jenkins Build (Execute shell), invoke the script and its variables before anything else, e.g.



        source ~/load_env.sh







      share|improve this answer


























      • unfortunately did not work for me. after sudo su - jenkins, still echo $USER gives me root.

        – prayagupd
        May 9 '17 at 0:40











      • @prayagupd You need to simulate a full login, so use su -l parameter to do that, otherwise ask a separate question.

        – kenorb
        May 9 '17 at 10:49



















      3














      Try Environment Script Plugin (GitHub) which is very similar to EnvInject. It allows you to run a script before the build (after SCM checkout) that generates environment variables for it. E.g.



      Jenkins Build - Regular job - Build Environment



      and in your script, you can print e.g. FOO=bar to the standard output to set that variable.



      Example to append to an existing PATH-style variable:



      echo PATH+unique_identifier=/usr/local/bin


      So you're free to do whatever you need in the script - either cat a file, or run a script in some other language from your project's source tree, etc.






      share|improve this answer































        0














        For some reason sudo su - jenkins does not log me to jenkins user, I ended up using different approach.



        I was successful setting the global env variables using using jenkins config.xml at /var/lib/jenkins/config.xml (installed in Linux/ RHEL) - without using external plugins.



        I simply had to stop jenkins add then add globalNodeProperties, and then restart.



        Example, I'm defining variables APPLICATION_ENVIRONMENT and SPRING_PROFILES_ACTIVE to continious_integration below,



        <?xml version='1.0' encoding='UTF-8'?>
        <hudson>

        <globalNodeProperties>
        <hudson.slaves.EnvironmentVariablesNodeProperty>
        <envVars serialization="custom">
        <unserializable-parents/>
        <tree-map>
        <default>
        <comparator class="hudson.util.CaseInsensitiveComparator"/>
        </default>
        <int>2</int>
        <string>APPLICATION_ENVIRONMENT</string>
        <string>continious_integration</string>
        <string>SPRING_PROFILES_ACTIVE</string>
        <string>continious_integration</string>
        </tree-map>
        </envVars>
        </hudson.slaves.EnvironmentVariablesNodeProperty>
        </globalNodeProperties>
        </hudson>





        share|improve this answer

































          0














          In my case, I had configured environment variables using the following option and it worked-



          Manage Jenkins -> Configure System -> Global Properties -> Environment Variables -> Add





          share|improve this answer
























          • Thanks @nik it is helpful! :)

            – Mayur
            Mar 6 at 9:39



















          -1














          We use groovy job file:



          description('')
          steps {
          environmentVariables {
          envs(PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: true)
          }
          }





          share|improve this answer























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f10625259%2fhow-to-set-environment-variables-in-jenkins%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            12 Answers
            12






            active

            oldest

            votes








            12 Answers
            12






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            181














            This can be done via EnvInject plugin in the following way:





            1. Create an "Execute shell" build step that runs:



              echo AOEU=$(echo aoeu) > propsfile


            2. Create an Inject environment variables build step and set "Properties File Path" to propsfile.



            Note: This plugin is (mostly) not compatible with the Pipeline plugin.






            share|improve this answer





















            • 2





              EnvInject doesn't handle the situation I gave above: [EnvInject] - Injecting as environment variables the properties content AOEU=$(echo aoeu) [EnvInject] - Variables injected successfully. [EnvInject] - Unset unresolved 'AOEU' variable.

              – November Yankee
              May 17 '12 at 0:32













            • It seems that I did not quite get what it was that you wanted. My meaning was that you first run a shell build step where you write something like echo 'AOEU=' > propsfile and then echo `echo aoeu` > propsfile. In the next build step you load propsfile (the contents of which is now AOEU=aoeu).

              – malenkiy_scot
              May 17 '12 at 6:13








            • 1





              That solution uses Unix shell syntax and won't work on windows.

              – fbmd
              Apr 16 '15 at 13:14






            • 2





              @fbmd I'm running it on Windows. You just need to make sure you have sh on the path.

              – Custodio
              Sep 17 '15 at 19:29






            • 2





              EnvInject does not work if the "execute shell" exits with an error because the build does not proceed to the injection part.

              – Chadi
              Apr 19 '16 at 7:57
















            181














            This can be done via EnvInject plugin in the following way:





            1. Create an "Execute shell" build step that runs:



              echo AOEU=$(echo aoeu) > propsfile


            2. Create an Inject environment variables build step and set "Properties File Path" to propsfile.



            Note: This plugin is (mostly) not compatible with the Pipeline plugin.






            share|improve this answer





















            • 2





              EnvInject doesn't handle the situation I gave above: [EnvInject] - Injecting as environment variables the properties content AOEU=$(echo aoeu) [EnvInject] - Variables injected successfully. [EnvInject] - Unset unresolved 'AOEU' variable.

              – November Yankee
              May 17 '12 at 0:32













            • It seems that I did not quite get what it was that you wanted. My meaning was that you first run a shell build step where you write something like echo 'AOEU=' > propsfile and then echo `echo aoeu` > propsfile. In the next build step you load propsfile (the contents of which is now AOEU=aoeu).

              – malenkiy_scot
              May 17 '12 at 6:13








            • 1





              That solution uses Unix shell syntax and won't work on windows.

              – fbmd
              Apr 16 '15 at 13:14






            • 2





              @fbmd I'm running it on Windows. You just need to make sure you have sh on the path.

              – Custodio
              Sep 17 '15 at 19:29






            • 2





              EnvInject does not work if the "execute shell" exits with an error because the build does not proceed to the injection part.

              – Chadi
              Apr 19 '16 at 7:57














            181












            181








            181







            This can be done via EnvInject plugin in the following way:





            1. Create an "Execute shell" build step that runs:



              echo AOEU=$(echo aoeu) > propsfile


            2. Create an Inject environment variables build step and set "Properties File Path" to propsfile.



            Note: This plugin is (mostly) not compatible with the Pipeline plugin.






            share|improve this answer















            This can be done via EnvInject plugin in the following way:





            1. Create an "Execute shell" build step that runs:



              echo AOEU=$(echo aoeu) > propsfile


            2. Create an Inject environment variables build step and set "Properties File Path" to propsfile.



            Note: This plugin is (mostly) not compatible with the Pipeline plugin.







            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited Apr 28 '18 at 15:15









            Fernando César

            212310




            212310










            answered May 16 '12 at 20:28









            malenkiy_scotmalenkiy_scot

            14.2k64878




            14.2k64878








            • 2





              EnvInject doesn't handle the situation I gave above: [EnvInject] - Injecting as environment variables the properties content AOEU=$(echo aoeu) [EnvInject] - Variables injected successfully. [EnvInject] - Unset unresolved 'AOEU' variable.

              – November Yankee
              May 17 '12 at 0:32













            • It seems that I did not quite get what it was that you wanted. My meaning was that you first run a shell build step where you write something like echo 'AOEU=' > propsfile and then echo `echo aoeu` > propsfile. In the next build step you load propsfile (the contents of which is now AOEU=aoeu).

              – malenkiy_scot
              May 17 '12 at 6:13








            • 1





              That solution uses Unix shell syntax and won't work on windows.

              – fbmd
              Apr 16 '15 at 13:14






            • 2





              @fbmd I'm running it on Windows. You just need to make sure you have sh on the path.

              – Custodio
              Sep 17 '15 at 19:29






            • 2





              EnvInject does not work if the "execute shell" exits with an error because the build does not proceed to the injection part.

              – Chadi
              Apr 19 '16 at 7:57














            • 2





              EnvInject doesn't handle the situation I gave above: [EnvInject] - Injecting as environment variables the properties content AOEU=$(echo aoeu) [EnvInject] - Variables injected successfully. [EnvInject] - Unset unresolved 'AOEU' variable.

              – November Yankee
              May 17 '12 at 0:32













            • It seems that I did not quite get what it was that you wanted. My meaning was that you first run a shell build step where you write something like echo 'AOEU=' > propsfile and then echo `echo aoeu` > propsfile. In the next build step you load propsfile (the contents of which is now AOEU=aoeu).

              – malenkiy_scot
              May 17 '12 at 6:13








            • 1





              That solution uses Unix shell syntax and won't work on windows.

              – fbmd
              Apr 16 '15 at 13:14






            • 2





              @fbmd I'm running it on Windows. You just need to make sure you have sh on the path.

              – Custodio
              Sep 17 '15 at 19:29






            • 2





              EnvInject does not work if the "execute shell" exits with an error because the build does not proceed to the injection part.

              – Chadi
              Apr 19 '16 at 7:57








            2




            2





            EnvInject doesn't handle the situation I gave above: [EnvInject] - Injecting as environment variables the properties content AOEU=$(echo aoeu) [EnvInject] - Variables injected successfully. [EnvInject] - Unset unresolved 'AOEU' variable.

            – November Yankee
            May 17 '12 at 0:32







            EnvInject doesn't handle the situation I gave above: [EnvInject] - Injecting as environment variables the properties content AOEU=$(echo aoeu) [EnvInject] - Variables injected successfully. [EnvInject] - Unset unresolved 'AOEU' variable.

            – November Yankee
            May 17 '12 at 0:32















            It seems that I did not quite get what it was that you wanted. My meaning was that you first run a shell build step where you write something like echo 'AOEU=' > propsfile and then echo `echo aoeu` > propsfile. In the next build step you load propsfile (the contents of which is now AOEU=aoeu).

            – malenkiy_scot
            May 17 '12 at 6:13







            It seems that I did not quite get what it was that you wanted. My meaning was that you first run a shell build step where you write something like echo 'AOEU=' > propsfile and then echo `echo aoeu` > propsfile. In the next build step you load propsfile (the contents of which is now AOEU=aoeu).

            – malenkiy_scot
            May 17 '12 at 6:13






            1




            1





            That solution uses Unix shell syntax and won't work on windows.

            – fbmd
            Apr 16 '15 at 13:14





            That solution uses Unix shell syntax and won't work on windows.

            – fbmd
            Apr 16 '15 at 13:14




            2




            2





            @fbmd I'm running it on Windows. You just need to make sure you have sh on the path.

            – Custodio
            Sep 17 '15 at 19:29





            @fbmd I'm running it on Windows. You just need to make sure you have sh on the path.

            – Custodio
            Sep 17 '15 at 19:29




            2




            2





            EnvInject does not work if the "execute shell" exits with an error because the build does not proceed to the injection part.

            – Chadi
            Apr 19 '16 at 7:57





            EnvInject does not work if the "execute shell" exits with an error because the build does not proceed to the injection part.

            – Chadi
            Apr 19 '16 at 7:57













            89














            The simplest way



            You can use EnvInject plugin to injects environment variables at build startup. For example:



            Add key=value (bash OK!) under 'Build Environment'->'Inject environment variables to the build process' -> 'Properties Content'



            How you know it's working



            EnvInject - Variables injected successfully






            share|improve this answer





















            • 5





              Try setting the value based on the output of a shell command.

              – November Yankee
              Jun 18 '15 at 23:11






            • 1





              @NoelYap Works too, as long as in the end the line evaluates to key=value. In my use case I generate the line completely: cat app/build.gradle | grep "def majorVersion" | python -c 'import sys,re,os; print("VERSION_NUMBER="+re.findall(r"[d+.]+", sys.stdin.read())[0]+os.environ["BUILD_NUMBER"])'

              – theFunkyEngineer
              Jun 19 '15 at 6:52













            • @theFunkyEngineer what version of EnvInject are you using? With 1.91.3, a command like yours is interpreted as "cat=app...". Would be great if this feature was supported, but I'm getting the sense that this may have worked for you by accident.

              – killthrush
              Jul 23 '15 at 20:50






            • 1





              attempting to assign a value to the output of a shell command is not working for me either: BUILD_DATE=date "+%Y-%m-%d-%H_%M_%S" and BUILD_DATE=$(date "+%Y-%m-%d-%H_%M_%S") and BUILD_DATE=`date "+%Y-%m-%d-%H_%M_%S"` did not work for me

              – scottyseus
              Dec 11 '15 at 14:02








            • 1





              @scottyseus I ended up using this wiki.jenkins-ci.org/display/JENKINS/Environment+Script+Plugin worked like a charm. stackoverflow.com/a/38286383/1240268

              – Andy Hayden
              Feb 24 '17 at 17:31


















            89














            The simplest way



            You can use EnvInject plugin to injects environment variables at build startup. For example:



            Add key=value (bash OK!) under 'Build Environment'->'Inject environment variables to the build process' -> 'Properties Content'



            How you know it's working



            EnvInject - Variables injected successfully






            share|improve this answer





















            • 5





              Try setting the value based on the output of a shell command.

              – November Yankee
              Jun 18 '15 at 23:11






            • 1





              @NoelYap Works too, as long as in the end the line evaluates to key=value. In my use case I generate the line completely: cat app/build.gradle | grep "def majorVersion" | python -c 'import sys,re,os; print("VERSION_NUMBER="+re.findall(r"[d+.]+", sys.stdin.read())[0]+os.environ["BUILD_NUMBER"])'

              – theFunkyEngineer
              Jun 19 '15 at 6:52













            • @theFunkyEngineer what version of EnvInject are you using? With 1.91.3, a command like yours is interpreted as "cat=app...". Would be great if this feature was supported, but I'm getting the sense that this may have worked for you by accident.

              – killthrush
              Jul 23 '15 at 20:50






            • 1





              attempting to assign a value to the output of a shell command is not working for me either: BUILD_DATE=date "+%Y-%m-%d-%H_%M_%S" and BUILD_DATE=$(date "+%Y-%m-%d-%H_%M_%S") and BUILD_DATE=`date "+%Y-%m-%d-%H_%M_%S"` did not work for me

              – scottyseus
              Dec 11 '15 at 14:02








            • 1





              @scottyseus I ended up using this wiki.jenkins-ci.org/display/JENKINS/Environment+Script+Plugin worked like a charm. stackoverflow.com/a/38286383/1240268

              – Andy Hayden
              Feb 24 '17 at 17:31
















            89












            89








            89







            The simplest way



            You can use EnvInject plugin to injects environment variables at build startup. For example:



            Add key=value (bash OK!) under 'Build Environment'->'Inject environment variables to the build process' -> 'Properties Content'



            How you know it's working



            EnvInject - Variables injected successfully






            share|improve this answer















            The simplest way



            You can use EnvInject plugin to injects environment variables at build startup. For example:



            Add key=value (bash OK!) under 'Build Environment'->'Inject environment variables to the build process' -> 'Properties Content'



            How you know it's working



            EnvInject - Variables injected successfully







            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited Jul 9 '16 at 21:00









            kenorb

            70.1k30408415




            70.1k30408415










            answered Jun 18 '15 at 23:07









            theFunkyEngineertheFunkyEngineer

            1,74111724




            1,74111724








            • 5





              Try setting the value based on the output of a shell command.

              – November Yankee
              Jun 18 '15 at 23:11






            • 1





              @NoelYap Works too, as long as in the end the line evaluates to key=value. In my use case I generate the line completely: cat app/build.gradle | grep "def majorVersion" | python -c 'import sys,re,os; print("VERSION_NUMBER="+re.findall(r"[d+.]+", sys.stdin.read())[0]+os.environ["BUILD_NUMBER"])'

              – theFunkyEngineer
              Jun 19 '15 at 6:52













            • @theFunkyEngineer what version of EnvInject are you using? With 1.91.3, a command like yours is interpreted as "cat=app...". Would be great if this feature was supported, but I'm getting the sense that this may have worked for you by accident.

              – killthrush
              Jul 23 '15 at 20:50






            • 1





              attempting to assign a value to the output of a shell command is not working for me either: BUILD_DATE=date "+%Y-%m-%d-%H_%M_%S" and BUILD_DATE=$(date "+%Y-%m-%d-%H_%M_%S") and BUILD_DATE=`date "+%Y-%m-%d-%H_%M_%S"` did not work for me

              – scottyseus
              Dec 11 '15 at 14:02








            • 1





              @scottyseus I ended up using this wiki.jenkins-ci.org/display/JENKINS/Environment+Script+Plugin worked like a charm. stackoverflow.com/a/38286383/1240268

              – Andy Hayden
              Feb 24 '17 at 17:31
















            • 5





              Try setting the value based on the output of a shell command.

              – November Yankee
              Jun 18 '15 at 23:11






            • 1





              @NoelYap Works too, as long as in the end the line evaluates to key=value. In my use case I generate the line completely: cat app/build.gradle | grep "def majorVersion" | python -c 'import sys,re,os; print("VERSION_NUMBER="+re.findall(r"[d+.]+", sys.stdin.read())[0]+os.environ["BUILD_NUMBER"])'

              – theFunkyEngineer
              Jun 19 '15 at 6:52













            • @theFunkyEngineer what version of EnvInject are you using? With 1.91.3, a command like yours is interpreted as "cat=app...". Would be great if this feature was supported, but I'm getting the sense that this may have worked for you by accident.

              – killthrush
              Jul 23 '15 at 20:50






            • 1





              attempting to assign a value to the output of a shell command is not working for me either: BUILD_DATE=date "+%Y-%m-%d-%H_%M_%S" and BUILD_DATE=$(date "+%Y-%m-%d-%H_%M_%S") and BUILD_DATE=`date "+%Y-%m-%d-%H_%M_%S"` did not work for me

              – scottyseus
              Dec 11 '15 at 14:02








            • 1





              @scottyseus I ended up using this wiki.jenkins-ci.org/display/JENKINS/Environment+Script+Plugin worked like a charm. stackoverflow.com/a/38286383/1240268

              – Andy Hayden
              Feb 24 '17 at 17:31










            5




            5





            Try setting the value based on the output of a shell command.

            – November Yankee
            Jun 18 '15 at 23:11





            Try setting the value based on the output of a shell command.

            – November Yankee
            Jun 18 '15 at 23:11




            1




            1





            @NoelYap Works too, as long as in the end the line evaluates to key=value. In my use case I generate the line completely: cat app/build.gradle | grep "def majorVersion" | python -c 'import sys,re,os; print("VERSION_NUMBER="+re.findall(r"[d+.]+", sys.stdin.read())[0]+os.environ["BUILD_NUMBER"])'

            – theFunkyEngineer
            Jun 19 '15 at 6:52







            @NoelYap Works too, as long as in the end the line evaluates to key=value. In my use case I generate the line completely: cat app/build.gradle | grep "def majorVersion" | python -c 'import sys,re,os; print("VERSION_NUMBER="+re.findall(r"[d+.]+", sys.stdin.read())[0]+os.environ["BUILD_NUMBER"])'

            – theFunkyEngineer
            Jun 19 '15 at 6:52















            @theFunkyEngineer what version of EnvInject are you using? With 1.91.3, a command like yours is interpreted as "cat=app...". Would be great if this feature was supported, but I'm getting the sense that this may have worked for you by accident.

            – killthrush
            Jul 23 '15 at 20:50





            @theFunkyEngineer what version of EnvInject are you using? With 1.91.3, a command like yours is interpreted as "cat=app...". Would be great if this feature was supported, but I'm getting the sense that this may have worked for you by accident.

            – killthrush
            Jul 23 '15 at 20:50




            1




            1





            attempting to assign a value to the output of a shell command is not working for me either: BUILD_DATE=date "+%Y-%m-%d-%H_%M_%S" and BUILD_DATE=$(date "+%Y-%m-%d-%H_%M_%S") and BUILD_DATE=`date "+%Y-%m-%d-%H_%M_%S"` did not work for me

            – scottyseus
            Dec 11 '15 at 14:02







            attempting to assign a value to the output of a shell command is not working for me either: BUILD_DATE=date "+%Y-%m-%d-%H_%M_%S" and BUILD_DATE=$(date "+%Y-%m-%d-%H_%M_%S") and BUILD_DATE=`date "+%Y-%m-%d-%H_%M_%S"` did not work for me

            – scottyseus
            Dec 11 '15 at 14:02






            1




            1





            @scottyseus I ended up using this wiki.jenkins-ci.org/display/JENKINS/Environment+Script+Plugin worked like a charm. stackoverflow.com/a/38286383/1240268

            – Andy Hayden
            Feb 24 '17 at 17:31







            @scottyseus I ended up using this wiki.jenkins-ci.org/display/JENKINS/Environment+Script+Plugin worked like a charm. stackoverflow.com/a/38286383/1240268

            – Andy Hayden
            Feb 24 '17 at 17:31













            43














            In my case, I needed to add the JMETER_HOME environment variable to be available via my Ant build scripts across all projects on my Jenkins server (Linux), in a way that would not interfere with my local build environment (Windows and Mac) in the build.xml script. Setting the environment variable via Manage Jenkins - Configure System - Global properties was the easiest and least intrusive way to accomplish this. No plug-ins are necessary.



            Manage Jenkins Global Properties





            The environment variable is then available in Ant via:



            <property environment="env" />
            <property name="jmeter.home" value="${env.JMETER_HOME}" />


            This can be verified to works by adding:



            <echo message="JMeter Home: ${jmeter.home}"/>


            Which produces:




            JMeter Home: ~/.jmeter







            share|improve this answer
























            • That is a global property. It will effect ALL jobs on Jenkins. Supposed I just want this property for one job?

              – IgorGanapolsky
              Nov 17 '16 at 21:36











            • I've added to Manage Jenkins - Configure System - Global properties, the following: git /path/to/my/git and PATH+git /path/to/my/git. However, if I am trying to access git from the a Jenkins pipeline script, I get: /bin/sh: git: command not found.

              – octavian
              Mar 6 '17 at 15:46






            • 1





              I just needed to set up JAVA_HOME environment variable and this answer was the one that helped me.

              – Sandoval0992
              Jan 11 at 10:24
















            43














            In my case, I needed to add the JMETER_HOME environment variable to be available via my Ant build scripts across all projects on my Jenkins server (Linux), in a way that would not interfere with my local build environment (Windows and Mac) in the build.xml script. Setting the environment variable via Manage Jenkins - Configure System - Global properties was the easiest and least intrusive way to accomplish this. No plug-ins are necessary.



            Manage Jenkins Global Properties





            The environment variable is then available in Ant via:



            <property environment="env" />
            <property name="jmeter.home" value="${env.JMETER_HOME}" />


            This can be verified to works by adding:



            <echo message="JMeter Home: ${jmeter.home}"/>


            Which produces:




            JMeter Home: ~/.jmeter







            share|improve this answer
























            • That is a global property. It will effect ALL jobs on Jenkins. Supposed I just want this property for one job?

              – IgorGanapolsky
              Nov 17 '16 at 21:36











            • I've added to Manage Jenkins - Configure System - Global properties, the following: git /path/to/my/git and PATH+git /path/to/my/git. However, if I am trying to access git from the a Jenkins pipeline script, I get: /bin/sh: git: command not found.

              – octavian
              Mar 6 '17 at 15:46






            • 1





              I just needed to set up JAVA_HOME environment variable and this answer was the one that helped me.

              – Sandoval0992
              Jan 11 at 10:24














            43












            43








            43







            In my case, I needed to add the JMETER_HOME environment variable to be available via my Ant build scripts across all projects on my Jenkins server (Linux), in a way that would not interfere with my local build environment (Windows and Mac) in the build.xml script. Setting the environment variable via Manage Jenkins - Configure System - Global properties was the easiest and least intrusive way to accomplish this. No plug-ins are necessary.



            Manage Jenkins Global Properties





            The environment variable is then available in Ant via:



            <property environment="env" />
            <property name="jmeter.home" value="${env.JMETER_HOME}" />


            This can be verified to works by adding:



            <echo message="JMeter Home: ${jmeter.home}"/>


            Which produces:




            JMeter Home: ~/.jmeter







            share|improve this answer













            In my case, I needed to add the JMETER_HOME environment variable to be available via my Ant build scripts across all projects on my Jenkins server (Linux), in a way that would not interfere with my local build environment (Windows and Mac) in the build.xml script. Setting the environment variable via Manage Jenkins - Configure System - Global properties was the easiest and least intrusive way to accomplish this. No plug-ins are necessary.



            Manage Jenkins Global Properties





            The environment variable is then available in Ant via:



            <property environment="env" />
            <property name="jmeter.home" value="${env.JMETER_HOME}" />


            This can be verified to works by adding:



            <echo message="JMeter Home: ${jmeter.home}"/>


            Which produces:




            JMeter Home: ~/.jmeter








            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Aug 17 '16 at 18:52









            vallismortisvallismortis

            3,674104366




            3,674104366













            • That is a global property. It will effect ALL jobs on Jenkins. Supposed I just want this property for one job?

              – IgorGanapolsky
              Nov 17 '16 at 21:36











            • I've added to Manage Jenkins - Configure System - Global properties, the following: git /path/to/my/git and PATH+git /path/to/my/git. However, if I am trying to access git from the a Jenkins pipeline script, I get: /bin/sh: git: command not found.

              – octavian
              Mar 6 '17 at 15:46






            • 1





              I just needed to set up JAVA_HOME environment variable and this answer was the one that helped me.

              – Sandoval0992
              Jan 11 at 10:24



















            • That is a global property. It will effect ALL jobs on Jenkins. Supposed I just want this property for one job?

              – IgorGanapolsky
              Nov 17 '16 at 21:36











            • I've added to Manage Jenkins - Configure System - Global properties, the following: git /path/to/my/git and PATH+git /path/to/my/git. However, if I am trying to access git from the a Jenkins pipeline script, I get: /bin/sh: git: command not found.

              – octavian
              Mar 6 '17 at 15:46






            • 1





              I just needed to set up JAVA_HOME environment variable and this answer was the one that helped me.

              – Sandoval0992
              Jan 11 at 10:24

















            That is a global property. It will effect ALL jobs on Jenkins. Supposed I just want this property for one job?

            – IgorGanapolsky
            Nov 17 '16 at 21:36





            That is a global property. It will effect ALL jobs on Jenkins. Supposed I just want this property for one job?

            – IgorGanapolsky
            Nov 17 '16 at 21:36













            I've added to Manage Jenkins - Configure System - Global properties, the following: git /path/to/my/git and PATH+git /path/to/my/git. However, if I am trying to access git from the a Jenkins pipeline script, I get: /bin/sh: git: command not found.

            – octavian
            Mar 6 '17 at 15:46





            I've added to Manage Jenkins - Configure System - Global properties, the following: git /path/to/my/git and PATH+git /path/to/my/git. However, if I am trying to access git from the a Jenkins pipeline script, I get: /bin/sh: git: command not found.

            – octavian
            Mar 6 '17 at 15:46




            1




            1





            I just needed to set up JAVA_HOME environment variable and this answer was the one that helped me.

            – Sandoval0992
            Jan 11 at 10:24





            I just needed to set up JAVA_HOME environment variable and this answer was the one that helped me.

            – Sandoval0992
            Jan 11 at 10:24











            12














            EnvInject Plugin aka (Environment Injector Plugin) gives you several options to set environment variables from Jenkins configuration.



            By selecting Inject environment variables to the build process you will get:




            • Properties File Path

            • Properties Content

            • Script File Path


            • Script Content


            • and finally Evaluated Groovy script.





            Evaluated Groovy script gives you possibility to set environment variable based on result of executed command:




            • with execute method:


                return [HOSTNAME_SHELL: 'hostname'.execute().text, 
            DATE_SHELL: 'date'.execute().text,
            ECHO_SHELL: 'echo hello world!'.execute().text
            ]



            • or with explicit Groovy code:


                return [HOSTNAME_GROOVY: java.net.InetAddress.getLocalHost().getHostName(),
            DATE_GROOVY: new Date()
            ]


            (More details about each method could be found in build-in help (?))





            Unfortunately you can't do the same from Script Content as it states:




            Execute a script file aimed at setting an environment such as creating
            folders, copying files, and so on. Give the script file content. You
            can use the above properties variables. However, adding or overriding
            environment variables in the script doesn't have any impacts in the
            build job
            .







            share|improve this answer






























              12














              EnvInject Plugin aka (Environment Injector Plugin) gives you several options to set environment variables from Jenkins configuration.



              By selecting Inject environment variables to the build process you will get:




              • Properties File Path

              • Properties Content

              • Script File Path


              • Script Content


              • and finally Evaluated Groovy script.





              Evaluated Groovy script gives you possibility to set environment variable based on result of executed command:




              • with execute method:


                  return [HOSTNAME_SHELL: 'hostname'.execute().text, 
              DATE_SHELL: 'date'.execute().text,
              ECHO_SHELL: 'echo hello world!'.execute().text
              ]



              • or with explicit Groovy code:


                  return [HOSTNAME_GROOVY: java.net.InetAddress.getLocalHost().getHostName(),
              DATE_GROOVY: new Date()
              ]


              (More details about each method could be found in build-in help (?))





              Unfortunately you can't do the same from Script Content as it states:




              Execute a script file aimed at setting an environment such as creating
              folders, copying files, and so on. Give the script file content. You
              can use the above properties variables. However, adding or overriding
              environment variables in the script doesn't have any impacts in the
              build job
              .







              share|improve this answer




























                12












                12








                12







                EnvInject Plugin aka (Environment Injector Plugin) gives you several options to set environment variables from Jenkins configuration.



                By selecting Inject environment variables to the build process you will get:




                • Properties File Path

                • Properties Content

                • Script File Path


                • Script Content


                • and finally Evaluated Groovy script.





                Evaluated Groovy script gives you possibility to set environment variable based on result of executed command:




                • with execute method:


                    return [HOSTNAME_SHELL: 'hostname'.execute().text, 
                DATE_SHELL: 'date'.execute().text,
                ECHO_SHELL: 'echo hello world!'.execute().text
                ]



                • or with explicit Groovy code:


                    return [HOSTNAME_GROOVY: java.net.InetAddress.getLocalHost().getHostName(),
                DATE_GROOVY: new Date()
                ]


                (More details about each method could be found in build-in help (?))





                Unfortunately you can't do the same from Script Content as it states:




                Execute a script file aimed at setting an environment such as creating
                folders, copying files, and so on. Give the script file content. You
                can use the above properties variables. However, adding or overriding
                environment variables in the script doesn't have any impacts in the
                build job
                .







                share|improve this answer















                EnvInject Plugin aka (Environment Injector Plugin) gives you several options to set environment variables from Jenkins configuration.



                By selecting Inject environment variables to the build process you will get:




                • Properties File Path

                • Properties Content

                • Script File Path


                • Script Content


                • and finally Evaluated Groovy script.





                Evaluated Groovy script gives you possibility to set environment variable based on result of executed command:




                • with execute method:


                    return [HOSTNAME_SHELL: 'hostname'.execute().text, 
                DATE_SHELL: 'date'.execute().text,
                ECHO_SHELL: 'echo hello world!'.execute().text
                ]



                • or with explicit Groovy code:


                    return [HOSTNAME_GROOVY: java.net.InetAddress.getLocalHost().getHostName(),
                DATE_GROOVY: new Date()
                ]


                (More details about each method could be found in build-in help (?))





                Unfortunately you can't do the same from Script Content as it states:




                Execute a script file aimed at setting an environment such as creating
                folders, copying files, and so on. Give the script file content. You
                can use the above properties variables. However, adding or overriding
                environment variables in the script doesn't have any impacts in the
                build job
                .








                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited May 14 '16 at 7:22

























                answered May 14 '16 at 6:59









                luka5zluka5z

                3,85351642




                3,85351642























                    11














                    You can try something like this



                    stages {
                    stage('Build') {
                    environment {
                    AOEU= sh (returnStdout: true, script: 'echo aoeu').trim()
                    }
                    steps {
                    sh 'env'
                    sh 'echo $AOEU'
                    }
                    }
                    }





                    share|improve this answer
























                    • Does this really work?

                      – rjurney
                      Nov 16 '17 at 20:08











                    • This doesn't parse.

                      – rjurney
                      Nov 16 '17 at 20:12






                    • 1





                      This formatt is for the Jenkinsfile pipeline project. What job type are you using this snippet in?

                      – JSixface
                      Jan 15 '18 at 16:28











                    • This works perfectly in a Jenkinsfile for a pipeline (not job)! That's awesome, thanks for it!

                      – mathielo
                      Sep 4 '18 at 9:50
















                    11














                    You can try something like this



                    stages {
                    stage('Build') {
                    environment {
                    AOEU= sh (returnStdout: true, script: 'echo aoeu').trim()
                    }
                    steps {
                    sh 'env'
                    sh 'echo $AOEU'
                    }
                    }
                    }





                    share|improve this answer
























                    • Does this really work?

                      – rjurney
                      Nov 16 '17 at 20:08











                    • This doesn't parse.

                      – rjurney
                      Nov 16 '17 at 20:12






                    • 1





                      This formatt is for the Jenkinsfile pipeline project. What job type are you using this snippet in?

                      – JSixface
                      Jan 15 '18 at 16:28











                    • This works perfectly in a Jenkinsfile for a pipeline (not job)! That's awesome, thanks for it!

                      – mathielo
                      Sep 4 '18 at 9:50














                    11












                    11








                    11







                    You can try something like this



                    stages {
                    stage('Build') {
                    environment {
                    AOEU= sh (returnStdout: true, script: 'echo aoeu').trim()
                    }
                    steps {
                    sh 'env'
                    sh 'echo $AOEU'
                    }
                    }
                    }





                    share|improve this answer













                    You can try something like this



                    stages {
                    stage('Build') {
                    environment {
                    AOEU= sh (returnStdout: true, script: 'echo aoeu').trim()
                    }
                    steps {
                    sh 'env'
                    sh 'echo $AOEU'
                    }
                    }
                    }






                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered Jul 24 '17 at 20:37









                    JSixfaceJSixface

                    187210




                    187210













                    • Does this really work?

                      – rjurney
                      Nov 16 '17 at 20:08











                    • This doesn't parse.

                      – rjurney
                      Nov 16 '17 at 20:12






                    • 1





                      This formatt is for the Jenkinsfile pipeline project. What job type are you using this snippet in?

                      – JSixface
                      Jan 15 '18 at 16:28











                    • This works perfectly in a Jenkinsfile for a pipeline (not job)! That's awesome, thanks for it!

                      – mathielo
                      Sep 4 '18 at 9:50



















                    • Does this really work?

                      – rjurney
                      Nov 16 '17 at 20:08











                    • This doesn't parse.

                      – rjurney
                      Nov 16 '17 at 20:12






                    • 1





                      This formatt is for the Jenkinsfile pipeline project. What job type are you using this snippet in?

                      – JSixface
                      Jan 15 '18 at 16:28











                    • This works perfectly in a Jenkinsfile for a pipeline (not job)! That's awesome, thanks for it!

                      – mathielo
                      Sep 4 '18 at 9:50

















                    Does this really work?

                    – rjurney
                    Nov 16 '17 at 20:08





                    Does this really work?

                    – rjurney
                    Nov 16 '17 at 20:08













                    This doesn't parse.

                    – rjurney
                    Nov 16 '17 at 20:12





                    This doesn't parse.

                    – rjurney
                    Nov 16 '17 at 20:12




                    1




                    1





                    This formatt is for the Jenkinsfile pipeline project. What job type are you using this snippet in?

                    – JSixface
                    Jan 15 '18 at 16:28





                    This formatt is for the Jenkinsfile pipeline project. What job type are you using this snippet in?

                    – JSixface
                    Jan 15 '18 at 16:28













                    This works perfectly in a Jenkinsfile for a pipeline (not job)! That's awesome, thanks for it!

                    – mathielo
                    Sep 4 '18 at 9:50





                    This works perfectly in a Jenkinsfile for a pipeline (not job)! That's awesome, thanks for it!

                    – mathielo
                    Sep 4 '18 at 9:50











                    8














                    There is Build Env Propagator Plugin which lets you add new build environment variables, e.g.



                    Jenkins Build - Propagate build environment variables




                    Any successive Propagate build environment variables step will override previously defined environment variable values.







                    share|improve this answer


























                    • Thank you! Build Env Propagator Plugin worked when I tried it, and it's great to have the ability to set environment variables during the Build steps!

                      – twasbrillig
                      Dec 16 '16 at 18:44
















                    8














                    There is Build Env Propagator Plugin which lets you add new build environment variables, e.g.



                    Jenkins Build - Propagate build environment variables




                    Any successive Propagate build environment variables step will override previously defined environment variable values.







                    share|improve this answer


























                    • Thank you! Build Env Propagator Plugin worked when I tried it, and it's great to have the ability to set environment variables during the Build steps!

                      – twasbrillig
                      Dec 16 '16 at 18:44














                    8












                    8








                    8







                    There is Build Env Propagator Plugin which lets you add new build environment variables, e.g.



                    Jenkins Build - Propagate build environment variables




                    Any successive Propagate build environment variables step will override previously defined environment variable values.







                    share|improve this answer















                    There is Build Env Propagator Plugin which lets you add new build environment variables, e.g.



                    Jenkins Build - Propagate build environment variables




                    Any successive Propagate build environment variables step will override previously defined environment variable values.








                    share|improve this answer














                    share|improve this answer



                    share|improve this answer








                    edited Feb 8 '18 at 1:19

























                    answered Jul 9 '16 at 21:09









                    kenorbkenorb

                    70.1k30408415




                    70.1k30408415













                    • Thank you! Build Env Propagator Plugin worked when I tried it, and it's great to have the ability to set environment variables during the Build steps!

                      – twasbrillig
                      Dec 16 '16 at 18:44



















                    • Thank you! Build Env Propagator Plugin worked when I tried it, and it's great to have the ability to set environment variables during the Build steps!

                      – twasbrillig
                      Dec 16 '16 at 18:44

















                    Thank you! Build Env Propagator Plugin worked when I tried it, and it's great to have the ability to set environment variables during the Build steps!

                    – twasbrillig
                    Dec 16 '16 at 18:44





                    Thank you! Build Env Propagator Plugin worked when I tried it, and it's great to have the ability to set environment variables during the Build steps!

                    – twasbrillig
                    Dec 16 '16 at 18:44











                    7














                    You can use Environment Injector Plugin to set environment variables in Jenkins at job and node levels. Below I will show how to set them at job level.




                    1. From the Jenkins web interface, go to Manage Jenkins > Manage Plugins and install the plugin.


                    Environment Injector Plugin




                    1. Go to your job Configure screen

                    2. Find Add build step in Build section and select Inject environment variables

                    3. Set the desired environment variable as VARIABLE_NAME=VALUE pattern. In my case, I changed value of USERPROFILE variable


                    enter image description here



                    If you need to define a new environment variable depending on some conditions (e.g. job parameters) you can refer to this answer.






                    share|improve this answer






























                      7














                      You can use Environment Injector Plugin to set environment variables in Jenkins at job and node levels. Below I will show how to set them at job level.




                      1. From the Jenkins web interface, go to Manage Jenkins > Manage Plugins and install the plugin.


                      Environment Injector Plugin




                      1. Go to your job Configure screen

                      2. Find Add build step in Build section and select Inject environment variables

                      3. Set the desired environment variable as VARIABLE_NAME=VALUE pattern. In my case, I changed value of USERPROFILE variable


                      enter image description here



                      If you need to define a new environment variable depending on some conditions (e.g. job parameters) you can refer to this answer.






                      share|improve this answer




























                        7












                        7








                        7







                        You can use Environment Injector Plugin to set environment variables in Jenkins at job and node levels. Below I will show how to set them at job level.




                        1. From the Jenkins web interface, go to Manage Jenkins > Manage Plugins and install the plugin.


                        Environment Injector Plugin




                        1. Go to your job Configure screen

                        2. Find Add build step in Build section and select Inject environment variables

                        3. Set the desired environment variable as VARIABLE_NAME=VALUE pattern. In my case, I changed value of USERPROFILE variable


                        enter image description here



                        If you need to define a new environment variable depending on some conditions (e.g. job parameters) you can refer to this answer.






                        share|improve this answer















                        You can use Environment Injector Plugin to set environment variables in Jenkins at job and node levels. Below I will show how to set them at job level.




                        1. From the Jenkins web interface, go to Manage Jenkins > Manage Plugins and install the plugin.


                        Environment Injector Plugin




                        1. Go to your job Configure screen

                        2. Find Add build step in Build section and select Inject environment variables

                        3. Set the desired environment variable as VARIABLE_NAME=VALUE pattern. In my case, I changed value of USERPROFILE variable


                        enter image description here



                        If you need to define a new environment variable depending on some conditions (e.g. job parameters) you can refer to this answer.







                        share|improve this answer














                        share|improve this answer



                        share|improve this answer








                        edited Feb 12 at 8:44

























                        answered Nov 21 '17 at 10:32









                        Sa QadaSa Qada

                        3,97113541




                        3,97113541























                            5














                            Normally you can configure Environment variables in Global properties in Configure System.



                            However for dynamic variables with shell substitution, you may want to create a script file in Jenkins HOME dir and execute it during the build. The SSH access is required. For example.




                            1. Log-in as Jenkins: sudo su - jenkins or sudo su - jenkins -s /bin/bash


                            2. Create a shell script, e.g.:



                              echo 'export VM_NAME="$JOB_NAME"' > ~/load_env.sh
                              echo "export AOEU=$(echo aoeu)" >> ~/load_env.sh
                              chmod 750 ~/load_env.sh



                            3. In Jenkins Build (Execute shell), invoke the script and its variables before anything else, e.g.



                              source ~/load_env.sh







                            share|improve this answer


























                            • unfortunately did not work for me. after sudo su - jenkins, still echo $USER gives me root.

                              – prayagupd
                              May 9 '17 at 0:40











                            • @prayagupd You need to simulate a full login, so use su -l parameter to do that, otherwise ask a separate question.

                              – kenorb
                              May 9 '17 at 10:49
















                            5














                            Normally you can configure Environment variables in Global properties in Configure System.



                            However for dynamic variables with shell substitution, you may want to create a script file in Jenkins HOME dir and execute it during the build. The SSH access is required. For example.




                            1. Log-in as Jenkins: sudo su - jenkins or sudo su - jenkins -s /bin/bash


                            2. Create a shell script, e.g.:



                              echo 'export VM_NAME="$JOB_NAME"' > ~/load_env.sh
                              echo "export AOEU=$(echo aoeu)" >> ~/load_env.sh
                              chmod 750 ~/load_env.sh



                            3. In Jenkins Build (Execute shell), invoke the script and its variables before anything else, e.g.



                              source ~/load_env.sh







                            share|improve this answer


























                            • unfortunately did not work for me. after sudo su - jenkins, still echo $USER gives me root.

                              – prayagupd
                              May 9 '17 at 0:40











                            • @prayagupd You need to simulate a full login, so use su -l parameter to do that, otherwise ask a separate question.

                              – kenorb
                              May 9 '17 at 10:49














                            5












                            5








                            5







                            Normally you can configure Environment variables in Global properties in Configure System.



                            However for dynamic variables with shell substitution, you may want to create a script file in Jenkins HOME dir and execute it during the build. The SSH access is required. For example.




                            1. Log-in as Jenkins: sudo su - jenkins or sudo su - jenkins -s /bin/bash


                            2. Create a shell script, e.g.:



                              echo 'export VM_NAME="$JOB_NAME"' > ~/load_env.sh
                              echo "export AOEU=$(echo aoeu)" >> ~/load_env.sh
                              chmod 750 ~/load_env.sh



                            3. In Jenkins Build (Execute shell), invoke the script and its variables before anything else, e.g.



                              source ~/load_env.sh







                            share|improve this answer















                            Normally you can configure Environment variables in Global properties in Configure System.



                            However for dynamic variables with shell substitution, you may want to create a script file in Jenkins HOME dir and execute it during the build. The SSH access is required. For example.




                            1. Log-in as Jenkins: sudo su - jenkins or sudo su - jenkins -s /bin/bash


                            2. Create a shell script, e.g.:



                              echo 'export VM_NAME="$JOB_NAME"' > ~/load_env.sh
                              echo "export AOEU=$(echo aoeu)" >> ~/load_env.sh
                              chmod 750 ~/load_env.sh



                            3. In Jenkins Build (Execute shell), invoke the script and its variables before anything else, e.g.



                              source ~/load_env.sh








                            share|improve this answer














                            share|improve this answer



                            share|improve this answer








                            edited Nov 21 '18 at 11:46

























                            answered Jul 9 '16 at 22:07









                            kenorbkenorb

                            70.1k30408415




                            70.1k30408415













                            • unfortunately did not work for me. after sudo su - jenkins, still echo $USER gives me root.

                              – prayagupd
                              May 9 '17 at 0:40











                            • @prayagupd You need to simulate a full login, so use su -l parameter to do that, otherwise ask a separate question.

                              – kenorb
                              May 9 '17 at 10:49



















                            • unfortunately did not work for me. after sudo su - jenkins, still echo $USER gives me root.

                              – prayagupd
                              May 9 '17 at 0:40











                            • @prayagupd You need to simulate a full login, so use su -l parameter to do that, otherwise ask a separate question.

                              – kenorb
                              May 9 '17 at 10:49

















                            unfortunately did not work for me. after sudo su - jenkins, still echo $USER gives me root.

                            – prayagupd
                            May 9 '17 at 0:40





                            unfortunately did not work for me. after sudo su - jenkins, still echo $USER gives me root.

                            – prayagupd
                            May 9 '17 at 0:40













                            @prayagupd You need to simulate a full login, so use su -l parameter to do that, otherwise ask a separate question.

                            – kenorb
                            May 9 '17 at 10:49





                            @prayagupd You need to simulate a full login, so use su -l parameter to do that, otherwise ask a separate question.

                            – kenorb
                            May 9 '17 at 10:49











                            3














                            Try Environment Script Plugin (GitHub) which is very similar to EnvInject. It allows you to run a script before the build (after SCM checkout) that generates environment variables for it. E.g.



                            Jenkins Build - Regular job - Build Environment



                            and in your script, you can print e.g. FOO=bar to the standard output to set that variable.



                            Example to append to an existing PATH-style variable:



                            echo PATH+unique_identifier=/usr/local/bin


                            So you're free to do whatever you need in the script - either cat a file, or run a script in some other language from your project's source tree, etc.






                            share|improve this answer




























                              3














                              Try Environment Script Plugin (GitHub) which is very similar to EnvInject. It allows you to run a script before the build (after SCM checkout) that generates environment variables for it. E.g.



                              Jenkins Build - Regular job - Build Environment



                              and in your script, you can print e.g. FOO=bar to the standard output to set that variable.



                              Example to append to an existing PATH-style variable:



                              echo PATH+unique_identifier=/usr/local/bin


                              So you're free to do whatever you need in the script - either cat a file, or run a script in some other language from your project's source tree, etc.






                              share|improve this answer


























                                3












                                3








                                3







                                Try Environment Script Plugin (GitHub) which is very similar to EnvInject. It allows you to run a script before the build (after SCM checkout) that generates environment variables for it. E.g.



                                Jenkins Build - Regular job - Build Environment



                                and in your script, you can print e.g. FOO=bar to the standard output to set that variable.



                                Example to append to an existing PATH-style variable:



                                echo PATH+unique_identifier=/usr/local/bin


                                So you're free to do whatever you need in the script - either cat a file, or run a script in some other language from your project's source tree, etc.






                                share|improve this answer













                                Try Environment Script Plugin (GitHub) which is very similar to EnvInject. It allows you to run a script before the build (after SCM checkout) that generates environment variables for it. E.g.



                                Jenkins Build - Regular job - Build Environment



                                and in your script, you can print e.g. FOO=bar to the standard output to set that variable.



                                Example to append to an existing PATH-style variable:



                                echo PATH+unique_identifier=/usr/local/bin


                                So you're free to do whatever you need in the script - either cat a file, or run a script in some other language from your project's source tree, etc.







                                share|improve this answer












                                share|improve this answer



                                share|improve this answer










                                answered Feb 8 '18 at 1:18









                                kenorbkenorb

                                70.1k30408415




                                70.1k30408415























                                    0














                                    For some reason sudo su - jenkins does not log me to jenkins user, I ended up using different approach.



                                    I was successful setting the global env variables using using jenkins config.xml at /var/lib/jenkins/config.xml (installed in Linux/ RHEL) - without using external plugins.



                                    I simply had to stop jenkins add then add globalNodeProperties, and then restart.



                                    Example, I'm defining variables APPLICATION_ENVIRONMENT and SPRING_PROFILES_ACTIVE to continious_integration below,



                                    <?xml version='1.0' encoding='UTF-8'?>
                                    <hudson>

                                    <globalNodeProperties>
                                    <hudson.slaves.EnvironmentVariablesNodeProperty>
                                    <envVars serialization="custom">
                                    <unserializable-parents/>
                                    <tree-map>
                                    <default>
                                    <comparator class="hudson.util.CaseInsensitiveComparator"/>
                                    </default>
                                    <int>2</int>
                                    <string>APPLICATION_ENVIRONMENT</string>
                                    <string>continious_integration</string>
                                    <string>SPRING_PROFILES_ACTIVE</string>
                                    <string>continious_integration</string>
                                    </tree-map>
                                    </envVars>
                                    </hudson.slaves.EnvironmentVariablesNodeProperty>
                                    </globalNodeProperties>
                                    </hudson>





                                    share|improve this answer






























                                      0














                                      For some reason sudo su - jenkins does not log me to jenkins user, I ended up using different approach.



                                      I was successful setting the global env variables using using jenkins config.xml at /var/lib/jenkins/config.xml (installed in Linux/ RHEL) - without using external plugins.



                                      I simply had to stop jenkins add then add globalNodeProperties, and then restart.



                                      Example, I'm defining variables APPLICATION_ENVIRONMENT and SPRING_PROFILES_ACTIVE to continious_integration below,



                                      <?xml version='1.0' encoding='UTF-8'?>
                                      <hudson>

                                      <globalNodeProperties>
                                      <hudson.slaves.EnvironmentVariablesNodeProperty>
                                      <envVars serialization="custom">
                                      <unserializable-parents/>
                                      <tree-map>
                                      <default>
                                      <comparator class="hudson.util.CaseInsensitiveComparator"/>
                                      </default>
                                      <int>2</int>
                                      <string>APPLICATION_ENVIRONMENT</string>
                                      <string>continious_integration</string>
                                      <string>SPRING_PROFILES_ACTIVE</string>
                                      <string>continious_integration</string>
                                      </tree-map>
                                      </envVars>
                                      </hudson.slaves.EnvironmentVariablesNodeProperty>
                                      </globalNodeProperties>
                                      </hudson>





                                      share|improve this answer




























                                        0












                                        0








                                        0







                                        For some reason sudo su - jenkins does not log me to jenkins user, I ended up using different approach.



                                        I was successful setting the global env variables using using jenkins config.xml at /var/lib/jenkins/config.xml (installed in Linux/ RHEL) - without using external plugins.



                                        I simply had to stop jenkins add then add globalNodeProperties, and then restart.



                                        Example, I'm defining variables APPLICATION_ENVIRONMENT and SPRING_PROFILES_ACTIVE to continious_integration below,



                                        <?xml version='1.0' encoding='UTF-8'?>
                                        <hudson>

                                        <globalNodeProperties>
                                        <hudson.slaves.EnvironmentVariablesNodeProperty>
                                        <envVars serialization="custom">
                                        <unserializable-parents/>
                                        <tree-map>
                                        <default>
                                        <comparator class="hudson.util.CaseInsensitiveComparator"/>
                                        </default>
                                        <int>2</int>
                                        <string>APPLICATION_ENVIRONMENT</string>
                                        <string>continious_integration</string>
                                        <string>SPRING_PROFILES_ACTIVE</string>
                                        <string>continious_integration</string>
                                        </tree-map>
                                        </envVars>
                                        </hudson.slaves.EnvironmentVariablesNodeProperty>
                                        </globalNodeProperties>
                                        </hudson>





                                        share|improve this answer















                                        For some reason sudo su - jenkins does not log me to jenkins user, I ended up using different approach.



                                        I was successful setting the global env variables using using jenkins config.xml at /var/lib/jenkins/config.xml (installed in Linux/ RHEL) - without using external plugins.



                                        I simply had to stop jenkins add then add globalNodeProperties, and then restart.



                                        Example, I'm defining variables APPLICATION_ENVIRONMENT and SPRING_PROFILES_ACTIVE to continious_integration below,



                                        <?xml version='1.0' encoding='UTF-8'?>
                                        <hudson>

                                        <globalNodeProperties>
                                        <hudson.slaves.EnvironmentVariablesNodeProperty>
                                        <envVars serialization="custom">
                                        <unserializable-parents/>
                                        <tree-map>
                                        <default>
                                        <comparator class="hudson.util.CaseInsensitiveComparator"/>
                                        </default>
                                        <int>2</int>
                                        <string>APPLICATION_ENVIRONMENT</string>
                                        <string>continious_integration</string>
                                        <string>SPRING_PROFILES_ACTIVE</string>
                                        <string>continious_integration</string>
                                        </tree-map>
                                        </envVars>
                                        </hudson.slaves.EnvironmentVariablesNodeProperty>
                                        </globalNodeProperties>
                                        </hudson>






                                        share|improve this answer














                                        share|improve this answer



                                        share|improve this answer








                                        edited May 23 '17 at 12:18









                                        Community

                                        11




                                        11










                                        answered May 9 '17 at 2:22









                                        prayagupdprayagupd

                                        20.2k892142




                                        20.2k892142























                                            0














                                            In my case, I had configured environment variables using the following option and it worked-



                                            Manage Jenkins -> Configure System -> Global Properties -> Environment Variables -> Add





                                            share|improve this answer
























                                            • Thanks @nik it is helpful! :)

                                              – Mayur
                                              Mar 6 at 9:39
















                                            0














                                            In my case, I had configured environment variables using the following option and it worked-



                                            Manage Jenkins -> Configure System -> Global Properties -> Environment Variables -> Add





                                            share|improve this answer
























                                            • Thanks @nik it is helpful! :)

                                              – Mayur
                                              Mar 6 at 9:39














                                            0












                                            0








                                            0







                                            In my case, I had configured environment variables using the following option and it worked-



                                            Manage Jenkins -> Configure System -> Global Properties -> Environment Variables -> Add





                                            share|improve this answer













                                            In my case, I had configured environment variables using the following option and it worked-



                                            Manage Jenkins -> Configure System -> Global Properties -> Environment Variables -> Add






                                            share|improve this answer












                                            share|improve this answer



                                            share|improve this answer










                                            answered Feb 21 at 13:04









                                            niknik

                                            415619




                                            415619













                                            • Thanks @nik it is helpful! :)

                                              – Mayur
                                              Mar 6 at 9:39



















                                            • Thanks @nik it is helpful! :)

                                              – Mayur
                                              Mar 6 at 9:39

















                                            Thanks @nik it is helpful! :)

                                            – Mayur
                                            Mar 6 at 9:39





                                            Thanks @nik it is helpful! :)

                                            – Mayur
                                            Mar 6 at 9:39











                                            -1














                                            We use groovy job file:



                                            description('')
                                            steps {
                                            environmentVariables {
                                            envs(PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: true)
                                            }
                                            }





                                            share|improve this answer




























                                              -1














                                              We use groovy job file:



                                              description('')
                                              steps {
                                              environmentVariables {
                                              envs(PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: true)
                                              }
                                              }





                                              share|improve this answer


























                                                -1












                                                -1








                                                -1







                                                We use groovy job file:



                                                description('')
                                                steps {
                                                environmentVariables {
                                                envs(PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: true)
                                                }
                                                }





                                                share|improve this answer













                                                We use groovy job file:



                                                description('')
                                                steps {
                                                environmentVariables {
                                                envs(PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: true)
                                                }
                                                }






                                                share|improve this answer












                                                share|improve this answer



                                                share|improve this answer










                                                answered Dec 7 '18 at 18:50









                                                techguy2000techguy2000

                                                82011022




                                                82011022






























                                                    draft saved

                                                    draft discarded




















































                                                    Thanks for contributing an answer to Stack Overflow!


                                                    • Please be sure to answer the question. Provide details and share your research!

                                                    But avoid



                                                    • Asking for help, clarification, or responding to other answers.

                                                    • Making statements based on opinion; back them up with references or personal experience.


                                                    To learn more, see our tips on writing great answers.




                                                    draft saved


                                                    draft discarded














                                                    StackExchange.ready(
                                                    function () {
                                                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f10625259%2fhow-to-set-environment-variables-in-jenkins%23new-answer', 'question_page');
                                                    }
                                                    );

                                                    Post as a guest















                                                    Required, but never shown





















































                                                    Required, but never shown














                                                    Required, but never shown












                                                    Required, but never shown







                                                    Required, but never shown

































                                                    Required, but never shown














                                                    Required, but never shown












                                                    Required, but never shown







                                                    Required, but never shown







                                                    這個網誌中的熱門文章

                                                    Tangent Lines Diagram Along Smooth Curve

                                                    Yusuf al-Mu'taman ibn Hud

                                                    Zucchini