Skip to content

Commit e176707

Browse files
PGO artifacts are vertical visibility by default except for dotnet-sdk-pgo-* (#46063)
Co-authored-by: Viktor Hofer <[email protected]>
1 parent 7f0aeb7 commit e176707

File tree

4 files changed

+121
-41
lines changed

4 files changed

+121
-41
lines changed

eng/Publishing.props

Lines changed: 57 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,13 @@
4747
<ManifestBuildData Include="AzureDevOpsBranch=$(BUILD_SOURCEBRANCH)" />
4848
</ItemGroup>
4949

50+
<!-- The PGO sdk should always have External visibility, even if someone changes the default artifact visibility -->
5051
<ItemGroup>
51-
<ToolsetAssetsToPublish Include="$(ArtifactsNonShippingPackagesDir)dotnet-toolset*.zip" />
52+
<Artifact Update="$(ArtifactsShippingPackagesDir)/dotnet-sdk-pgo-*" Visibility="External" />
53+
</ItemGroup>
54+
55+
<ItemGroup>
56+
<ToolsetAssetsToPublish Include="$(ArtifactsNonShippingPackagesDir)dotnet-toolset*.zip" Visibility="$(DefaultArtifactVisibility)" />
5257
</ItemGroup>
5358

5459
<!-- Include RID specific packages when globbing for default artifacts is disabled. -->
@@ -72,19 +77,15 @@
7277
To achieve this, we find the FSharp compiler package, then the stable or non-stable FSharp.Core and Compiler service
7378
package contained within, depending on the stability switch of the SDK. The SDK then treats these packages as its own outputs,
7479
which means they get automatically pushed on release day. -->
75-
<PropertyGroup>
76-
<PublishDependsOnTargets>$(PublishDependsOnTargets);_ResolvePublishFSharpNuGetPackages</PublishDependsOnTargets>
77-
</PropertyGroup>
78-
79-
<Target Name="_ResolvePublishFSharpNuGetPackages" Condition="'$(EnableDefaultArtifacts)' == 'true'">
80+
<Target Name="_ResolvePublishFSharpNuGetPackages" Condition="'$(EnableDefaultArtifacts)' == 'true'" BeforeTargets="BeforePublish">
8081
<PropertyGroup>
8182
<FSharpCorePath Condition="'$(DotNetFinalVersionKind)' != 'release'">Shipping</FSharpCorePath>
8283
<FSharpCorePath Condition="'$(DotNetFinalVersionKind)' == 'release'">Release</FSharpCorePath>
8384
</PropertyGroup>
8485
<ItemGroup>
8586
<FSharpPackagesToPush Include="$(NuGetPackageRoot)\Microsoft.FSharp.Compiler\$(MicrosoftFSharpCompilerPackageVersion)\contentFiles\$(FSharpCorePath)\FSharp.Core.*.nupkg" />
8687
<FSharpPackagesToPush Include="$(NuGetPackageRoot)\Microsoft.FSharp.Compiler\$(MicrosoftFSharpCompilerPackageVersion)\contentFiles\$(FSharpCorePath)\FSharp.Compiler.Service.*.nupkg" />
87-
<ItemsToPushToBlobFeed Include="@(FSharpPackagesToPush)" IsShipping="true" />
88+
<Artifact Include="@(FSharpPackagesToPush)" PublishFlatContainer="false" />
8889
</ItemGroup>
8990
</Target>
9091

@@ -94,6 +95,7 @@
9495
<ToolsetAssetsToPushToBlobFeed Include="@(ToolsetAssetsToPublish)"
9596
RelativeBlobPath="$(BlobStoragePartialRelativePath)/$(ToolsetVersionValue)/$([System.String]::Copy('%(Filename)%(Extension)').Replace('\' ,'/'))"
9697
IsShipping="false" />
98+
<ToolsetAssetsToPushToBlobFeed ManifestArtifactData="Visibility=%(Visibility)" />
9799
</ItemGroup>
98100

99101
<ItemGroup Condition="'$(PostBuildSign)' == 'true'">
@@ -126,7 +128,8 @@
126128
AssetsLocalStorageDir="$(SourceBuiltAssetsDir)"
127129
ShippingPackagesLocalStorageDir="$(SourceBuiltShippingPackagesDir)"
128130
NonShippingPackagesLocalStorageDir="$(SourceBuiltNonShippingPackagesDir)"
129-
AssetManifestsLocalStorageDir="$(SourceBuiltAssetManifestsDir)" />
131+
AssetManifestsLocalStorageDir="$(SourceBuiltAssetManifestsDir)"
132+
ArtifactVisibilitiesToPublish="@(ArtifactVisibilityToPublish)" />
130133
</Target>
131134

132135
<PropertyGroup>
@@ -144,37 +147,50 @@
144147
<InstallersAssetManifestFilePath>$(ArtifactsLogDir)AssetManifest\$(InstallersAssetManifestFileName).xml</InstallersAssetManifestFilePath>
145148
</PropertyGroup>
146149

147-
<ItemGroup>
148-
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)*.zip" Condition=" '$(PublishBinariesAndBadge)' == 'true' " />
149-
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)*.tar.gz" Condition=" '$(PublishBinariesAndBadge)' == 'true' " />
150-
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)*.pkg" />
151-
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)*.exe" />
152-
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)*.deb" />
153-
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)*.rpm" />
154-
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)*.msi" />
155-
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)*.cab" />
156-
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)*.svg" Condition=" '$(PublishBinariesAndBadge)' == 'true' " />
157-
<!-- Only publish this file from windows x64 so that we don't end up with duplicates -->
158-
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)productVersion.txt"
159-
Condition=" '$(PublishBinariesAndBadge)' == 'true' and '$(OS)' == 'Windows_NT' and '$(Architecture)' == 'x64' and '$(PgoInstrument)' != 'true'" />
160-
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)sdk-productVersion.txt"
161-
Condition=" '$(PublishBinariesAndBadge)' == 'true' and '$(OS)' == 'Windows_NT' and '$(Architecture)' == 'x64' and '$(PgoInstrument)' != 'true'" />
162-
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)productCommit-*.json" Condition=" '$(PublishBinariesAndBadge)' == 'true' " />
163-
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)productCommit-*.txt" Condition=" '$(PublishBinariesAndBadge)' == 'true' " />
164-
<SdkNonShippingAssetsToPublish Include="$(ArtifactsNonShippingPackagesDir)*.swr" />
165-
<SdkNonShippingAssetsToPublish Include="$(ArtifactsNonShippingPackagesDir)*.msi" />
166-
<SdkNonShippingAssetsToPublish Condition="'$(PublishBinariesAndBadge)' != 'false'" Include="$(ArtifactsNonShippingPackagesDir)*.tar.gz" />
167-
<!-- dotnet-toolset zips are published in the PublishToolsetAssets target. -->
168-
<SdkNonShippingAssetsToPublish Condition="'$(PublishBinariesAndBadge)' != 'false'" Include="$(ArtifactsNonShippingPackagesDir)*.zip" Exclude="$(ArtifactsNonShippingPackagesDir)dotnet-toolset*.zip" />
169-
<SdkNonShippingAssetsToPublish Include="$(ArtifactsNonShippingPackagesDir)*.pkg" />
170-
<CheckSumsToPublish Include="$(ArtifactsShippingPackagesDir)*.sha512" />
171-
<CheckSumsToPublish Remove="$(ArtifactsShippingPackagesDir)productCommit-*.json.sha512" Condition=" '$(PublishBinariesAndBadge)' == 'false' " />
172-
<CheckSumsToPublish Remove="$(ArtifactsShippingPackagesDir)productCommit-*.txt.sha512" Condition=" '$(PublishBinariesAndBadge)' == 'false' " />
173-
<CheckSumsToPublish Remove="$(ArtifactsShippingPackagesDir)productVersion.txt.sha512" Condition=" '$(OS)' != 'Windows_NT' or '$(Architecture)' != 'x64' " />
174-
<CheckSumsToPublish Remove="$(ArtifactsShippingPackagesDir)sdk-productVersion.txt.sha512" Condition=" '$(OS)' != 'Windows_NT' or '$(Architecture)' != 'x64' " />
175-
<CheckSumsToPublish Remove="$(ArtifactsShippingPackagesDir)*.zip.sha512" Condition=" '$(PublishBinariesAndBadge)' == 'false' " />
176-
<CheckSumsToPublish Remove="$(ArtifactsShippingPackagesDir)*.tar.gz.sha512" Condition=" '$(PublishBinariesAndBadge)' == 'false' " />
177-
</ItemGroup>
150+
<!-- When doing a PGO build in the VMR, only ship the SDK's PGO archives -->
151+
<Choose>
152+
<When Condition="'$(PgoInstrument)' == 'true' and '$(DotNetBuildOrchestrator)' == 'true'">
153+
<ItemGroup>
154+
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)/dotnet-sdk-pgo-*.zip" />
155+
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)/dotnet-sdk-pgo-*.tar.gz" />
156+
<CheckSumsToPublish Include="$(ArtifactsShippingPackagesDir)/dotnet-sdk-pgo-*.zip.sha512" />
157+
<CheckSumsToPublish Include="$(ArtifactsShippingPackagesDir)/dotnet-sdk-pgo-*.tar.gz.sha512" />
158+
</ItemGroup>
159+
</When>
160+
<Otherwise>
161+
<ItemGroup>
162+
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)*.zip" Condition=" '$(PublishBinariesAndBadge)' == 'true' " />
163+
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)*.tar.gz" Condition=" '$(PublishBinariesAndBadge)' == 'true' " />
164+
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)*.pkg" />
165+
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)*.exe" />
166+
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)*.deb" />
167+
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)*.rpm" />
168+
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)*.msi" />
169+
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)*.cab" />
170+
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)*.svg" Condition=" '$(PublishBinariesAndBadge)' == 'true' " />
171+
<!-- Only publish this file from windows x64 so that we don't end up with duplicates -->
172+
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)productVersion.txt"
173+
Condition=" '$(PublishBinariesAndBadge)' == 'true' and '$(OS)' == 'Windows_NT' and '$(Architecture)' == 'x64' and '$(PgoInstrument)' != 'true'" />
174+
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)sdk-productVersion.txt"
175+
Condition=" '$(PublishBinariesAndBadge)' == 'true' and '$(OS)' == 'Windows_NT' and '$(Architecture)' == 'x64' and '$(PgoInstrument)' != 'true'" />
176+
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)productCommit-*.json" Condition=" '$(PublishBinariesAndBadge)' == 'true' " />
177+
<SdkAssetsToPublish Include="$(ArtifactsShippingPackagesDir)productCommit-*.txt" Condition=" '$(PublishBinariesAndBadge)' == 'true' " />
178+
<SdkNonShippingAssetsToPublish Include="$(ArtifactsNonShippingPackagesDir)*.swr" />
179+
<SdkNonShippingAssetsToPublish Include="$(ArtifactsNonShippingPackagesDir)*.msi" />
180+
<SdkNonShippingAssetsToPublish Condition="'$(PublishBinariesAndBadge)' != 'false'" Include="$(ArtifactsNonShippingPackagesDir)*.tar.gz" />
181+
<!-- dotnet-toolset zips are published in the PublishToolsetAssets target. -->
182+
<SdkNonShippingAssetsToPublish Condition="'$(PublishBinariesAndBadge)' != 'false'" Include="$(ArtifactsNonShippingPackagesDir)*.zip" Exclude="$(ArtifactsNonShippingPackagesDir)dotnet-toolset*.zip" />
183+
<SdkNonShippingAssetsToPublish Include="$(ArtifactsNonShippingPackagesDir)*.pkg" />
184+
<CheckSumsToPublish Include="$(ArtifactsShippingPackagesDir)*.sha512" />
185+
<CheckSumsToPublish Remove="$(ArtifactsShippingPackagesDir)productCommit-*.json.sha512" Condition=" '$(PublishBinariesAndBadge)' == 'false' " />
186+
<CheckSumsToPublish Remove="$(ArtifactsShippingPackagesDir)productCommit-*.txt.sha512" Condition=" '$(PublishBinariesAndBadge)' == 'false' " />
187+
<CheckSumsToPublish Remove="$(ArtifactsShippingPackagesDir)productVersion.txt.sha512" Condition=" '$(OS)' != 'Windows_NT' or '$(Architecture)' != 'x64' " />
188+
<CheckSumsToPublish Remove="$(ArtifactsShippingPackagesDir)sdk-productVersion.txt.sha512" Condition=" '$(OS)' != 'Windows_NT' or '$(Architecture)' != 'x64' " />
189+
<CheckSumsToPublish Remove="$(ArtifactsShippingPackagesDir)*.zip.sha512" Condition=" '$(PublishBinariesAndBadge)' == 'false' " />
190+
<CheckSumsToPublish Remove="$(ArtifactsShippingPackagesDir)*.tar.gz.sha512" Condition=" '$(PublishBinariesAndBadge)' == 'false' " />
191+
</ItemGroup>
192+
</Otherwise>
193+
</Choose>
178194

