diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj
index bec1a49637a..90519c545d7 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj
@@ -223,7 +223,7 @@
ItemsToPush="@(ItemsToPushToBlobFeed)"
ItemsToSign="@(ItemsToSignPostBuild)"
StrongNameSignInfo="@(StrongNameSignInfo)"
- CertificatesSignInfo="@(CertificatesSignInfo)"
+ CertificatesSignInfo="@(CertificatesSignInfo)"
FileSignInfo="@(FileSignInfo)"
FileExtensionSignInfo="@(FileExtensionSignInfo)"
ManifestBuildData="@(ManifestBuildData)"
@@ -231,6 +231,7 @@
ManifestBranch="$(BUILD_SOURCEBRANCH)"
ManifestBuildId="$(BUILD_BUILDNUMBER)"
ManifestCommit="$(BUILD_SOURCEVERSION)"
+ ManifestRepoOrigin="$(GitHubRepositoryName)"
IsStableBuild="$(IsStableBuild)"
PublishingVersion="$(PublishingVersion)"
AssetManifestPath="$(AssetManifestFilePath)"
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/SourceBuildArcadeBuild.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/SourceBuildArcadeBuild.targets
index 204ece5f7e2..4c3fa751076 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/SourceBuildArcadeBuild.targets
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/SourceBuildArcadeBuild.targets
@@ -83,6 +83,8 @@
$(InnerBuildArgs) /p:DotNetPublishUsingPipelines=true
+
+ $(InnerBuildArgs) /p:GitHubRepositoryName=$(GitHubRepositoryName)
diff --git a/src/Microsoft.DotNet.Build.Tasks.Feed.Tests/BuildModelFactoryTests.cs b/src/Microsoft.DotNet.Build.Tasks.Feed.Tests/BuildModelFactoryTests.cs
index 3467bf0f5fd..76f0d22f4f6 100644
--- a/src/Microsoft.DotNet.Build.Tasks.Feed.Tests/BuildModelFactoryTests.cs
+++ b/src/Microsoft.DotNet.Build.Tasks.Feed.Tests/BuildModelFactoryTests.cs
@@ -24,6 +24,7 @@ public class BuildModelFactoryTests
private const string _testAzdoRepoUri = "https://dnceng@dev.azure.com/dnceng/internal/_git/dotnet-buildtest";
private const string _normalizedTestAzdoRepoUri = "https://dev.azure.com/dnceng/internal/_git/dotnet-buildtest";
+ private const string _testRepoOrigin = "emsdk";
private const string _testBuildBranch = "foobranch";
private const string _testBuildCommit = "664996a16fa9228cfd7a55d767deb31f62a65f51";
private const string _testAzdoBuildId = "89999999";
@@ -71,9 +72,8 @@ public void AttemptToCreateModelWithNoArtifactsFails()
{
Action act = () =>
_buildModelFactory.CreateModelFromItems(null, null,
- null, null, null, null, _testAzdoBuildId, null, _testAzdoRepoUri, _testBuildBranch, _testBuildCommit, false,
- VersionTools.BuildManifest.Model.PublishingInfraVersion.Latest,
- true);
+ null, null, null, null, _testAzdoBuildId, null, _testAzdoRepoUri, _testBuildBranch, _testBuildCommit,
+ _testRepoOrigin, false, VersionTools.BuildManifest.Model.PublishingInfraVersion.Latest, true);
act.Should().Throw();
}
@@ -126,9 +126,8 @@ public void ManifestArtifactParsingTest()
};
var model = _buildModelFactory.CreateModelFromItems(artifacts, null,
- null, null, null, null, _testAzdoBuildId, _defaultManifestBuildData, _testAzdoRepoUri, _testBuildBranch, _testBuildCommit, false,
- VersionTools.BuildManifest.Model.PublishingInfraVersion.Latest,
- true);
+ null, null, null, null, _testAzdoBuildId, _defaultManifestBuildData, _testAzdoRepoUri, _testBuildBranch, _testBuildCommit,
+ _testRepoOrigin, false, VersionTools.BuildManifest.Model.PublishingInfraVersion.Latest, true);
_taskLoggingHelper.HasLoggedErrors.Should().BeFalse();
// When Maestro sees a symbol package, it is supposed to re-do the symbol package path to
@@ -141,6 +140,7 @@ public void ManifestArtifactParsingTest()
blob.Attributes.Should().Contain("NonShipping", "true");
blob.Attributes.Should().Contain("Category", "SMORKELER");
blob.Attributes.Should().Contain("Id", bobSymbolsExpectedId);
+ blob.Attributes.Should().Contain("RepoOrigin", _testRepoOrigin);
},
blob =>
{
@@ -149,6 +149,7 @@ public void ManifestArtifactParsingTest()
blob.Attributes.Should().Contain("NonShipping", "false");
blob.Attributes.Should().Contain("Category", "SNORPKEG");
blob.Attributes.Should().Contain("Id", bopSnupkgExpectedId);
+ blob.Attributes.Should().Contain("RepoOrigin", _testRepoOrigin);
},
blob =>
{
@@ -156,6 +157,7 @@ public void ManifestArtifactParsingTest()
blob.NonShipping.Should().BeFalse();
blob.Attributes.Should().Contain("ARandomBitOfMAD", string.Empty);
blob.Attributes.Should().Contain("Id", zipArtifact);
+ blob.Attributes.Should().Contain("RepoOrigin", _testRepoOrigin);
});
model.Artifacts.Packages.Should().SatisfyRespectively(
@@ -167,6 +169,7 @@ public void ManifestArtifactParsingTest()
package.Attributes.Should().Contain("ShouldWePushDaNorpKeg", "YES");
package.Attributes.Should().Contain("Id", "test-package-a");
package.Attributes.Should().Contain("Version", "1.0.0");
+ package.Attributes.Should().Contain("RepoOrigin", _testRepoOrigin);
});
model.Identity.Attributes.Should().Contain("AzureDevOpsRepository", _normalizedTestAzdoRepoUri);
@@ -189,9 +192,8 @@ public void ArtifactMetadataIsCaseInsensitive()
};
var model = _buildModelFactory.CreateModelFromItems(artifacts, null,
- null, null, null, null, _testAzdoBuildId, _defaultManifestBuildData, _testAzdoRepoUri, _testBuildBranch, _testBuildCommit, false,
- VersionTools.BuildManifest.Model.PublishingInfraVersion.Latest,
- true);
+ null, null, null, null, _testAzdoBuildId, _defaultManifestBuildData, _testAzdoRepoUri, _testBuildBranch, _testBuildCommit,
+ _testRepoOrigin, false, VersionTools.BuildManifest.Model.PublishingInfraVersion.Latest, true);
model.Artifacts.Blobs.Should().BeEmpty();
model.Artifacts.Packages.Should().SatisfyRespectively(
@@ -205,6 +207,7 @@ public void ArtifactMetadataIsCaseInsensitive()
package.Attributes.Should().Contain("Category", "CASE");
package.Attributes.Should().Contain("Id", "test-package-a");
package.Attributes.Should().Contain("Version", "1.0.0");
+ package.Attributes.Should().Contain("RepoOrigin", _testRepoOrigin);
});
}
@@ -228,9 +231,8 @@ public void BlobsWithoutARelativeBlobPathIsInvalid()
};
_buildModelFactory.CreateModelFromItems(artifacts, null,
- null, null, null, null, _testAzdoBuildId, _defaultManifestBuildData, _testAzdoRepoUri, _testBuildBranch, _testBuildCommit, false,
- VersionTools.BuildManifest.Model.PublishingInfraVersion.Latest,
- true);
+ null, null, null, null, _testAzdoBuildId, _defaultManifestBuildData, _testAzdoRepoUri, _testBuildBranch, _testBuildCommit,
+ _testRepoOrigin, false, VersionTools.BuildManifest.Model.PublishingInfraVersion.Latest, true);
_taskLoggingHelper.HasLoggedErrors.Should().BeTrue();
_buildEngine.BuildErrorEvents.Should().Contain(e => e.Message.Equals($"Missing 'RelativeBlobPath' property on blob {zipArtifact}"));
@@ -253,9 +255,8 @@ public void MissingLocationInformationThrowsError()
};
_buildModelFactory.CreateModelFromItems(artifacts, null,
- null, null, null, null, _testAzdoBuildId, null, _testAzdoRepoUri, _testBuildBranch, _testBuildCommit, false,
- VersionTools.BuildManifest.Model.PublishingInfraVersion.Latest,
- true);
+ null, null, null, null, _testAzdoBuildId, null, _testAzdoRepoUri, _testBuildBranch, _testBuildCommit,
+ _testRepoOrigin, false, VersionTools.BuildManifest.Model.PublishingInfraVersion.Latest, true);
// Should have logged an error that an initial location was not present.
_taskLoggingHelper.HasLoggedErrors.Should().BeTrue();
@@ -287,9 +288,8 @@ public void InitialLocationInformationAttributesAreAccepted(string attributeName
};
var model = _buildModelFactory.CreateModelFromItems(artifacts, null,
- null, null, null, null, _testAzdoBuildId, manifestBuildData, _testAzdoRepoUri, _testBuildBranch, _testBuildCommit, false,
- VersionTools.BuildManifest.Model.PublishingInfraVersion.Latest,
- true);
+ null, null, null, null, _testAzdoBuildId, manifestBuildData, _testAzdoRepoUri, _testBuildBranch, _testBuildCommit,
+ _testRepoOrigin, false, VersionTools.BuildManifest.Model.PublishingInfraVersion.Latest, true);
// Should have logged an error that an initial location was not present.
_taskLoggingHelper.HasLoggedErrors.Should().BeFalse();
@@ -409,7 +409,7 @@ public void RoundTripFromTaskItemsToFileToXml()
{
var modelFromItems = _buildModelFactory.CreateModelFromItems(artifacts, itemsToSign,
strongNameSignInfo, fileSignInfo, fileExtensionSignInfo, certificatesSignInfo, _testAzdoBuildId,
- _defaultManifestBuildData, _testAzdoRepoUri, _testBuildBranch, _testBuildCommit, true,
+ _defaultManifestBuildData, _testAzdoRepoUri, _testBuildBranch, _testBuildCommit, _testRepoOrigin, true,
VersionTools.BuildManifest.Model.PublishingInfraVersion.Latest,
false);
@@ -448,6 +448,7 @@ public void RoundTripFromTaskItemsToFileToXml()
blob.Attributes.Should().Contain("Id", bobSymbolsExpectedId);
blob.Attributes.Should().Contain("Category", "SMORKELER");
blob.Attributes.Should().Contain("NonShipping", "true");
+ blob.Attributes.Should().Contain("RepoOrigin", _testRepoOrigin);
},
blob =>
{
@@ -456,6 +457,7 @@ public void RoundTripFromTaskItemsToFileToXml()
blob.Attributes.Should().Contain("Id", bopSnupkgExpectedId);
blob.Attributes.Should().Contain("Category", "SNORPKEG");
blob.Attributes.Should().Contain("NonShipping", "false");
+ blob.Attributes.Should().Contain("RepoOrigin", _testRepoOrigin);
},
blob =>
{
@@ -463,6 +465,7 @@ public void RoundTripFromTaskItemsToFileToXml()
blob.NonShipping.Should().BeFalse();
blob.Attributes.Should().Contain("Id", zipArtifact);
blob.Attributes.Should().Contain("ARandomBitOfMAD", string.Empty);
+ blob.Attributes.Should().Contain("RepoOrigin", _testRepoOrigin);
});
modelFromFile.Artifacts.Packages.Should().SatisfyRespectively(
@@ -474,6 +477,7 @@ public void RoundTripFromTaskItemsToFileToXml()
package.Attributes.Should().Contain("Id", "test-package-a");
package.Attributes.Should().Contain("Version", "1.0.0");
package.Attributes.Should().Contain("ShouldWePushDaNorpKeg", "YES");
+ package.Attributes.Should().Contain("RepoOrigin", _testRepoOrigin);
});
modelFromFile.SigningInformation.Should().NotBeNull();
@@ -562,8 +566,8 @@ public void NoSigningInformationDoesNotThrowAnError()
};
var model = _buildModelFactory.CreateModelFromItems(artifacts, null,
- null, null, null, null, _testAzdoBuildId, _defaultManifestBuildData, _testAzdoRepoUri, _testBuildBranch, _testBuildCommit, false,
- VersionTools.BuildManifest.Model.PublishingInfraVersion.Latest,
+ null, null, null, null, _testAzdoBuildId, _defaultManifestBuildData, _testAzdoRepoUri, _testBuildBranch, _testBuildCommit,
+ _testRepoOrigin, false, VersionTools.BuildManifest.Model.PublishingInfraVersion.Latest,
true);
_taskLoggingHelper.HasLoggedErrors.Should().BeFalse();
@@ -638,9 +642,8 @@ public void SignInfoIsCorrectlyPopulatedFromItems()
var model = _buildModelFactory.CreateModelFromItems(artifacts, itemsToSign,
strongNameSignInfo, fileSignInfo, fileExtensionSignInfo, certificatesSignInfo,
- _testAzdoBuildId, _defaultManifestBuildData, _testAzdoRepoUri, _testBuildBranch, _testBuildCommit, false,
- VersionTools.BuildManifest.Model.PublishingInfraVersion.Latest,
- true);
+ _testAzdoBuildId, _defaultManifestBuildData, _testAzdoRepoUri, _testBuildBranch, _testBuildCommit,
+ _testRepoOrigin, false, VersionTools.BuildManifest.Model.PublishingInfraVersion.Latest, true);
_taskLoggingHelper.HasLoggedErrors.Should().BeFalse();
model.SigningInformation.Should().NotBeNull();
@@ -713,9 +716,8 @@ public void ArtifactToSignMustExistInArtifacts()
var model = _buildModelFactory.CreateModelFromItems(artifacts, itemsToSign,
null, null, null, null,
- _testAzdoBuildId, _defaultManifestBuildData, _testAzdoRepoUri, _testBuildBranch, _testBuildCommit, false,
- VersionTools.BuildManifest.Model.PublishingInfraVersion.Latest,
- true);
+ _testAzdoBuildId, _defaultManifestBuildData, _testAzdoRepoUri, _testBuildBranch, _testBuildCommit,
+ _testRepoOrigin, false, VersionTools.BuildManifest.Model.PublishingInfraVersion.Latest, true);
_taskLoggingHelper.HasLoggedErrors.Should().BeTrue();
_buildEngine.BuildErrorEvents.Should().HaveCount(1);
diff --git a/src/Microsoft.DotNet.Build.Tasks.Feed/src/BlobArtifactModelFactory.cs b/src/Microsoft.DotNet.Build.Tasks.Feed/src/BlobArtifactModelFactory.cs
index 7cc2792b5d3..6f0d3d954ed 100644
--- a/src/Microsoft.DotNet.Build.Tasks.Feed/src/BlobArtifactModelFactory.cs
+++ b/src/Microsoft.DotNet.Build.Tasks.Feed/src/BlobArtifactModelFactory.cs
@@ -9,7 +9,7 @@ namespace Microsoft.DotNet.Build.Tasks.Feed
{
public interface IBlobArtifactModelFactory
{
- BlobArtifactModel CreateBlobArtifactModel(ITaskItem item);
+ BlobArtifactModel CreateBlobArtifactModel(ITaskItem item, string repoOrigin);
}
public class BlobArtifactModelFactory : IBlobArtifactModelFactory
@@ -22,7 +22,7 @@ public BlobArtifactModelFactory(TaskLoggingHelper logger)
}
///
- /// Creates a BlobArtifactModel based on the datat in the ITaskItem provided. Logs errors that may occur,
+ /// Creates a BlobArtifactModel based on the data in the ITaskItem provided. Logs errors that may occur,
/// but does not prevent the creation of the BlobArtifactModel. Errors do not prevent the creation because
/// we want to allow for the capture of all errors that may occur and report back all to the user so they can
/// mitigate all the errors found instead of one at a time, which would require continual re-runs of this code
@@ -31,7 +31,7 @@ public BlobArtifactModelFactory(TaskLoggingHelper logger)
///
///
///
- public BlobArtifactModel CreateBlobArtifactModel(ITaskItem item)
+ public BlobArtifactModel CreateBlobArtifactModel(ITaskItem item, string repoOrigin)
{
string path = item.GetMetadata("RelativeBlobPath");
if (string.IsNullOrEmpty(path))
@@ -42,7 +42,8 @@ public BlobArtifactModel CreateBlobArtifactModel(ITaskItem item)
return new BlobArtifactModel
{
Attributes = MSBuildListSplitter.GetNamedProperties(item.GetMetadata("ManifestArtifactData")),
- Id = path
+ Id = path,
+ RepoOrigin = repoOrigin
};
}
}
diff --git a/src/Microsoft.DotNet.Build.Tasks.Feed/src/BuildModelFactory.cs b/src/Microsoft.DotNet.Build.Tasks.Feed/src/BuildModelFactory.cs
index e72224383c5..30bc74a87f7 100644
--- a/src/Microsoft.DotNet.Build.Tasks.Feed/src/BuildModelFactory.cs
+++ b/src/Microsoft.DotNet.Build.Tasks.Feed/src/BuildModelFactory.cs
@@ -42,6 +42,7 @@ public interface IBuildModelFactory
string repoUri,
string repoBranch,
string repoCommit,
+ string repoOrigin,
bool isStableBuild,
PublishingInfraVersion publishingVersion,
bool isReleaseOnlyPackageVersion);
@@ -137,6 +138,7 @@ public class BuildModelFactory : IBuildModelFactory
string repoUri,
string repoBranch,
string repoCommit,
+ string repoOrigin,
bool isStableBuild,
PublishingInfraVersion publishingVersion,
bool isReleaseOnlyPackageVersion)
@@ -160,7 +162,7 @@ public class BuildModelFactory : IBuildModelFactory
if (artifact.ItemSpec.EndsWith(".nupkg", StringComparison.OrdinalIgnoreCase) && !isSymbolsPackage)
{
- packageArtifacts.Add(_packageArtifactModelFactory.CreatePackageArtifactModel(artifact));
+ packageArtifacts.Add(_packageArtifactModelFactory.CreatePackageArtifactModel(artifact, repoOrigin));
}
else
{
@@ -170,7 +172,7 @@ public class BuildModelFactory : IBuildModelFactory
artifact.SetMetadata("RelativeBlobPath", $"{AssetsVirtualDir}symbols/{fileName}");
}
- blobArtifacts.Add(_blobArtifactModelFactory.CreateBlobArtifactModel(artifact));
+ blobArtifacts.Add(_blobArtifactModelFactory.CreateBlobArtifactModel(artifact, repoOrigin));
}
}
diff --git a/src/Microsoft.DotNet.Build.Tasks.Feed/src/GenerateBuildManifest.cs b/src/Microsoft.DotNet.Build.Tasks.Feed/src/GenerateBuildManifest.cs
index dfde5dc1bf9..565717b542e 100644
--- a/src/Microsoft.DotNet.Build.Tasks.Feed/src/GenerateBuildManifest.cs
+++ b/src/Microsoft.DotNet.Build.Tasks.Feed/src/GenerateBuildManifest.cs
@@ -81,6 +81,12 @@ public class GenerateBuildManifest : MSBuildTaskBase
///
public string RepoCommit { get; set; }
+ ///
+ /// Indicates the source of the artifacts. For a VMR build, the repository name is dotnet/dotnet,
+ /// while the repository origin name corresponds to the actual product repository.
+ ///
+ public string RepoOrigin { get; set; }
+
///
/// Is this manifest for a stable build?
///
@@ -136,6 +142,7 @@ public override void ConfigureServices(IServiceCollection collection)
RepoUri,
RepoBranch,
RepoCommit,
+ RepoOrigin,
IsStableBuild,
targetPublishingVersion,
IsReleaseOnlyPackageVersion);
diff --git a/src/Microsoft.DotNet.Build.Tasks.Feed/src/PackageArtifactModelFactory.cs b/src/Microsoft.DotNet.Build.Tasks.Feed/src/PackageArtifactModelFactory.cs
index 5dbd245b344..cd7d95546a9 100644
--- a/src/Microsoft.DotNet.Build.Tasks.Feed/src/PackageArtifactModelFactory.cs
+++ b/src/Microsoft.DotNet.Build.Tasks.Feed/src/PackageArtifactModelFactory.cs
@@ -10,7 +10,7 @@ namespace Microsoft.DotNet.Build.Tasks.Feed
{
public interface IPackageArtifactModelFactory
{
- PackageArtifactModel CreatePackageArtifactModel(ITaskItem item);
+ PackageArtifactModel CreatePackageArtifactModel(ITaskItem item, string repoOrigin);
}
public class PackageArtifactModelFactory : IPackageArtifactModelFactory
@@ -25,7 +25,7 @@ public class PackageArtifactModelFactory : IPackageArtifactModelFactory
_log = logger;
}
- public PackageArtifactModel CreatePackageArtifactModel(ITaskItem item)
+ public PackageArtifactModel CreatePackageArtifactModel(ITaskItem item, string repoOrigin)
{
_log.LogMessage($"Creating NupkgInfo based on '{item.ItemSpec}'");
@@ -35,7 +35,8 @@ public PackageArtifactModel CreatePackageArtifactModel(ITaskItem item)
{
Attributes = MSBuildListSplitter.GetNamedProperties(item.GetMetadata("ManifestArtifactData")),
Id = info.Id,
- Version = info.Version
+ Version = info.Version,
+ RepoOrigin = repoOrigin
};
}
}
diff --git a/src/Microsoft.DotNet.Build.Tasks.Feed/src/PushToBuildStorage.cs b/src/Microsoft.DotNet.Build.Tasks.Feed/src/PushToBuildStorage.cs
index 05c853c7564..af0863d07bb 100644
--- a/src/Microsoft.DotNet.Build.Tasks.Feed/src/PushToBuildStorage.cs
+++ b/src/Microsoft.DotNet.Build.Tasks.Feed/src/PushToBuildStorage.cs
@@ -34,6 +34,12 @@ public class PushToBuildStorage : MSBuildTaskBase
public string ManifestCommit { get; set; }
+ ///
+ /// Indicates the source of the artifacts. For a VMR build, the `ManifestRepoName` is dotnet/dotnet,
+ /// while the `ManifestRepoOrigin` corresponds to the actual product repository.
+ ///
+ public string ManifestRepoOrigin { get; set; }
+
public string[] ManifestBuildData { get; set; }
public string AzureDevOpsCollectionUri { get; set; }
@@ -140,7 +146,7 @@ public override void ConfigureServices(IServiceCollection collection)
{
// Act as if %(PublishFlatContainer) were true for all items.
blobArtifacts = itemsToPushNoExcludes
- .Select(i => blobArtifactModelFactory.CreateBlobArtifactModel(i));
+ .Select(i => blobArtifactModelFactory.CreateBlobArtifactModel(i, ManifestRepoOrigin));
foreach (var blobItem in itemsToPushNoExcludes)
{
if (!fileSystem.FileExists(blobItem.ItemSpec))
@@ -205,8 +211,11 @@ public override void ConfigureServices(IServiceCollection collection)
PushToLocalStorageOrAzDO(ItemType.BlobArtifact, blobItem);
}
- packageArtifacts = packageItems.Select(packageArtifactModelFactory.CreatePackageArtifactModel);
- blobArtifacts = blobItems.Select(i => blobArtifactModelFactory.CreateBlobArtifactModel(i)).Where(blob => blob != null);
+ packageArtifacts = packageItems.Select(
+ i => packageArtifactModelFactory.CreatePackageArtifactModel(i, ManifestRepoOrigin));
+ blobArtifacts = blobItems.Select(
+ i => blobArtifactModelFactory.CreateBlobArtifactModel(i, ManifestRepoOrigin))
+ .Where(blob => blob != null);
}
PublishingInfraVersion targetPublishingVersion = PublishingInfraVersion.Latest;
@@ -218,7 +227,7 @@ public override void ConfigureServices(IServiceCollection collection)
Log.LogError($"Could not parse publishing infra version '{PublishingVersion}'");
}
}
-
+
SigningInformationModel signingInformationModel = signingInformationModelFactory.CreateSigningInformationModelFromItems(
ItemsToSign, StrongNameSignInfo, FileSignInfo, FileExtensionSignInfo, CertificatesSignInfo, blobArtifacts, packageArtifacts);
diff --git a/src/VersionTools/Microsoft.DotNet.VersionTools/BuildManifest/Model/BlobArtifactModel.cs b/src/VersionTools/Microsoft.DotNet.VersionTools/BuildManifest/Model/BlobArtifactModel.cs
index a87f99b950c..67ee68522bf 100644
--- a/src/VersionTools/Microsoft.DotNet.VersionTools/BuildManifest/Model/BlobArtifactModel.cs
+++ b/src/VersionTools/Microsoft.DotNet.VersionTools/BuildManifest/Model/BlobArtifactModel.cs
@@ -37,6 +37,12 @@ public bool NonShipping
}
}
+ public string RepoOrigin
+ {
+ get => Attributes.GetOrDefault(nameof(RepoOrigin));
+ set => Attributes[nameof(RepoOrigin)] = value;
+ }
+
public override string ToString() => $"Blob {Id}";
public override bool Equals(object obj)
diff --git a/src/VersionTools/Microsoft.DotNet.VersionTools/BuildManifest/Model/PackageArtifactModel.cs b/src/VersionTools/Microsoft.DotNet.VersionTools/BuildManifest/Model/PackageArtifactModel.cs
index 6112a099114..d135f054f26 100644
--- a/src/VersionTools/Microsoft.DotNet.VersionTools/BuildManifest/Model/PackageArtifactModel.cs
+++ b/src/VersionTools/Microsoft.DotNet.VersionTools/BuildManifest/Model/PackageArtifactModel.cs
@@ -55,6 +55,12 @@ public bool NonShipping
}
}
+ public string RepoOrigin
+ {
+ get => Attributes.GetOrDefault(nameof(RepoOrigin));
+ set => Attributes[nameof(RepoOrigin)] = value;
+ }
+
public override string ToString() => $"Package {Id} {Version}";
public override bool Equals(object obj)