From babfb9d73c4e319214dd9ea4656c4a6b55e122e2 Mon Sep 17 00:00:00 2001 From: Peter Date: Tue, 16 Jun 2026 08:48:01 -0400 Subject: [PATCH 1/2] updating the runner logs to output the job adn workflow run ID to coorelate better. --- src/Runner.Listener/JobDispatcher.cs | 18 +++++++++++++- src/Test/L0/Listener/JobDispatcherL0.cs | 32 +++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/src/Runner.Listener/JobDispatcher.cs b/src/Runner.Listener/JobDispatcher.cs index 10076441eff..9df9a6b427f 100644 --- a/src/Runner.Listener/JobDispatcher.cs +++ b/src/Runner.Listener/JobDispatcher.cs @@ -8,6 +8,7 @@ using System.Threading; using System.Threading.Tasks; using GitHub.DistributedTask.Pipelines; +using GitHub.DistributedTask.Pipelines.ContextData; using GitHub.DistributedTask.WebApi; using GitHub.Runner.Common; using GitHub.Runner.Common.Util; @@ -373,7 +374,8 @@ private async Task RunAsync(Pipelines.AgentJobRequestMessage message } var term = HostContext.GetService(); - term.WriteLine($"{DateTime.UtcNow:u}: Running job: {message.JobDisplayName}"); + var workflowRunId = GetGitHubContextValue(message, "run_id"); + term.WriteLine($"{DateTime.UtcNow:u}: Running job: {message.JobDisplayName} (Job ID: {message.JobId}, Workflow run ID: {workflowRunId})"); // first job request renew succeed. TaskCompletionSource firstJobRequestRenewed = new(); @@ -729,6 +731,20 @@ await processChannel.SendAsync( } } + internal static string GetGitHubContextValue(Pipelines.AgentJobRequestMessage message, string key) + { + if (message.ContextData != null && + message.ContextData.TryGetValue("github", out var githubContext) && + githubContext is DictionaryContextData githubContextData && + githubContextData.TryGetValue(key, out var value) && + value is StringContextData stringValue) + { + return stringValue.Value; + } + + return "unknown"; + } + internal async Task RenewJobRequestAsync(Pipelines.AgentJobRequestMessage message, ServiceEndpoint systemConnection, int poolId, long requestId, Guid lockToken, string orchestrationId, TaskCompletionSource firstJobRequestRenewed, CancellationToken token) { if (this._isRunServiceJob) diff --git a/src/Test/L0/Listener/JobDispatcherL0.cs b/src/Test/L0/Listener/JobDispatcherL0.cs index a160ffba2c0..09a64d15529 100644 --- a/src/Test/L0/Listener/JobDispatcherL0.cs +++ b/src/Test/L0/Listener/JobDispatcherL0.cs @@ -47,6 +47,38 @@ private Pipelines.AgentJobRequestMessage CreateJobRequestMessage(string billingO return result; } + [Fact] + [Trait("Level", "L0")] + [Trait("Category", "Runner")] + public void GetGitHubContextValue_ReturnsValue_WhenPresent() + { + var message = CreateJobRequestMessage(); + ((DictionaryContextData)message.ContextData["github"])["run_id"] = new StringContextData("123456"); + + Assert.Equal("123456", JobDispatcher.GetGitHubContextValue(message, "run_id")); + } + + [Fact] + [Trait("Level", "L0")] + [Trait("Category", "Runner")] + public void GetGitHubContextValue_ReturnsUnknown_WhenKeyMissing() + { + var message = CreateJobRequestMessage(); + + Assert.Equal("unknown", JobDispatcher.GetGitHubContextValue(message, "run_id")); + } + + [Fact] + [Trait("Level", "L0")] + [Trait("Category", "Runner")] + public void GetGitHubContextValue_ReturnsUnknown_WhenGitHubContextMissing() + { + var message = CreateJobRequestMessage(); + message.ContextData.Remove("github"); + + Assert.Equal("unknown", JobDispatcher.GetGitHubContextValue(message, "run_id")); + } + [Theory] [Trait("Level", "L0")] [Trait("Category", "Runner")] From 36bb39cbf3f550d7329a07457f21e6caab131ae1 Mon Sep 17 00:00:00 2001 From: Peter Date: Tue, 16 Jun 2026 09:33:42 -0400 Subject: [PATCH 2/2] Update JobDispatcher.cs --- src/Runner.Listener/JobDispatcher.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Runner.Listener/JobDispatcher.cs b/src/Runner.Listener/JobDispatcher.cs index 9df9a6b427f..f4c5df7ad07 100644 --- a/src/Runner.Listener/JobDispatcher.cs +++ b/src/Runner.Listener/JobDispatcher.cs @@ -375,7 +375,7 @@ private async Task RunAsync(Pipelines.AgentJobRequestMessage message var term = HostContext.GetService(); var workflowRunId = GetGitHubContextValue(message, "run_id"); - term.WriteLine($"{DateTime.UtcNow:u}: Running job: {message.JobDisplayName} (Job ID: {message.JobId}, Workflow run ID: {workflowRunId})"); + term.WriteLine($"{DateTime.UtcNow:u}: Running job: {message.JobDisplayName} (Workflow run ID: {workflowRunId})"); // first job request renew succeed. TaskCompletionSource firstJobRequestRenewed = new();