Env Flow => Able to get env variables and overwrite current env variables => but it doesn't 'stick'

This commit is contained in:
Ethan Chiu
2020-06-18 15:34:48 -04:00
parent 038e5e2c2e
commit e56b2439b9
7 changed files with 111 additions and 3 deletions

View File

@@ -27,6 +27,7 @@ namespace GitHub.Runner.Worker
Dictionary<string, string> EvaluateContainerEnvironment(IExecutionContext executionContext, MappingToken token, IDictionary<string, PipelineContextData> extraExpressionValues);
public Dictionary<string, string> EvaluateCompositeActionEnvironment(IExecutionContext executionContext, MappingToken token, IDictionary<string, PipelineContextData> extraExpressionValues);
string EvaluateDefaultInput(IExecutionContext executionContext, string inputName, TemplateToken token);
}
@@ -214,6 +215,65 @@ namespace GitHub.Runner.Worker
return result;
}
// TODO: Add Evaluate Composite Action Env Function Here
// Steps will be evaluated already in StepsRunner
public Dictionary<string, string> EvaluateCompositeActionEnvironment(
IExecutionContext executionContext,
MappingToken token,
IDictionary<string, PipelineContextData> extraExpressionValues)
{
var result = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
if (token != null)
{
var context = CreateContext(executionContext, extraExpressionValues);
try
{
var evaluateResult = TemplateEvaluator.Evaluate(context, "container-runs-env", token, 0, null, omitHeader: true);
context.Errors.Check();
if (evaluateResult != null) {
Trace.Info($"EvaluateCompositeActionEnvironment evaluateResult {evaluateResult}");
} else {
Trace.Info($"EvaluateCompositeActionEnvironment evaluateResult is null");
}
Trace.Info($"Composite Action Environments evaluate result: {StringUtil.ConvertToJson(evaluateResult)}");
// Mapping
var mapping = evaluateResult.AssertMapping("composite env");
if (mapping != null) {
Trace.Info($"EvaluateCompositeActionEnvironment Mapping {mapping}");
} else {
Trace.Info($"EvaluateCompositeActionEnvironment Mapping is null");
}
foreach (var pair in mapping)
{
// Literal key
var key = pair.Key.AssertString("composite env key");
Trace.Info($"EvaluateCompositeActionEnvironment Key{key.Value}");
// Literal value
var value = pair.Value.AssertString("composite env value");
Trace.Info($"EvaluateCompositeActionEnvironment Value{value.Value}");
result[key.Value] = value.Value;
Trace.Info($"Add env {key} = {value}");
}
}
catch (Exception ex) when (!(ex is TemplateValidationException))
{
Trace.Error(ex);
context.Errors.Add(ex);
}
context.Errors.Check();
}
return result;
}
public string EvaluateDefaultInput(
IExecutionContext executionContext,
string inputName,
@@ -426,6 +486,7 @@ namespace GitHub.Runner.Worker
return new CompositeActionExecutionData()
{
Steps = stepsLoaded,
Environment = envToken
};
}
}