fix: GITHUB_ENV in composite (#1794)

* fix: GITHUB_ENV in composite

* fix L0 Test
This commit is contained in:
ChristopherHX
2022-06-29 02:50:50 +02:00
committed by GitHub
parent efdda93aeb
commit 7e74f8c9d5
4 changed files with 13 additions and 1 deletions

View File

@@ -67,6 +67,8 @@ namespace GitHub.Runner.Worker
bool IsEmbedded { get; }
List<string> StepEnvironmentOverrides { get; }
ExecutionContext Root { get; }
// Initialize
@@ -237,6 +239,8 @@ namespace GitHub.Runner.Worker
}
}
public List<string> StepEnvironmentOverrides { get; } = new List<string>();
public override void Initialize(IHostContext hostContext)
{
base.Initialize(hostContext);

View File

@@ -266,7 +266,11 @@ namespace GitHub.Runner.Worker.Handlers
#endif
foreach (var pair in dict)
{
envContext[pair.Key] = pair.Value;
// Skip global env, otherwise we merge an outdated global env
if (ExecutionContext.StepEnvironmentOverrides.Contains(pair.Key))
{
envContext[pair.Key] = pair.Value;
}
}
}
@@ -275,11 +279,13 @@ namespace GitHub.Runner.Worker.Handlers
if (step is IActionRunner actionStep)
{
// Evaluate and merge embedded-step env
step.ExecutionContext.StepEnvironmentOverrides.AddRange(ExecutionContext.StepEnvironmentOverrides);
var templateEvaluator = step.ExecutionContext.ToPipelineTemplateEvaluator();
var actionEnvironment = templateEvaluator.EvaluateStepEnvironment(actionStep.Action.Environment, step.ExecutionContext.ExpressionValues, step.ExecutionContext.ExpressionFunctions, Common.Util.VarUtil.EnvironmentVariableKeyComparer);
foreach (var env in actionEnvironment)
{
envContext[env.Key] = new StringContextData(env.Value ?? string.Empty);
step.ExecutionContext.StepEnvironmentOverrides.Add(env.Key);
}
}
}

View File

@@ -112,6 +112,7 @@ namespace GitHub.Runner.Worker
foreach (var env in actionEnvironment)
{
envContext[env.Key] = new StringContextData(env.Value ?? string.Empty);
step.ExecutionContext.StepEnvironmentOverrides.Add(env.Key);
}
}
catch (Exception ex)

View File

@@ -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.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(() =>
{