Class EnvVars
- java.lang.Object
-
- java.util.AbstractMap<K,V>
-
- java.util.TreeMap<String,String>
-
- hudson.EnvVars
-
- All Implemented Interfaces:
Serializable
,Cloneable
,Map<String,String>
,NavigableMap<String,String>
,SortedMap<String,String>
public class EnvVars extends TreeMap<String,String>
Environment variables.While all the platforms I tested (Linux 2.6, Solaris, and Windows XP) have the case sensitive environment variable table, Windows batch script handles environment variable in the case preserving but case insensitive way (that is, cmd.exe can get both FOO and foo as environment variables when it's launched, and the "set" command will display it accordingly, but "echo %foo%" results in echoing the value of "FOO", not "foo" — this is presumably caused by the behavior of the underlying Win32 API
GetEnvironmentVariable
acting in case insensitive way.) Windows users are also used to write environment variable case-insensitively (like %Path% vs %PATH%), and you can see many documents on the web that claims Windows environment variables are case insensitive.So for a consistent cross platform behavior, it creates the least confusion to make the table case insensitive but case preserving.
In Jenkins, often we need to build up "environment variable overrides" on the controller, then to execute the process on agents. This causes a problem when working with variables like
PATH
. So to make this work, we introduce a special conventionPATH+FOO
— all entries that starts withPATH+
are merged and prepended to the inheritedPATH
variable, on the process where a new process is executed.- Author:
- Kohsuke Kawaguchi
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class java.util.AbstractMap
AbstractMap.SimpleEntry<K extends Object,V extends Object>, AbstractMap.SimpleImmutableEntry<K extends Object,V extends Object>
-
-
Field Summary
Fields Modifier and Type Field Description static Map<String,String>
masterEnvVars
Environmental variables that we've inherited.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addLine(String line)
Takes a string that looks like "a=b" and adds that to this map.static EnvVars
createCookie()
Creates a magic cookie that can be used as the model environment variable when we later kill the processes.String
expand(String s)
Expands the variables in the given string by using environment variables represented in 'this'.String
get(String key, String defaultValue)
Convenience messagePlatform
getPlatform()
Gets the platform for which these env vars targeted.static EnvVars
getRemote(hudson.remoting.VirtualChannel channel)
Obtains the environment variables of a remote peer.void
override(String key, String value)
Overrides the current entry by the given entry.EnvVars
overrideAll(Map<String,String> all)
Overrides all values in the map by the given map.EnvVars
overrideExpandingAll(Map<String,String> all)
Overrides all values in the map by the given map.String
put(String key, String value)
void
putAllNonNull(Map<String,String> map)
Add entire map but filter null values out.void
putIfNotNull(String key, String value)
Add a key/value but only if the value is not-null.static void
resolve(Map<String,String> env)
Resolves environment variables against each other.void
setPlatform(Platform platform)
Sets the platform for which these env vars target.-
Methods inherited from class java.util.TreeMap
ceilingEntry, ceilingKey, clear, clone, comparator, containsKey, containsValue, descendingKeySet, descendingMap, entrySet, firstEntry, firstKey, floorEntry, floorKey, forEach, get, headMap, headMap, higherEntry, higherKey, keySet, lastEntry, lastKey, lowerEntry, lowerKey, navigableKeySet, pollFirstEntry, pollLastEntry, putAll, remove, replace, replace, replaceAll, size, subMap, subMap, tailMap, tailMap, values
-
Methods inherited from class java.util.AbstractMap
equals, hashCode, isEmpty, toString
-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, equals, getOrDefault, hashCode, isEmpty, merge, putIfAbsent, remove
-
-
-
-
Field Detail
-
masterEnvVars
public static final Map<String,String> masterEnvVars
Environmental variables that we've inherited.Despite what the name might imply, this is the environment variable of the current JVM process. And therefore, it is the Jenkins controller's environment variables only when you access this from the controller.
If you access this field from agents, then this is the environment variable of the agent.
-
-
Method Detail
-
getPlatform
@CheckForNull public Platform getPlatform()
Gets the platform for which these env vars targeted.- Returns:
- The platform.
- Since:
- 2.144
-
setPlatform
public void setPlatform(@NonNull Platform platform)
Sets the platform for which these env vars target.- Parameters:
platform
- the platform to set.- Since:
- 2.144
-
override
public void override(String key, String value)
Overrides the current entry by the given entry.Handles
PATH+XYZ
notation.
-
overrideAll
public EnvVars overrideAll(Map<String,String> all)
Overrides all values in the map by the given map. Seeoverride(String, String)
.- Returns:
- this
-
overrideExpandingAll
public EnvVars overrideExpandingAll(@NonNull Map<String,String> all)
Overrides all values in the map by the given map. Expressions in values will be expanded. Seeoverride(String, String)
.- Returns:
this
-
resolve
public static void resolve(Map<String,String> env)
Resolves environment variables against each other.
-
putIfNotNull
public void putIfNotNull(String key, String value)
Add a key/value but only if the value is not-null. Otherwise no-op.- Since:
- 1.556
-
putAllNonNull
public void putAllNonNull(Map<String,String> map)
Add entire map but filter null values out.- Since:
- 2.214
-
addLine
public void addLine(String line)
Takes a string that looks like "a=b" and adds that to this map.
-
expand
public String expand(String s)
Expands the variables in the given string by using environment variables represented in 'this'.
-
createCookie
public static EnvVars createCookie()
Creates a magic cookie that can be used as the model environment variable when we later kill the processes.
-
getRemote
public static EnvVars getRemote(hudson.remoting.VirtualChannel channel) throws IOException, InterruptedException
Obtains the environment variables of a remote peer.- Parameters:
channel
- Can be null, in which case the map indicating "N/A" will be returned.- Returns:
- A fresh copy that can be owned and modified by the caller.
- Throws:
IOException
InterruptedException
-
-