Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Environment variables not updating during deployment

What we're doing:

We're doing an automated deployment using a tool called Nolio. One of the steps we need to do is to set a few environment variables for applications that are being deployed - for example, JAVA_HOME pointing to our preferred java install directory.

We're using the SET command to permanently set the environment variables - and in most ways, it works great. If I right click on my computer and go into environment variables, they all appear perfectly.

The problem:

Unfortunately, later in the deployment, some command line commands are executed that rely on the environment variables, and the environment variables appear to not be set. Using SET without parameters verifies this by displaying all currently available variables.

Now, if I restart the computer, the command line commands work fine. So, the issue is that while the variables are permanently set and do appear in the GUI, they are not propagated to the command prompts until I reboot.

Another interesting tidbit: If I put the commands in a BAT file and double click it, it runs fine, but if I execute it in the command prompt the variables don't resolve prior to a reboot.

Does anyone know a way around this?

like image 728
John Humphreys Avatar asked Jan 17 '23 03:01

John Humphreys


2 Answers

First, what version of Nolio do you use?

The Environment variables to which you set value, in the context of one Nolio action, stay in the scope of this action. (It's like opening two different shells on every action)

The best practice for this case would be using the environment variables arrays inputs in the Nolio 'Run Command Line' action. You should write two arrays of parallel Env variable names and values, and give them as input to the 'Run Command Line' action.

like image 151
Ido.Co Avatar answered Jan 23 '23 22:01

Ido.Co


It appears your variables are not in scope for the command prompt. At what point in your deployment process are you using the SET command? Interesting that the GUI recognizes the values, but the command prompt doesn't until you've restarted.

Also, I'm not clear as to why using a .bat file is undesired. I can come up with my own reasons, but what are yours?

EDIT

I've found this article that shows a step that you didn't mention. Have you tried:

rem Set the JAVA_HOME environment variable and insert it into the system path.
rem This will make the javac and java commands reachable from the command line.
set JAVA_HOME="C:\Program Files\Java\jdk1.5.0_14"
set PATH=%JAVA_HOME%\bin;%PATH% 
like image 23
Nick DeVore Avatar answered Jan 23 '23 22:01

Nick DeVore