From 7e74f8c9d5bd60f83e2b69479de7a2fb468990fa Mon Sep 17 00:00:00 2001 From: ChristopherHX Date: Wed, 29 Jun 2022 02:50:50 +0200 Subject: [PATCH] fix: GITHUB_ENV in composite (#1794) * fix: GITHUB_ENV in composite * fix L0 Test --- src/Runner.Worker/ExecutionContext.cs | 4 ++++ src/Runner.Worker/Handlers/CompositeActionHandler.cs | 8 +++++++- src/Runner.Worker/StepsRunner.cs | 1 + src/Test/L0/Worker/StepsRunnerL0.cs | 1 + 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/Runner.Worker/ExecutionContext.cs b/src/Runner.Worker/ExecutionContext.cs index 7bb7e7efc..4b63b15bc 100644 --- a/src/Runner.Worker/ExecutionContext.cs +++ b/src/Runner.Worker/ExecutionContext.cs @@ -67,6 +67,8 @@ namespace GitHub.Runner.Worker bool IsEmbedded { get; } + List StepEnvironmentOverrides { get; } + ExecutionContext Root { get; } // Initialize @@ -237,6 +239,8 @@ namespace GitHub.Runner.Worker } } + public List StepEnvironmentOverrides { get; } = new List(); + public override void Initialize(IHostContext hostContext) { base.Initialize(hostContext); diff --git a/src/Runner.Worker/Handlers/CompositeActionHandler.cs b/src/Runner.Worker/Handlers/CompositeActionHandler.cs index 0dc538157..04afb100c 100644 --- a/src/Runner.Worker/Handlers/CompositeActionHandler.cs +++ b/src/Runner.Worker/Handlers/CompositeActionHandler.cs @@ -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); } } } diff --git a/src/Runner.Worker/StepsRunner.cs b/src/Runner.Worker/StepsRunner.cs index 38928c6eb..dc3e80a25 100644 --- a/src/Runner.Worker/StepsRunner.cs +++ b/src/Runner.Worker/StepsRunner.cs @@ -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) diff --git a/src/Test/L0/Worker/StepsRunnerL0.cs b/src/Test/L0/Worker/StepsRunnerL0.cs index 6f1cad8ab..e090dd1c0 100644 --- a/src/Test/L0/Worker/StepsRunnerL0.cs +++ b/src/Test/L0/Worker/StepsRunnerL0.cs @@ -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()); stepContext.Setup(x => x.UpdateGlobalStepsContext()).Callback(() => {