mirror of
https://github.com/actions/runner.git
synced 2025-12-13 19:03:44 +00:00
Load and set env from .env file before creating HostContext. (#220)
This commit is contained in:
@@ -4,6 +4,7 @@ using GitHub.Runner.Sdk;
|
|||||||
using System;
|
using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@@ -14,6 +15,9 @@ namespace GitHub.Runner.Listener
|
|||||||
{
|
{
|
||||||
public static int Main(string[] args)
|
public static int Main(string[] args)
|
||||||
{
|
{
|
||||||
|
// Add environment variables from .env file
|
||||||
|
LoadAndSetEnv();
|
||||||
|
|
||||||
using (HostContext context = new HostContext("Runner"))
|
using (HostContext context = new HostContext("Runner"))
|
||||||
{
|
{
|
||||||
return MainAsync(context, args).GetAwaiter().GetResult();
|
return MainAsync(context, args).GetAwaiter().GetResult();
|
||||||
@@ -25,7 +29,7 @@ namespace GitHub.Runner.Listener
|
|||||||
// 1: Terminate failure
|
// 1: Terminate failure
|
||||||
// 2: Retriable failure
|
// 2: Retriable failure
|
||||||
// 3: Exit for self update
|
// 3: Exit for self update
|
||||||
public async static Task<int> MainAsync(IHostContext context, string[] args)
|
private async static Task<int> MainAsync(IHostContext context, string[] args)
|
||||||
{
|
{
|
||||||
Tracing trace = context.GetTrace(nameof(GitHub.Runner.Listener));
|
Tracing trace = context.GetTrace(nameof(GitHub.Runner.Listener));
|
||||||
trace.Info($"Runner is built for {Constants.Runner.Platform} ({Constants.Runner.PlatformArchitecture}) - {BuildConstants.RunnerPackage.PackageName}.");
|
trace.Info($"Runner is built for {Constants.Runner.Platform} ({Constants.Runner.PlatformArchitecture}) - {BuildConstants.RunnerPackage.PackageName}.");
|
||||||
@@ -83,22 +87,6 @@ namespace GitHub.Runner.Listener
|
|||||||
return Constants.Runner.ReturnCode.TerminatedError;
|
return Constants.Runner.ReturnCode.TerminatedError;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add environment variables from .env file
|
|
||||||
string envFile = Path.Combine(context.GetDirectory(WellKnownDirectory.Root), ".env");
|
|
||||||
if (File.Exists(envFile))
|
|
||||||
{
|
|
||||||
var envContents = File.ReadAllLines(envFile);
|
|
||||||
foreach (var env in envContents)
|
|
||||||
{
|
|
||||||
if (!string.IsNullOrEmpty(env) && env.IndexOf('=') > 0)
|
|
||||||
{
|
|
||||||
string envKey = env.Substring(0, env.IndexOf('='));
|
|
||||||
string envValue = env.Substring(env.IndexOf('=') + 1);
|
|
||||||
Environment.SetEnvironmentVariable(envKey, envValue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Parse the command line args.
|
// Parse the command line args.
|
||||||
var command = new CommandSettings(context, args);
|
var command = new CommandSettings(context, args);
|
||||||
trace.Info("Arguments parsed");
|
trace.Info("Arguments parsed");
|
||||||
@@ -136,5 +124,34 @@ namespace GitHub.Runner.Listener
|
|||||||
return Constants.Runner.ReturnCode.RetryableError;
|
return Constants.Runner.ReturnCode.RetryableError;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void LoadAndSetEnv()
|
||||||
|
{
|
||||||
|
var binDir = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
|
||||||
|
var rootDir = new DirectoryInfo(binDir).Parent.FullName;
|
||||||
|
string envFile = Path.Combine(rootDir, ".env");
|
||||||
|
if (File.Exists(envFile))
|
||||||
|
{
|
||||||
|
var envContents = File.ReadAllLines(envFile);
|
||||||
|
foreach (var env in envContents)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(env))
|
||||||
|
{
|
||||||
|
var separatorIndex = env.IndexOf('=');
|
||||||
|
if (separatorIndex > 0)
|
||||||
|
{
|
||||||
|
string envKey = env.Substring(0, separatorIndex);
|
||||||
|
string envValue = null;
|
||||||
|
if (env.Length > separatorIndex + 1)
|
||||||
|
{
|
||||||
|
envValue = env.Substring(separatorIndex + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
Environment.SetEnvironmentVariable(envKey, envValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user