Skip to content

Commit 0ac825f

Browse files
authored
Use job properties for resubmission source metadata
1 parent fe95053 commit 0ac825f

2 files changed

Lines changed: 25 additions & 3 deletions

File tree

src/Microsoft.DotNet.Helix/JobMonitor/Services/HelixService.cs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,8 @@ await RetryHelper.RetryAsync(
280280
Properties = ConvertPropertiesToImmutableDictionary(details.Properties)
281281
.SetItem(HelixJobInfo.PreviousHelixJobNamePropertyName, originalJobName),
282282
};
283-
if (TryParseSource(details.Source, out string sourcePrefix, out string teamProject, out string repository, out string branch))
283+
if (TryGetSourceMetadataFromProperties(details.Properties, out string sourcePrefix, out string teamProject, out string repository, out string branch)
284+
|| TryParseSource(details.Source, out sourcePrefix, out teamProject, out repository, out branch))
284285
{
285286
creationRequest.SourcePrefix = sourcePrefix;
286287
creationRequest.TeamProject = teamProject;
@@ -345,6 +346,23 @@ private static ImmutableDictionary<string, string> ConvertPropertiesToImmutableD
345346
return builder.ToImmutable();
346347
}
347348

349+
private static bool TryGetSourceMetadataFromProperties(
350+
JToken properties,
351+
out string sourcePrefix,
352+
out string teamProject,
353+
out string repository,
354+
out string branch)
355+
{
356+
sourcePrefix = GetStringPropertyFromProperties(properties, "SourcePrefix");
357+
teamProject = GetStringPropertyFromProperties(properties, "TeamProject");
358+
repository = GetStringPropertyFromProperties(properties, "Repository");
359+
branch = GetStringPropertyFromProperties(properties, "Branch");
360+
return !string.IsNullOrWhiteSpace(sourcePrefix)
361+
&& !string.IsNullOrWhiteSpace(teamProject)
362+
&& !string.IsNullOrWhiteSpace(repository)
363+
&& !string.IsNullOrWhiteSpace(branch);
364+
}
365+
348366
private static bool TryParseSource(
349367
string source,
350368
out string sourcePrefix,

src/Microsoft.DotNet.Helix/Sdk.Tests/Microsoft.DotNet.Helix.Sdk.Tests/HelixServiceTests.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ public async Task ResubmitWorkItemsAsync_FallsBackToSourceWhenSourceCannotBePars
267267
var api = CreateApi();
268268
api.Job
269269
.Setup(j => j.DetailsAsync("original-job", It.IsAny<CancellationToken>()))
270-
.ReturnsAsync(JobDetails(source: "source"));
270+
.ReturnsAsync(JobDetails(source: "source", includeSourceMetadataInProperties: false));
271271
api.Storage
272272
.Setup(s => s.NewAsync(It.IsAny<ContainerCreationRequest>(), It.IsAny<CancellationToken>()))
273273
.ReturnsAsync(new ContainerInformation(
@@ -332,7 +332,7 @@ private static JobSummary Job(string name, string finished, JToken properties)
332332
Properties = properties,
333333
};
334334

335-
private static JobDetails JobDetails(string source = "ci/public/dotnet/arcade/refs/heads/main")
335+
private static JobDetails JobDetails(string source = "source", bool includeSourceMetadataInProperties = true)
336336
=> new("https://storage/job-list.json", null, "original-job", "wait", source, "helix-type", "build")
337337
{
338338
Creator = "creator",
@@ -342,6 +342,10 @@ private static JobDetails JobDetails(string source = "ci/public/dotnet/arcade/re
342342
["BuildId"] = "123",
343343
["TestRunName"] = "custom run",
344344
["System.StageName"] = "test stage",
345+
["SourcePrefix"] = includeSourceMetadataInProperties ? "ci" : null,
346+
["TeamProject"] = includeSourceMetadataInProperties ? "public" : null,
347+
["Repository"] = includeSourceMetadataInProperties ? "dotnet/arcade" : null,
348+
["Branch"] = includeSourceMetadataInProperties ? "refs/heads/main" : null,
345349
["ObjectProperty"] = new JObject
346350
{
347351
["nested"] = true,

0 commit comments

Comments
 (0)