diff --git a/src/Runner.Common/Util/TaskResultUtil.cs b/src/Runner.Common/Util/TaskResultUtil.cs index e82bb2896..4ed6913b2 100644 --- a/src/Runner.Common/Util/TaskResultUtil.cs +++ b/src/Runner.Common/Util/TaskResultUtil.cs @@ -1,4 +1,5 @@ -using GitHub.DistributedTask.WebApi; +using GitHub.DistributedTask.Pipelines.ContextData; +using GitHub.DistributedTask.WebApi; using System; namespace GitHub.Runner.Common.Util @@ -75,5 +76,29 @@ namespace GitHub.Runner.Common.Util throw new NotSupportedException(result.ToString()); } } + + public static StringContextData ToContextData(this TaskResult result) + { + string str; + switch (result) + { + case TaskResult.Succeeded: + str = "success"; + break; + case TaskResult.Failed: + str = "failure"; + break; + case TaskResult.Canceled: + str = "cancelled"; + break; + case TaskResult.Skipped: + str = "skipped"; + break; + default: + throw new NotSupportedException($"Unexpected task result '{result}' when converting to context data"); + } + + return str; + } } } diff --git a/src/Runner.Worker/ExecutionContext.cs b/src/Runner.Worker/ExecutionContext.cs index e03d173af..8f320fe29 100644 --- a/src/Runner.Worker/ExecutionContext.cs +++ b/src/Runner.Worker/ExecutionContext.cs @@ -309,6 +309,12 @@ namespace GitHub.Runner.Worker Result = result; } + // update context + if (!string.IsNullOrEmpty(ContextName)) + { + StepsContext.SetOutcome(ScopeName, ContextName, Result.Value.ToContextData()); + } + // report total delay caused by server throttling. if (_totalThrottlingDelayInMilliseconds > 0) { diff --git a/src/Runner.Worker/StepsContext.cs b/src/Runner.Worker/StepsContext.cs index 41ea72961..5cd4c4b43 100644 --- a/src/Runner.Worker/StepsContext.cs +++ b/src/Runner.Worker/StepsContext.cs @@ -56,13 +56,13 @@ namespace GitHub.Runner.Worker } } - public void SetResult( + public void SetOutcome( string scopeName, string stepName, - string result) + StringContextData outcome) { var step = GetStep(scopeName, stepName); - step["result"] = new StringContextData(result); + step["outcome"] = outcome; } private DictionaryContextData GetStep(string scopeName, string stepName) diff --git a/src/Test/L0/Util/TaskResultUtilL0.cs b/src/Test/L0/Util/TaskResultUtilL0.cs index b12d07c6a..6710a9221 100644 --- a/src/Test/L0/Util/TaskResultUtilL0.cs +++ b/src/Test/L0/Util/TaskResultUtilL0.cs @@ -202,5 +202,20 @@ namespace GitHub.Runner.Common.Tests.Util Assert.Equal(TaskResult.Skipped, merged); } } + + [Fact] + [Trait("Level", "L0")] + [Trait("Category", "Common")] + public void ToContextData() + { + // Arrange + using (TestHostContext hc = new TestHostContext(this)) + { + Assert.Equal("success", TaskResult.Succeeded.ToContextData().ToString()); + Assert.Equal("failure", TaskResult.Failed.ToContextData().ToString()); + Assert.Equal("cancelled", TaskResult.Canceled.ToContextData().ToString()); + Assert.Equal("skipped", TaskResult.Skipped.ToContextData().ToString()); + } + } } }