-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Include versions and checksums in VMR publishing and remove prepare-artifacts.proj #100004
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from all commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
684ff76
Include versions and checksums in VMR publishing
ViktorHofer df52116
Create AfterSigning.targets
ViktorHofer 98f0bb6
Update Publishing.props
ViktorHofer 8ec942d
Update Publishing.props
ViktorHofer be3b37b
Update Publishing.props
ViktorHofer 3e78558
Update Publishing.props
ViktorHofer 65660ec
Update Signing.props
ViktorHofer 5f3d52a
Clean-up and fixes
ViktorHofer 020baf9
Merge branch 'ViktorHofer-patch-1' of https://github.com/dotnet/runti…
ViktorHofer b3fe52e
style nit
ViktorHofer f35ffde
Remove prepare-artifacts.proj
ViktorHofer File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,39 +1,193 @@ | ||
| <Project> | ||
| <Project InitialTargets="ValidateDownloadedAssets"> | ||
|
|
||
| <PropertyGroup> | ||
| <ProducesDotNetReleaseShippingAssets>true</ProducesDotNetReleaseShippingAssets> | ||
| <!-- This avoids creating VS.*.symbols.nupkg packages that are identical to the original package. --> | ||
| <AutoGenerateSymbolPackages>false</AutoGenerateSymbolPackages> | ||
| <!-- Set PlatformName to TargetArchitecture to create unique build manifest files. --> | ||
| <PlatformName Condition="'$(TargetArchitecture)' != ''">$(TargetArchitecture)</PlatformName> | ||
| </PropertyGroup> | ||
|
|
||
| <!-- Include installer archives and packages which aren't globbed by default. | ||
| Don't include Symbols archive as it is already included in Arcade's Publish.proj, with correct blob path. --> | ||
| <Target Name="PublishRuntimeInstallers" | ||
| BeforeTargets="BeforePublish" | ||
| Condition="'$(DotNetBuildRepo)' == 'true'"> | ||
| <!-- Retrieve runtime's runtime pack product version. | ||
| <!-- | ||
| Look through the downloaded artifacts to figure out how to ship them. Creates item groups for | ||
| other types of publishing to use. | ||
|
|
||
| DownloadDirectory is expected to have some directory inside, which then contains a dir for each | ||
| build job name. For example, this nupkg would be found: | ||
|
|
||
| $(DownloadDirectory)IntermediateArtifacts\windows_x64\Shipping\a.nupkg | ||
| --> | ||
| <ItemGroup Condition="'$(SignAndPublishAsJoinPoint)' == 'true'"> | ||
| <DownloadedArtifactFile Include="$(DownloadDirectory)**" /> | ||
| <DownloadedSymbolNupkgFile Include="$(DownloadDirectory)**\*.symbols.nupkg" /> | ||
| <DownloadedWixPdbFile Include="$(DownloadDirectory)**\*.wixpdb" /> | ||
| <DownloadedWixpackFile Include="$(DownloadDirectory)**\*.wixpack.zip" Condition="'$(PostBuildSign)' != 'true'" /> | ||
| <DownloadedWorkloadsVSInsertionFile Include="$(DownloadDirectory)*\workloads-vs\**\*" /> | ||
| <DownloadedNupkgFile Include="$(DownloadDirectory)**\*.nupkg" Exclude="@(DownloadedSymbolNupkgFile)" /> | ||
|
|
||
| <!-- Exclude symbol packages from have a NuGet signature. These are never pushed to NuGet.org or | ||
| other feeds (in fact, that have identical identity to their non-symbol variant) --> | ||
| <DownloadedSymbolPackagesWithoutPaths Include="@(DownloadedSymbolNupkgFile->'%(Filename)%(Extension)')" /> | ||
| <FileSignInfo Include="@(DownloadedSymbolPackagesWithoutPaths->Distinct())" CertificateName="None" /> | ||
|
|
||
| <!-- Add files that are not affected by filtering and create checksum for them. --> | ||
| <UploadToBlobStorageFile | ||
| Include="@(DownloadedArtifactFile)" | ||
| Exclude="@(DownloadedSymbolNupkgFile); | ||
| @(DownloadedNupkgFile); | ||
| @(DownloadedWixPdbFile); | ||
| @(DownloadedWorkloadsVSInsertionFile); | ||
| @(DownloadedWixpackFile)" /> | ||
|
|
||
| <!-- | ||
| Filter out the RID-specific (Runtime) nupkgs and RID-agnostic nupkgs. RID-specific packages | ||
| are published from every job. RID-agnostic nupkgs are built with the same ID/version by | ||
| every job, so one specific job's outputs must be picked to sign and publish. | ||
| --> | ||
|
|
||
| <!-- RID-specific framework packs. --> | ||
| <RuntimeNupkgFile | ||
| Include=" | ||
| $(DownloadDirectory)**\Microsoft.*.Runtime.*.nupkg; | ||
| $(DownloadDirectory)**\Microsoft.*.App.Host.*.nupkg; | ||
| $(DownloadDirectory)**\Microsoft.*.App.Crossgen2.*.nupkg" | ||
| Exclude="@(DownloadedSymbolNupkgFile)" /> | ||
|
|
||
| <!-- VS insertion packages, carrying RID-specific installers. --> | ||
| <RuntimeNupkgFile | ||
| Include="$(DownloadDirectory)**\VS.Redist.Common.*.nupkg" | ||
| Exclude="@(DownloadedSymbolNupkgFile)" /> | ||
|
|
||
| <!-- | ||
| Workloads VS insertion artifacts produced by src/workloads/workloads.csproj. Only grab | ||
| the zip artifacts as they're grouped by SDK feature band which correlates with specific VS versions. | ||
| --> | ||
| <WorkloadsVSInsertionFile Include="$(DownloadDirectory)*\workloads-vs\**\*.zip" /> | ||
|
|
||
| <!-- | ||
| Runtime packages associated with some identity packages. Need to exclude "runtime.native.*" | ||
| because Libraries produces some "runtime.native.Foo" packages with | ||
| "runtime.<rid>.runtime.native.Foo" identity packages. | ||
| --> | ||
| <RuntimeNupkgFile | ||
| Include="$(DownloadDirectory)**\runtime.*.nupkg" | ||
| Exclude=" | ||
| $(DownloadDirectory)**\runtime.native.*.nupkg; | ||
| @(DownloadedSymbolNupkgFile)" /> | ||
|
|
||
| <!-- | ||
| Packages that aren't matched above as RID-specific are considered RID-agnostic. Also include | ||
| the AllConfigurations packages from the Libraries build. | ||
| --> | ||
| <RidAgnosticNupkgToPublishFile | ||
| Include=" | ||
| $(DownloadDirectory)**\Microsoft.NET.Workload.Mono.Toolchain.*Manifest-*.nupkg; | ||
| $(DownloadDirectory)**\Microsoft.NET.Sdk.WebAssembly.Pack.*.nupkg; | ||
| $(DownloadDirectory)*\$(PublishRidAgnosticPackagesFromPlatform)\**\*.nupkg; | ||
| $(DownloadDirectory)*\*AllConfigurations\**\*.nupkg" | ||
| Exclude="@(RuntimeNupkgFile);@(DownloadedSymbolNupkgFile)" /> | ||
|
|
||
| <TransportPackagesToPublishFile | ||
| Include="$(DownloadDirectory)**\*Transport*.nupkg" | ||
| Exclude="@(RuntimeNupkgFile);@(RidAgnosticNupkgToPublishFile);@(DownloadedSymbolNupkgFile)" /> | ||
|
|
||
| <NupkgToPublishFile Include="@(RuntimeNupkgFile);@(RidAgnosticNupkgToPublishFile);@(TransportPackagesToPublishFile)" /> | ||
|
|
||
| <!-- | ||
| Assuming all symbol packages ship and can be found by turning .nupkg => .symbols.nupkg, find | ||
| them. Don't check for missing symbol packages here: some nupkgs don't have them for valid | ||
| reasons, such as the VS insertion packages that transport MSIs. Symbol package validation | ||
| will check for symbol completeness with file-by-file granularity rather than looking for | ||
| missing symbols.nupkg files: https://github.com/dotnet/arcade/issues/2499. | ||
|
|
||
| Handles several conventions: | ||
| * NonShipping packages have symbol nupkgs that are Shipping. | ||
| * Shipping packages have symbol packages in a "symbols" subdirectory. | ||
| --> | ||
| <PotentialSymbolNupkgToPublishFile | ||
| Include=" | ||
| @(NupkgToPublishFile->Replace('\NonShipping\', '\Shipping\')->Replace('.nupkg', '.symbols.nupkg')); | ||
| @(NupkgToPublishFile->Replace('\NonShipping\', '\NonShipping\symbols\')->Replace('.nupkg', '.symbols.nupkg')); | ||
| @(NupkgToPublishFile->Replace('\Shipping\', '\Shipping\symbols\')->Replace('.nupkg', '.symbols.nupkg'))" /> | ||
|
|
||
| <SymbolNupkgToPublishFile Include="@(PotentialSymbolNupkgToPublishFile->Distinct())" Condition="Exists('%(Identity)')" /> | ||
|
|
||
| <!-- Packages --> | ||
| <Artifact Include="@(NupkgToPublishFile)" | ||
| IsShipping="$([System.String]::new('%(Identity)').Contains('\Shipping\'))" | ||
| PublishFlatContainer="false" /> | ||
| <Artifact Include="@(SymbolNupkgToPublishFile)" PublishFlatContainer="false" /> | ||
|
|
||
| <!-- Blob storage --> | ||
| <Artifact Include="@(UploadToBlobStorageFile)" | ||
| Exclude="@(NupkgToPublishFile);@(SymbolNupkgToPublishFile)" | ||
| IsShipping="$([System.String]::new('%(Identity)').Contains('\Shipping\'))" | ||
| ChecksumPath="%(FullPath).sha512" /> | ||
| <Artifact Include="@(WorkloadsVSInsertionFile)" | ||
| SubBlobFolder="workloads/" | ||
| IsShipping="$([System.String]::new('%(Identity)').Contains('\Shipping\'))" /> | ||
| </ItemGroup> | ||
|
|
||
| <Target Name="GetNonStableProductVersion"> | ||
| <!-- Retrieve the non-stable runtime pack product version. | ||
| Don't stabilize the package version in order to retrieve the VersionSuffix. --> | ||
| <MSBuild Projects="$(RepoRoot)src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Runtime.sfxproj" | ||
| Targets="ReturnProductVersion" | ||
| Properties="IsShipping=false; | ||
| Crossgen2SdkOverridePropsPath=; | ||
| Crossgen2SdkOverrideTargetsPath="> | ||
| <Output TaskParameter="TargetOutputs" PropertyName="RuntimeRuntimePackProductVersion" /> | ||
| <Output TaskParameter="TargetOutputs" PropertyName="NonStableProductVersion" /> | ||
| </MSBuild> | ||
| </Target> | ||
|
|
||
| <Target Name="GenerateProductVersionFiles" | ||
| DependsOnTargets="GetNonStableProductVersion" | ||
| BeforeTargets="PublishToAzureDevOpsArtifacts"> | ||
| <!-- Retrieve the runtime pack product version. --> | ||
| <MSBuild Projects="$(RepoRoot)src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Runtime.sfxproj" | ||
| Targets="ReturnProductVersion" | ||
| Properties="Crossgen2SdkOverridePropsPath=; | ||
| Crossgen2SdkOverrideTargetsPath="> | ||
| <Output TaskParameter="TargetOutputs" PropertyName="ProductVersionForVersionsFile" /> | ||
| </MSBuild> | ||
|
|
||
| <ItemGroup> | ||
| <InstallerToPublish Include="$(ArtifactsPackagesDir)**\*.tar.gz; | ||
| $(ArtifactsPackagesDir)**\*.zip; | ||
| $(ArtifactsPackagesDir)**\*.deb; | ||
| $(ArtifactsPackagesDir)**\*.rpm; | ||
| $(ArtifactsPackagesDir)**\*.pkg; | ||
| $(ArtifactsPackagesDir)**\*.exe; | ||
| $(ArtifactsPackagesDir)**\*.msi" | ||
| Exclude="$(ArtifactsPackagesDir)**\Symbols.runtime.tar.gz" /> | ||
|
|
||
| <ItemsToPushToBlobFeed Include="@(InstallerToPublish)" | ||
| IsShipping="$([System.String]::Copy('%(RecursiveDir)').StartsWith('Shipping'))" | ||
| PublishFlatContainer="true" | ||
| RelativeBlobPath="Runtime/$(RuntimeRuntimePackProductVersion)/%(Filename)%(Extension)" /> | ||
| <ProductVersionFile Include="$(ArtifactsShippingPackagesDir)productVersion.txt" /> | ||
| <ProductVersionFile Include="$(ArtifactsShippingPackagesDir)runtime-productVersion.txt" /> | ||
| </ItemGroup> | ||
|
|
||
| <!-- Generate productVersion.txt file containing the product version. --> | ||
| <WriteLinesToFile File="%(ProductVersionFile.Identity)" | ||
| Lines="$(ProductVersionForVersionsFile)" | ||
| Overwrite="true" | ||
| Encoding="ASCII" /> | ||
|
|
||
| <ItemGroup> | ||
| <Artifact Include="@(ProductVersionFile)" | ||
| RelativeBlobPath="Runtime/$(NonStableProductVersion)/%(Filename)%(Extension)" /> | ||
| </ItemGroup> | ||
| </Target> | ||
|
|
||
| <Target Name="AddRelativeBlobPathToInstallerArtifacts" | ||
| DependsOnTargets="GetNonStableProductVersion" | ||
| BeforeTargets="PublishToAzureDevOpsArtifacts" | ||
| AfterTargets="GenerateChecksumsFromArtifacts"> | ||
| <ItemGroup> | ||
| <Artifact Condition="'%(Artifact.PublishFlatContainer)' == 'true' and '%(Artifact.RelativeBlobPath)' == ''" | ||
| RelativeBlobPath="Runtime/$(NonStableProductVersion)/%(Artifact.SubBlobFolder)%(Filename)%(Extension)" /> | ||
| </ItemGroup> | ||
| </Target> | ||
|
|
||
| <Target Name="ValidateDownloadedAssets" Condition="'$(SignAndPublishAsJoinPoint)' == 'true'"> | ||
| <Error Condition="'@(SymbolNupkgToPublishFile)' == ''" Text="No symbol packages found." /> | ||
|
|
||
| <!-- | ||
| Duplicate RuntimeNupkgFile items mean artifact upload will fail, but only after another hour | ||
| of signing. Detect this early. It's possible to automatically "fix" this with Distinct(), | ||
| however the patterns should be fairly specific: this is likely a build infra mistake that | ||
| should be corrected. | ||
| --> | ||
| <Error Text="Duplicate RuntimeNupkgFile entries for: %(RuntimeNupkgFile.Identity)" Condition="@(RuntimeNupkgFile->Count()) > 1" /> | ||
| </Target> | ||
|
|
||
| </Project> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.