Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 17 additions & 1 deletion src/Runner.Listener/JobDispatcher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -373,7 +374,8 @@ private async Task<TaskResult> RunAsync(Pipelines.AgentJobRequestMessage message
}

var term = HostContext.GetService<ITerminal>();
term.WriteLine($"{DateTime.UtcNow:u}: Running job: {message.JobDisplayName}");
var workflowRunId = GetGitHubContextValue(message, "run_id");
term.WriteLine($"{DateTime.UtcNow:u}: Running job: {message.JobDisplayName} (Workflow run ID: {workflowRunId})");

// first job request renew succeed.
TaskCompletionSource<int> firstJobRequestRenewed = new();
Expand Down Expand Up @@ -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) &&
Comment on lines +734 to +737
githubContext is DictionaryContextData githubContextData &&
githubContextData.TryGetValue(key, out var value) &&
value is StringContextData stringValue)
{
return stringValue.Value;
}

return "unknown";
}
Comment on lines +734 to +746

internal async Task RenewJobRequestAsync(Pipelines.AgentJobRequestMessage message, ServiceEndpoint systemConnection, int poolId, long requestId, Guid lockToken, string orchestrationId, TaskCompletionSource<int> firstJobRequestRenewed, CancellationToken token)
{
if (this._isRunServiceJob)
Expand Down
32 changes: 32 additions & 0 deletions src/Test/L0/Listener/JobDispatcherL0.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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")]
Expand Down