mirror of
https://github.com/actions/runner.git
synced 2025-12-14 22:24:11 +00:00
Optimize runtime of code
This commit is contained in:
@@ -107,6 +107,7 @@ namespace GitHub.Runner.Worker
|
|||||||
void RegisterPostJobStep(IStep step);
|
void RegisterPostJobStep(IStep step);
|
||||||
IStep RegisterCompositeStep(IStep step, DictionaryContextData inputsData, Dictionary<string, string> envData);
|
IStep RegisterCompositeStep(IStep step, DictionaryContextData inputsData, Dictionary<string, string> envData);
|
||||||
void EnqueueAllCompositeSteps(Queue<IStep> steps);
|
void EnqueueAllCompositeSteps(Queue<IStep> steps);
|
||||||
|
public void SetEnvironmentVariables(Dictionary<string, string> dict);
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class ExecutionContext : RunnerService, IExecutionContext
|
public sealed class ExecutionContext : RunnerService, IExecutionContext
|
||||||
@@ -298,14 +299,16 @@ namespace GitHub.Runner.Worker
|
|||||||
// Add the composite action environment variables to each step.
|
// Add the composite action environment variables to each step.
|
||||||
// If the key already exists, we override it since the composite action env variables will have higher precedence
|
// If the key already exists, we override it since the composite action env variables will have higher precedence
|
||||||
// Note that for each composite action step, it's environment variables will be set in the StepRunner automatically
|
// Note that for each composite action step, it's environment variables will be set in the StepRunner automatically
|
||||||
foreach (var e in envData)
|
step.ExecutionContext.SetEnvironmentVariables(envData);
|
||||||
{
|
|
||||||
step.ExecutionContext.EnvironmentVariables[e.Key] = e.Value;
|
|
||||||
}
|
|
||||||
|
|
||||||
return step;
|
return step;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetEnvironmentVariables(Dictionary<string, string> dict)
|
||||||
|
{
|
||||||
|
this.EnvironmentVariables = dict;
|
||||||
|
}
|
||||||
|
|
||||||
// Add Composite Steps first and then requeue the rest of the job steps.
|
// Add Composite Steps first and then requeue the rest of the job steps.
|
||||||
public void EnqueueAllCompositeSteps(Queue<IStep> steps)
|
public void EnqueueAllCompositeSteps(Queue<IStep> steps)
|
||||||
{
|
{
|
||||||
@@ -333,7 +336,6 @@ namespace GitHub.Runner.Worker
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public IExecutionContext CreateChild(Guid recordId, string displayName, string refName, string scopeName, string contextName, Dictionary<string, string> intraActionState = null, int? recordOrder = null)
|
public IExecutionContext CreateChild(Guid recordId, string displayName, string refName, string scopeName, string contextName, Dictionary<string, string> intraActionState = null, int? recordOrder = null)
|
||||||
{
|
{
|
||||||
Trace.Entering();
|
Trace.Entering();
|
||||||
|
|||||||
@@ -44,12 +44,28 @@ namespace GitHub.Runner.Worker.Handlers
|
|||||||
inputsData[i.Key] = new StringContextData(i.Value);
|
inputsData[i.Key] = new StringContextData(i.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Get Environment Data for Composite Action
|
// Get Environment Data for Composite Action
|
||||||
var extraExpressionValues = new Dictionary<string, PipelineContextData>(StringComparer.OrdinalIgnoreCase);
|
var extraExpressionValues = new Dictionary<string, PipelineContextData>(StringComparer.OrdinalIgnoreCase);
|
||||||
extraExpressionValues["inputs"] = inputsData;
|
extraExpressionValues["inputs"] = inputsData;
|
||||||
var manifestManager = HostContext.GetService<IActionManifestManager>();
|
var manifestManager = HostContext.GetService<IActionManifestManager>();
|
||||||
var envData = manifestManager.EvaluateCompositeActionEnvironment(ExecutionContext, Data.Environment, extraExpressionValues);
|
|
||||||
|
// Add the composite action environment variables to each step.
|
||||||
|
// If the key already exists, we override it since the composite action env variables will have higher precedence
|
||||||
|
// Note that for each composite action step, it's environment variables will be set in the StepRunner automatically
|
||||||
|
var compositeEnvData = manifestManager.EvaluateCompositeActionEnvironment(ExecutionContext, Data.Environment, extraExpressionValues);
|
||||||
|
var envData = new Dictionary<string, string>();
|
||||||
|
|
||||||
|
// Copy over parent environment
|
||||||
|
foreach (var env in ExecutionContext.EnvironmentVariables)
|
||||||
|
{
|
||||||
|
envData[env.Key] = env.Value;
|
||||||
|
}
|
||||||
|
// Overwrite with current env
|
||||||
|
foreach (var env in compositeEnvData)
|
||||||
|
{
|
||||||
|
envData[env.Key] = env.Value;
|
||||||
|
}
|
||||||
|
|
||||||
// Add each composite action step to the front of the queue
|
// Add each composite action step to the front of the queue
|
||||||
var compositeActionSteps = new Queue<IStep>();
|
var compositeActionSteps = new Queue<IStep>();
|
||||||
|
|||||||
Reference in New Issue
Block a user