Set http_proxy and related env vars for containers (#304)

* WIP add in basic passthrough for proxy env vars

* Add http_proxy vars after container env is created
This commit is contained in:
David Kale
2020-01-27 10:56:18 -05:00
committed by GitHub
parent 2e0e8eb822
commit 17970ad1f9
2 changed files with 25 additions and 0 deletions

View File

@@ -21,6 +21,7 @@ namespace GitHub.Runner.Sdk
private string _httpsProxyAddress; private string _httpsProxyAddress;
private string _httpsProxyUsername; private string _httpsProxyUsername;
private string _httpsProxyPassword; private string _httpsProxyPassword;
private string _noProxyString;
private readonly List<ByPassInfo> _noProxyList = new List<ByPassInfo>(); private readonly List<ByPassInfo> _noProxyList = new List<ByPassInfo>();
private readonly HashSet<string> _noProxyUnique = new HashSet<string>(StringComparer.OrdinalIgnoreCase); private readonly HashSet<string> _noProxyUnique = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
@@ -33,6 +34,7 @@ namespace GitHub.Runner.Sdk
public string HttpsProxyAddress => _httpsProxyAddress; public string HttpsProxyAddress => _httpsProxyAddress;
public string HttpsProxyUsername => _httpsProxyUsername; public string HttpsProxyUsername => _httpsProxyUsername;
public string HttpsProxyPassword => _httpsProxyPassword; public string HttpsProxyPassword => _httpsProxyPassword;
public string NoProxyString => _noProxyString;
public List<ByPassInfo> NoProxyList => _noProxyList; public List<ByPassInfo> NoProxyList => _noProxyList;
@@ -121,6 +123,7 @@ namespace GitHub.Runner.Sdk
if (!string.IsNullOrEmpty(noProxyList)) if (!string.IsNullOrEmpty(noProxyList))
{ {
_noProxyString = noProxyList;
var noProxyListSplit = noProxyList.Split(',', StringSplitOptions.RemoveEmptyEntries); var noProxyListSplit = noProxyList.Split(',', StringSplitOptions.RemoveEmptyEntries);
foreach (string noProxy in noProxyListSplit) foreach (string noProxy in noProxyListSplit)
{ {

View File

@@ -63,6 +63,8 @@ namespace GitHub.Runner.Worker.Container
UserMountVolumes[volume] = volume; UserMountVolumes[volume] = volume;
} }
} }
UpdateWebProxyEnv(hostContext.WebProxy);
} }
public string ContainerId { get; set; } public string ContainerId { get; set; }
@@ -222,6 +224,26 @@ namespace GitHub.Runner.Worker.Container
{ {
_pathMappings.Insert(0, new PathMapping(hostCommonPath, containerCommonPath)); _pathMappings.Insert(0, new PathMapping(hostCommonPath, containerCommonPath));
} }
private void UpdateWebProxyEnv(RunnerWebProxy webProxy)
{
// Set common forms of proxy variables if configured in Runner and not set directly by container.env
if (!String.IsNullOrEmpty(webProxy.HttpProxyAddress))
{
ContainerEnvironmentVariables.TryAdd("HTTP_PROXY", webProxy.HttpProxyAddress);
ContainerEnvironmentVariables.TryAdd("http_proxy", webProxy.HttpProxyAddress);
}
if (!String.IsNullOrEmpty(webProxy.HttpsProxyAddress))
{
ContainerEnvironmentVariables.TryAdd("HTTPS_PROXY", webProxy.HttpsProxyAddress);
ContainerEnvironmentVariables.TryAdd("https_proxy", webProxy.HttpsProxyAddress);
}
if (!String.IsNullOrEmpty(webProxy.NoProxyString))
{
ContainerEnvironmentVariables.TryAdd("NO_PROXY", webProxy.NoProxyString);
ContainerEnvironmentVariables.TryAdd("no_proxy", webProxy.NoProxyString);
}
}
} }
public class MountVolume public class MountVolume