Setting debug using GitHub Action variables (#2234)

This commit is contained in:
Tauhid Anjum
2022-10-31 19:21:33 +05:30
committed by GitHub
parent b18bda773f
commit dad7ad0384
2 changed files with 119 additions and 2 deletions

View File

@@ -686,8 +686,11 @@ namespace GitHub.Runner.Worker
// Endpoints
Global.Endpoints = message.Resources.Endpoints;
// Variables
Global.Variables = new Variables(HostContext, message.Variables);
// Ser debug using vars context if debug variables are not already present.
var variables = message.Variables;
SetDebugUsingVars(variables, message.ContextData);
Global.Variables = new Variables(HostContext, variables);
if (Global.Variables.GetBoolean("DistributedTask.ForceInternalNodeVersionOnRunnerTo12") ?? false)
{
@@ -1077,6 +1080,31 @@ namespace GitHub.Runner.Worker
return CreateChild(newGuid, displayName, newGuid.ToString("N"), null, null, ActionRunStage.Post, intraActionState, _childTimelineRecordOrder - Root.PostJobSteps.Count, siblingScopeName: siblingScopeName);
}
// Sets debug using vars context in case debug variables are not present.
private static void SetDebugUsingVars(IDictionary<string, VariableValue> variables, IDictionary<string, PipelineContextData> contextData)
{
if (contextData != null &&
contextData.TryGetValue(PipelineTemplateConstants.Vars, out var varsPipelineContextData) &&
varsPipelineContextData != null &&
varsPipelineContextData is DictionaryContextData varsContextData)
{
// Set debug variables only when StepDebug/RunnerDebug variables are not present.
if (!variables.ContainsKey(Constants.Variables.Actions.StepDebug) &&
varsContextData.TryGetValue(Constants.Variables.Actions.StepDebug, out var stepDebugValue) &&
stepDebugValue is StringContextData)
{
variables[Constants.Variables.Actions.StepDebug] = stepDebugValue.ToString();
}
if (!variables.ContainsKey(Constants.Variables.Actions.RunnerDebug) &&
varsContextData.TryGetValue(Constants.Variables.Actions.RunnerDebug, out var runDebugValue) &&
runDebugValue is StringContextData)
{
variables[Constants.Variables.Actions.RunnerDebug] = runDebugValue.ToString();
}
}
}
public void ApplyContinueOnError(TemplateToken continueOnErrorToken)
{
if (Result != TaskResult.Failed)