mirror of
https://github.com/actions/runner.git
synced 2025-12-12 15:13:30 +00:00
fix: GITHUB_ENV in composite (#1794)
* fix: GITHUB_ENV in composite * fix L0 Test
This commit is contained in:
@@ -67,6 +67,8 @@ namespace GitHub.Runner.Worker
|
|||||||
|
|
||||||
bool IsEmbedded { get; }
|
bool IsEmbedded { get; }
|
||||||
|
|
||||||
|
List<string> StepEnvironmentOverrides { get; }
|
||||||
|
|
||||||
ExecutionContext Root { get; }
|
ExecutionContext Root { get; }
|
||||||
|
|
||||||
// Initialize
|
// Initialize
|
||||||
@@ -237,6 +239,8 @@ namespace GitHub.Runner.Worker
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<string> StepEnvironmentOverrides { get; } = new List<string>();
|
||||||
|
|
||||||
public override void Initialize(IHostContext hostContext)
|
public override void Initialize(IHostContext hostContext)
|
||||||
{
|
{
|
||||||
base.Initialize(hostContext);
|
base.Initialize(hostContext);
|
||||||
|
|||||||
@@ -265,21 +265,27 @@ namespace GitHub.Runner.Worker.Handlers
|
|||||||
var dict = envContextData as CaseSensitiveDictionaryContextData;
|
var dict = envContextData as CaseSensitiveDictionaryContextData;
|
||||||
#endif
|
#endif
|
||||||
foreach (var pair in dict)
|
foreach (var pair in dict)
|
||||||
|
{
|
||||||
|
// Skip global env, otherwise we merge an outdated global env
|
||||||
|
if (ExecutionContext.StepEnvironmentOverrides.Contains(pair.Key))
|
||||||
{
|
{
|
||||||
envContext[pair.Key] = pair.Value;
|
envContext[pair.Key] = pair.Value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (step is IActionRunner actionStep)
|
if (step is IActionRunner actionStep)
|
||||||
{
|
{
|
||||||
// Evaluate and merge embedded-step env
|
// Evaluate and merge embedded-step env
|
||||||
|
step.ExecutionContext.StepEnvironmentOverrides.AddRange(ExecutionContext.StepEnvironmentOverrides);
|
||||||
var templateEvaluator = step.ExecutionContext.ToPipelineTemplateEvaluator();
|
var templateEvaluator = step.ExecutionContext.ToPipelineTemplateEvaluator();
|
||||||
var actionEnvironment = templateEvaluator.EvaluateStepEnvironment(actionStep.Action.Environment, step.ExecutionContext.ExpressionValues, step.ExecutionContext.ExpressionFunctions, Common.Util.VarUtil.EnvironmentVariableKeyComparer);
|
var actionEnvironment = templateEvaluator.EvaluateStepEnvironment(actionStep.Action.Environment, step.ExecutionContext.ExpressionValues, step.ExecutionContext.ExpressionFunctions, Common.Util.VarUtil.EnvironmentVariableKeyComparer);
|
||||||
foreach (var env in actionEnvironment)
|
foreach (var env in actionEnvironment)
|
||||||
{
|
{
|
||||||
envContext[env.Key] = new StringContextData(env.Value ?? string.Empty);
|
envContext[env.Key] = new StringContextData(env.Value ?? string.Empty);
|
||||||
|
step.ExecutionContext.StepEnvironmentOverrides.Add(env.Key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,6 +112,7 @@ namespace GitHub.Runner.Worker
|
|||||||
foreach (var env in actionEnvironment)
|
foreach (var env in actionEnvironment)
|
||||||
{
|
{
|
||||||
envContext[env.Key] = new StringContextData(env.Value ?? string.Empty);
|
envContext[env.Key] = new StringContextData(env.Value ?? string.Empty);
|
||||||
|
step.ExecutionContext.StepEnvironmentOverrides.Add(env.Key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|||||||
@@ -622,6 +622,7 @@ namespace GitHub.Runner.Common.Tests.Worker
|
|||||||
_stepContext.SetOutcome("", stepContext.Object.ContextName, (stepContext.Object.Outcome ?? stepContext.Object.Result ?? TaskResult.Succeeded).ToActionResult());
|
_stepContext.SetOutcome("", stepContext.Object.ContextName, (stepContext.Object.Outcome ?? stepContext.Object.Result ?? TaskResult.Succeeded).ToActionResult());
|
||||||
_stepContext.SetConclusion("", stepContext.Object.ContextName, (stepContext.Object.Result ?? TaskResult.Succeeded).ToActionResult());
|
_stepContext.SetConclusion("", stepContext.Object.ContextName, (stepContext.Object.Result ?? TaskResult.Succeeded).ToActionResult());
|
||||||
});
|
});
|
||||||
|
stepContext.Setup(x => x.StepEnvironmentOverrides).Returns(new List<string>());
|
||||||
|
|
||||||
stepContext.Setup(x => x.UpdateGlobalStepsContext()).Callback(() =>
|
stepContext.Setup(x => x.UpdateGlobalStepsContext()).Callback(() =>
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user