mirror of
https://github.com/actions/runner.git
synced 2025-12-12 05:37:01 +00:00
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:
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user