179195
<!-- Publish the sdk and the checksums only in the initial build pass. -->
180196
<Target Name="PublishSdkAssetsAndChecksums"
@@ -238,7 +254,8 @@
238254
AssetsLocalStorageDir="$(SourceBuiltAssetsDir)"
239255
ShippingPackagesLocalStorageDir="$(SourceBuiltShippingPackagesDir)"
240256
NonShippingPackagesLocalStorageDir="$(SourceBuiltNonShippingPackagesDir)"
241-
AssetManifestsLocalStorageDir="$(SourceBuiltAssetManifestsDir)" />
257+
AssetManifestsLocalStorageDir="$(SourceBuiltAssetManifestsDir)"
258+
ArtifactVisibilitiesToPublish="@(ArtifactVisibilityToPublish)" />
242259
</Target>
243260

244261
</Project>

src/SourceBuild/content/eng/join-verticals.proj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<ItemGroup>
2424
<VerticalManifest
2525
Include="$(VerticalManifestsPath)\*.xml"
26-
Exclude="$(VerticalManifestsPath)\*Pgo*.xml;$(VerticalManifestsPath)\*Shortstack*.xml;$(VerticalManifestsPath)\*DevVersions*.xml" />
26+
Exclude="$(VerticalManifestsPath)\*Shortstack*.xml" />
2727
</ItemGroup>
2828

2929
<!-- AzureDevOpsToken shouldn't be set when running in dnceng-public -->

src/SourceBuild/content/repo-projects/Directory.Build.props

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@
9898
<BuildArgs>$(BuildArgs) /p:SourceBuiltAssetManifestsDir=$(RepoAssetManifestsDir)</BuildArgs>
9999
<BuildArgs Condition="'$(OfficialBuildId)' != ''">$(BuildArgs) /p:OfficialBuildId=$(OfficialBuildId)</BuildArgs>
100100
<BuildArgs Condition="'$(ForceDryRunSigning)' != ''">$(BuildArgs) /p:ForceDryRunSigning=$(ForceDryRunSigning)</BuildArgs>
101+
<!-- PGO assets by default are "Vertical" visibilty. Each repo will enable the specific artifacts it must publish externally -->
102+
<BuildArgs Condition="'$(PgoInstrument)' == 'true'">$(BuildArgs) /p:DefaultArtifactVisibility=Vertical</BuildArgs>
101103
</PropertyGroup>
102104

103105
<PropertyGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
From 62c4b5f114850d39efdca3df3b9ee83cc0f424ff Mon Sep 17 00:00:00 2001
2+
From: Jeremy Koritzinsky <[email protected]>
3+
Date: Tue, 21 Jan 2025 16:16:49 -0800
4+
Subject: [PATCH 1/2] Use the documented Artifact extension point to add
5+
artifacts
6+
7+
The Artifact extension point handles symbol packages automatically for source-build, and it automatically gets support for new features like Artifact Visibility (required for https://github.com/dotnet/sdk/pull/46063)
8+
Backport: https://github.com/NuGet/NuGet.Client/pull/6233
9+
---
10+
eng/Publishing.props | 11 +++--------
11+
1 file changed, 3 insertions(+), 8 deletions(-)
12+
13+
diff --git a/eng/Publishing.props b/eng/Publishing.props
14+
index 38810c73428..1175200dd59 100644
15+
--- a/eng/Publishing.props
16+
+++ b/eng/Publishing.props
17+
@@ -1,11 +1,6 @@
18+
<Project>
19+
-
20+
<ItemGroup>
21+
- <ItemsToPushToBlobFeed Include="$(ArtifactsDir)nupkgs/*.nupkg"
22+
- IsShipping="true"
23+
- UploadPathSegment="nuget-client" />
24+
- <_SymbolsPackages Include="$(ArtifactsDir)nupkgs/*.symbols.nupkg" />
25+
- <ItemsToPushToBlobFeed Remove="@(_SymbolsPackages)" Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
26+
+ <Artifact Include="$(ArtifactsDir)nupkgs/*.nupkg"
27+
+ IsShipping="true" />
28+
</ItemGroup>
29+
-
30+
-</Project>
31+
\ No newline at end of file
32+
+</Project>
33+
34+
From 9072cb03cb5c2958df318f59389547caa5de2c8a Mon Sep 17 00:00:00 2001
35+
From: Jeremy Koritzinsky <[email protected]>
36+
Date: Wed, 22 Jan 2025 10:07:47 -0800
37+
Subject: [PATCH 2/2] Formatting and PR feedback
38+
39+
---
40+
eng/Publishing.props | 14 ++++++++------
41+
1 file changed, 8 insertions(+), 6 deletions(-)
42+
43+
diff --git a/eng/Publishing.props b/eng/Publishing.props
44+
index 1175200dd59..41f498d4d4a 100644
45+
--- a/eng/Publishing.props
46+
+++ b/eng/Publishing.props
47+
@@ -1,6 +1,8 @@
48+
-<Project>
49+
- <ItemGroup>
50+
- <Artifact Include="$(ArtifactsDir)nupkgs/*.nupkg"
51+
- IsShipping="true" />
52+
- </ItemGroup>
53+
-</Project>
54+
+<Project>
55+
+
56+
+ <ItemGroup>
57+
+ <Artifact Include="$(ArtifactsDir)nupkgs/*.nupkg"
58+
+ PublishFlatContainer="false" />
59+
+ </ItemGroup>
60+
+
61+
+</Project>

0 commit comments

Comments
 (0)