diff --git a/Build.proj b/Build.proj index 2f687610b4a93a..0957ae6846e573 100644 --- a/Build.proj +++ b/Build.proj @@ -1,6 +1,6 @@ - + diff --git a/Directory.Build.props b/Directory.Build.props index ce5c6e9173bc81..2977184375269e 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -17,39 +17,8 @@ false - - <_hostOS>linux - <_hostOS Condition="$([MSBuild]::IsOSPlatform('OSX'))">osx - <_hostOS Condition="$([MSBuild]::IsOSPlatform('FREEBSD'))">freebsd - <_hostOS Condition="$([MSBuild]::IsOSPlatform('NETBSD'))">netbsd - <_hostOS Condition="$([MSBuild]::IsOSPlatform('ILLUMOS'))">illumos - <_hostOS Condition="$([MSBuild]::IsOSPlatform('SOLARIS'))">solaris - <_hostOS Condition="$([MSBuild]::IsOSPlatform('HAIKU'))">haiku - <_hostOS Condition="$([MSBuild]::IsOSPlatform('WINDOWS'))">windows - $(_hostOS) - browser - $(_hostOS) - true - true - - - - - <_hostArch>$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant) - $(_hostArch) - wasm - wasm - arm - armv6 - armel - arm64 - loongarch64 - s390x - ppc64le - x64 - x64 - $(TargetArchitecture) - + + - - - - <_portableOS>$(TargetOS.ToLowerInvariant()) - <_portableOS Condition="'$(_portableOS)' == 'windows'">win - - - <_portableOS Condition="'$(_portableOS)' == 'anyos'">$(__PortableTargetOS) - - - <_portableOS Condition="'$(_portableOS)' == 'linux' and '$(__PortableTargetOS)' == 'linux-musl'">linux-musl - <_portableOS Condition="'$(_portableOS)' == 'linux' and '$(__PortableTargetOS)' == 'linux-bionic'">linux-bionic - - - <_portableOS Condition="'$(HostOS)' == 'win' and '$(TargetsMobile)' != 'true'">win - - - - - <_packageOS>$(_portableOS) - - <_packageOS Condition="'$(CrossBuild)' == 'true' and '$(_portableOS)' != 'linux-musl' and '$(_portableOS)' != 'linux-bionic' and '$(_portableOS)' != 'android'">$(_hostOS) - - - $(PackageOS)-$(TargetArchitecture) - $(_packageOS)-$(TargetArchitecture) - - - - - - <_portableHostOS>$(_hostOS) - <_portableHostOS Condition="'$(_portableHostOS)' == 'windows'">win - <_portableHostOS Condition="'$(CrossBuild)' != 'true' and '$(_portableOS)' == 'linux-musl'">linux-musl - - - $(ToolsOS)-$(_hostArch) - $(_portableHostOS)-$(_hostArch) - - - $(ToolsRID) - - - - - <_hostRid Condition="'$(MSBuildRuntimeType)' == 'core'">$([System.Runtime.InteropServices.RuntimeInformation]::RuntimeIdentifier) - <_hostRid Condition="'$(MSBuildRuntimeType)' != 'core'">win-$([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString().ToLowerInvariant) - - <_parseDistroRid>$(__DistroRid) - <_parseDistroRid Condition="'$(_parseDistroRid)' == ''">$(_hostRid) - <_distroRidIndex>$(_parseDistroRid.LastIndexOf('-')) - - <_outputOS>$(_parseDistroRid.SubString(0, $(_distroRidIndex))) - <_outputOS Condition="'$(PortableBuild)' == 'true'">$(_portableOS) - - $(_outputOS)-$(TargetArchitecture) - - - - true - true - true - true - true - true - true - true - true - true - true - true - true - true - true - true - true - true - true - true - + $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'microsoft.netcore.app.ref')) diff --git a/eng/DotNetBuild.props b/eng/DotNetBuild.props index 75cfd1acb039f5..3ccab6c8aba46c 100644 --- a/eng/DotNetBuild.props +++ b/eng/DotNetBuild.props @@ -105,6 +105,14 @@ $(InnerBuildArgs) /p:NetCoreAppToolCurrentVersion=$(NetCoreAppToolCurrentVersion) + + + $(InnerBuildArgs) /p:EnableDefaultArtifacts=false diff --git a/eng/OSArch.props b/eng/OSArch.props new file mode 100644 index 00000000000000..d1be0745175825 --- /dev/null +++ b/eng/OSArch.props @@ -0,0 +1,35 @@ + + + <_hostOS>linux + <_hostOS Condition="$([MSBuild]::IsOSPlatform('OSX'))">osx + <_hostOS Condition="$([MSBuild]::IsOSPlatform('FREEBSD'))">freebsd + <_hostOS Condition="$([MSBuild]::IsOSPlatform('NETBSD'))">netbsd + <_hostOS Condition="$([MSBuild]::IsOSPlatform('ILLUMOS'))">illumos + <_hostOS Condition="$([MSBuild]::IsOSPlatform('SOLARIS'))">solaris + <_hostOS Condition="$([MSBuild]::IsOSPlatform('HAIKU'))">haiku + <_hostOS Condition="$([MSBuild]::IsOSPlatform('WINDOWS'))">windows + $(_hostOS) + browser + $(_hostOS) + true + true + + + + + <_hostArch>$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant) + $(_hostArch) + wasm + wasm + arm + armv6 + armel + arm64 + loongarch64 + s390x + ppc64le + x64 + x64 + $(TargetArchitecture) + + \ No newline at end of file diff --git a/eng/Publishing.props b/eng/Publishing.props index da3d606ed683c4..1f986eff2e9c3e 100644 --- a/eng/Publishing.props +++ b/eng/Publishing.props @@ -1,155 +1,10 @@ - - + true false - - $(TargetArchitecture) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -168,15 +23,15 @@ This ensures that we don't produce these files in the "Repo source build" builds, but we do produce them in both the VMR and the runtime official build. --> - - <_ShouldGenerateProductVersionFiles Condition="'$(DotNetBuildRepo)' == 'true' and '$(DotNetBuildOrchestrator)' == 'true'">true - <_ShouldGenerateProductVersionFiles Condition="'$(DotNetBuildRepo)' != 'true' and '$(DotNetBuildOrchestrator)' != 'true'">true + + true + true + Condition="'$(ShouldGenerateProductVersionFiles)' == 'true'"> - - - - - - - - - diff --git a/eng/RuntimeIdentifier.props b/eng/RuntimeIdentifier.props new file mode 100644 index 00000000000000..9ebd5e65194874 --- /dev/null +++ b/eng/RuntimeIdentifier.props @@ -0,0 +1,100 @@ + + + false + true + + + + + + + <_portableOS>$(TargetOS.ToLowerInvariant()) + <_portableOS Condition="'$(_portableOS)' == 'windows'">win + + + <_portableOS Condition="'$(_portableOS)' == 'anyos'">$(__PortableTargetOS) + + + <_portableOS Condition="'$(_portableOS)' == 'linux' and '$(__PortableTargetOS)' == 'linux-musl'">linux-musl + <_portableOS Condition="'$(_portableOS)' == 'linux' and '$(__PortableTargetOS)' == 'linux-bionic'">linux-bionic + + + <_portableOS Condition="'$(HostOS)' == 'win' and '$(TargetsMobile)' != 'true'">win + + + + + <_packageOS>$(_portableOS) + + <_packageOS Condition="'$(CrossBuild)' == 'true' and '$(_portableOS)' != 'linux-musl' and '$(_portableOS)' != 'linux-bionic' and '$(_portableOS)' != 'android'">$(_hostOS) + + + $(PackageOS)-$(TargetArchitecture) + $(_packageOS)-$(TargetArchitecture) + + + + + + <_portableHostOS>$(_hostOS) + <_portableHostOS Condition="'$(_portableHostOS)' == 'windows'">win + <_portableHostOS Condition="'$(CrossBuild)' != 'true' and '$(_portableOS)' == 'linux-musl'">linux-musl + + + $(ToolsOS)-$(_hostArch) + $(_portableHostOS)-$(_hostArch) + + + $(ToolsRID) + + + + + <_hostRid Condition="'$(MSBuildRuntimeType)' == 'core'">$([System.Runtime.InteropServices.RuntimeInformation]::RuntimeIdentifier) + <_hostRid Condition="'$(MSBuildRuntimeType)' != 'core'">win-$([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString().ToLowerInvariant) + + <_parseDistroRid>$(__DistroRid) + <_parseDistroRid Condition="'$(_parseDistroRid)' == ''">$(_hostRid) + <_distroRidIndex>$(_parseDistroRid.LastIndexOf('-')) + + <_outputOS>$(_parseDistroRid.SubString(0, $(_distroRidIndex))) + <_outputOS Condition="'$(PortableBuild)' == 'true'">$(_portableOS) + + $(_outputOS)-$(TargetArchitecture) + + + + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + + \ No newline at end of file diff --git a/eng/Signing.props b/eng/Signing.props index c1ff2d8ba476b0..6b6b0d73a3c5d6 100644 --- a/eng/Signing.props +++ b/eng/Signing.props @@ -1,6 +1,26 @@ + + + - false + + false + true + false + + true @@ -14,6 +34,9 @@ + + + @@ -27,10 +50,10 @@ - @@ -38,37 +61,121 @@ - - - - - - - - - + %(FullPath).sha512 - - - - + - \ No newline at end of file + + + + + + <_HostArtifact Include="$(ArtifactsPackagesDir)**\runtime.*.Microsoft.NETCore.ILAsm.*.nupkg" + Exclude="$(ArtifactsPackagesDir)**\runtime.$(OutputRID).Microsoft.NETCore.ILAsm.*.nupkg" /> + + <_HostArtifact Include="$(ArtifactsPackagesDir)**\runtime.*.Microsoft.NETCore.ILDAsm.*.nupkg" + Exclude="$(ArtifactsPackagesDir)**\runtime.$(OutputRID).Microsoft.NETCore.ILDAsm.*.nupkg" /> + + <_HostArtifact Include="$(ArtifactsPackagesDir)**\runtime.*.Microsoft.DotNet.ILCompiler.*.nupkg" + Exclude="$(ArtifactsPackagesDir)**\runtime.$(OutputRID).Microsoft.DotNet.ILCompiler.*.nupkg" /> + + <_HostArtifact Include="$(ArtifactsPackagesDir)**\Microsoft.NETCore.App.Crossgen2.*.nupkg" + Exclude="$(ArtifactsPackagesDir)**\Microsoft.NETCore.App.Crossgen2.$(OutputRID).*.nupkg" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eng/pipelines/common/global-build-job.yml b/eng/pipelines/common/global-build-job.yml index 6bdd96038acf75..6cbc0c09eeda37 100644 --- a/eng/pipelines/common/global-build-job.yml +++ b/eng/pipelines/common/global-build-job.yml @@ -52,6 +52,8 @@ jobs: timeoutInMinutes: ${{ parameters.timeoutInMinutes }} enablePublishTestResults: ${{ parameters.enablePublishTestResults }} testResultsFormat: ${{ parameters.testResultsFormat }} + enableMicrobuild: ${{ parameters.isOfficialBuild }} + enableMicrobuildForMacAndLinux: ${{ parameters.isOfficialBuild }} ${{ if ne(parameters.templateContext, '') }}: templateContext: ${{ parameters.templateContext }} @@ -89,6 +91,12 @@ jobs: value: -os ${{ parameters.osGroup }} - name: _archParameter value: -arch ${{ parameters.archType }} + + - name: _AssetManifestName + value: ${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.nameSuffix }} + + - name: _SignType + value: $[ coalesce(variables.OfficialSignType, 'real') ] - ${{ if and(eq(parameters.osGroup, 'linux'), eq(parameters.osSubGroup, '_bionic')) }}: - name: _osParameter @@ -123,7 +131,7 @@ jobs: - name: _officialBuildParameter ${{ if eq(parameters.isOfficialBuild, true) }}: - value: /p:OfficialBuildId=$(Build.BuildNumber) + value: /p:OfficialBuildId=$(Build.BuildNumber) /p:DotNetPublishUsingPipelines=true /p:SignType=$(_SignType) /p:DotNetSignType=$(_SignType) ${{ if ne(parameters.isOfficialBuild, true) }}: value: '' diff --git a/eng/pipelines/common/macos-sign-with-entitlements.yml b/eng/pipelines/common/macos-sign-with-entitlements.yml deleted file mode 100644 index 72a03b90f340d6..00000000000000 --- a/eng/pipelines/common/macos-sign-with-entitlements.yml +++ /dev/null @@ -1,77 +0,0 @@ -parameters: - filesToSign: [] - timeoutInMinutes: '30' - -steps: - - task: UseDotNet@2 - displayName: Install .NET 6 SDK for signing. - inputs: - packageType: 'sdk' - version: '6.0.x' - installationPath: '$(Agent.TempDirectory)/dotnet' - - - ${{ each file in parameters.filesToSign }}: - - task: CopyFiles@2 - displayName: 'Copy entitled file ${{ file.name }}' - inputs: - contents: '${{ file.path }}/${{ file.name }}' - targetFolder: '$(Build.ArtifactStagingDirectory)/mac_entitled' - overWrite: true - - - task: ArchiveFiles@2 - displayName: 'Zip MacOS files for signing' - inputs: - rootFolderOrFile: '$(Build.ArtifactStagingDirectory)/mac_entitled' - archiveFile: '$(Build.ArtifactStagingDirectory)/mac_entitled_to_sign.zip' - archiveType: zip - includeRootFolder: true - replaceExistingArchive: true - - - task: EsrpCodeSigning@5 - displayName: 'ESRP CodeSigning' - inputs: - ConnectedServiceName: 'DotNet-Engineering-Services_KeyVault' - AppRegistrationClientId: '28ec6507-2167-4eaa-a294-34408cf5dd0e' - AppRegistrationTenantId: '72f988bf-86f1-41af-91ab-2d7cd011db47' - AuthAKVName: 'EngKeyVault' - AuthCertName: 'DotNetCore-ESRP-AuthCert' - AuthSignCertName: 'DotNetCore-ESRP-AuthSignCert' - FolderPath: '$(Build.ArtifactStagingDirectory)/' - Pattern: 'mac_entitled_to_sign.zip' - UseMinimatch: true - signConfigType: inlineSignParams - inlineOperation: | - [ - { - "keyCode": "CP-401337-Apple", - "operationCode": "MacAppDeveloperSign", - "parameters" : { - "hardening": "Enable" - }, - "toolName": "sign", - "toolVersion": "1.0" - } - ] - SessionTimeout: ${{ parameters.timeoutInMinutes }} - MaxConcurrency: '50' - MaxRetryAttempts: '5' - PendingAnalysisWaitTimeoutMinutes: '5' - env: - DOTNET_MULTILEVEL_LOOKUP: 0 - DOTNET_ROOT: '$(Agent.TempDirectory)/dotnet' - DOTNET_MSBUILD_SDK_RESOLVER_CLI_DIR: '$(Agent.TempDirectory)/dotnet' - - - task: ExtractFiles@1 - displayName: 'Extract MacOS after signing' - inputs: - archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/mac_entitled_to_sign.zip' - destinationFolder: '$(Build.ArtifactStagingDirectory)/mac_entitled_signed' - - - ${{ each file in parameters.filesToSign }}: - - task: CopyFiles@2 - displayName: 'Copy ${{ file.name }} to destination' - inputs: - contents: ${{ file.name }} - sourceFolder: '$(Build.ArtifactStagingDirectory)/mac_entitled_signed' - targetFolder: '${{ file.path }}' - overWrite: true diff --git a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml index db0ab302b43545..d5f50ad4dfc973 100644 --- a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml +++ b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml @@ -28,7 +28,6 @@ parameters: displayName: '' timeoutInMinutes: '' enableMicrobuild: '' - gatherAssetManifests: false shouldContinueOnError: false steps: diff --git a/eng/pipelines/common/templates/runtimes/build-runtime-tests.yml b/eng/pipelines/common/templates/runtimes/build-runtime-tests.yml index a822ccf28fd288..1b1660693d6e03 100644 --- a/eng/pipelines/common/templates/runtimes/build-runtime-tests.yml +++ b/eng/pipelines/common/templates/runtimes/build-runtime-tests.yml @@ -11,7 +11,6 @@ parameters: displayName: '' timeoutInMinutes: '' enableMicrobuild: '' - gatherAssetManifests: false shouldContinueOnError: false diff --git a/eng/pipelines/common/templates/runtimes/xplat-job.yml b/eng/pipelines/common/templates/runtimes/xplat-job.yml index e22f8f968c4790..3b7dfa334ed259 100644 --- a/eng/pipelines/common/templates/runtimes/xplat-job.yml +++ b/eng/pipelines/common/templates/runtimes/xplat-job.yml @@ -18,7 +18,6 @@ parameters: displayName: '' timeoutInMinutes: '' enableMicrobuild: '' - gatherAssetManifests: false disableComponentGovernance: '' templatePath: 'templates' @@ -69,11 +68,6 @@ jobs: ${{ else }}: disableComponentGovernance: ${{ parameters.disableComponentGovernance }} - # Setting this results in the arcade job template including a step - # that gathers asset manifests and publishes them to pipeline - # storage. Only relevant for build jobs. - enablePublishBuildAssets: ${{ parameters.gatherAssetManifests }} - artifacts: publish: ${{ if ne(parameters.logsName, '') }}: diff --git a/eng/pipelines/official/jobs/prepare-signed-artifacts.yml b/eng/pipelines/official/jobs/prepare-signed-artifacts.yml deleted file mode 100644 index 1440a7a1dfdc35..00000000000000 --- a/eng/pipelines/official/jobs/prepare-signed-artifacts.yml +++ /dev/null @@ -1,66 +0,0 @@ -parameters: - PublishRidAgnosticPackagesFromPlatform: '' - isOfficialBuild: false - logArtifactName: 'Logs-PrepareSignedArtifacts_Attempt$(System.JobAttempt)' - -jobs: -- template: /eng/common/templates-official/job/job.yml - parameters: - name: 'PrepareSignedArtifacts' - displayName: 'Prepare Signed Artifacts' - - pool: - name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals 1es-windows-2022 - - # Double the default timeout. - timeoutInMinutes: 240 - - workspace: - clean: all - - enableMicrobuild: true - - variables: - - name: '_SignType' - value: $[ coalesce(variables.OfficialSignType, 'real') ] - - templateContext: - inputs: - - input: checkout - repository: self - clean: true - fetchDepth: 20 - - input: pipelineArtifact - artifactName: IntermediateArtifacts - targetPath: $(Build.SourcesDirectory)\artifacts\PackageDownload\IntermediateArtifacts - outputs: - - output: pipelineArtifact - displayName: 'Publish BuildLogs' - condition: succeededOrFailed() - targetPath: '$(Build.StagingDirectory)\BuildLogs' - artifactName: ${{ parameters.logArtifactName }} - - steps: - - script: >- - build.cmd -restore -sign -publish -ci -configuration Release - /p:RestoreToolsetOnly=true - /p:PublishRidAgnosticPackagesFromPlatform=${{ parameters.PublishRidAgnosticPackagesFromPlatform }} - /p:DownloadDirectory=$(Build.SourcesDirectory)\artifacts\PackageDownload\ - /p:OfficialBuildId=$(Build.BuildNumber) - /p:SignType=$(_SignType) - /p:DotNetSignType=$(_SignType) - /p:DotNetPublishUsingPipelines=true - /bl:$(Build.SourcesDirectory)\prepare-artifacts.binlog - displayName: Prepare artifacts and upload to build - - - task: CopyFiles@2 - displayName: Copy Files to $(Build.StagingDirectory)\BuildLogs - inputs: - SourceFolder: '$(Build.SourcesDirectory)' - Contents: | - **/*.log - **/*.binlog - TargetFolder: '$(Build.StagingDirectory)\BuildLogs' - continueOnError: true - condition: succeededOrFailed() \ No newline at end of file diff --git a/eng/pipelines/official/stages/publish.yml b/eng/pipelines/official/stages/publish.yml deleted file mode 100644 index 83b059ffc32a65..00000000000000 --- a/eng/pipelines/official/stages/publish.yml +++ /dev/null @@ -1,57 +0,0 @@ -parameters: - PublishRidAgnosticPackagesFromPlatform: windows_x64 - -stages: - -- stage: PrepareForPublish - displayName: Prepare for Publish - variables: - - template: /eng/common/templates-official/variables/pool-providers.yml - jobs: - # Prep artifacts: sign them and upload pipeline artifacts expected by stages-based publishing. - - template: /eng/pipelines/official/jobs/prepare-signed-artifacts.yml - parameters: - PublishRidAgnosticPackagesFromPlatform: ${{ parameters.PublishRidAgnosticPackagesFromPlatform }} - - # Publish to Build Asset Registry in order to generate the ReleaseConfigs artifact. - - template: /eng/common/templates-official/job/publish-build-assets.yml - parameters: - publishUsingPipelines: true - publishAssetsImmediately: true - dependsOn: PrepareSignedArtifacts - pool: - name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals 1es-windows-2022 - symbolPublishingAdditionalParameters: '/p:PublishSpecialClrFiles=true' - -# Stages-based publishing entry point -- template: /eng/common/templates-official/post-build/post-build.yml - parameters: - validateDependsOn: - - PrepareForPublish - # The following checks are run after the build in the validation and release pipelines - # And thus are not enabled here. They can be enabled for dev builds for spot testing if desired - enableSymbolValidation: false - enableSigningValidation: false - enableNugetValidation: false - enableSourceLinkValidation: false - publishAssetsImmediately: true - SDLValidationParameters: - enable: false - artifactNames: - - PackageArtifacts - - BlobArtifacts - params: >- - -SourceToolsList @("policheck","credscan") - -TsaInstanceURL "$(TsaInstanceURL)" - -TsaProjectName "$(TsaProjectName)" - -TsaNotificationEmail "$(TsaNotificationEmail)" - -TsaCodebaseAdmin "$(TsaCodebaseAdmin)" - -TsaBugAreaPath "$(TsaBugAreaPath)" - -TsaIterationPath "$(TsaIterationPath)" - -TsaRepositoryName "$(TsaRepositoryName)" - -TsaCodebaseName "$(TsaCodebaseName)" - -TsaPublish $True - symbolPublishingAdditionalParameters: '/p:PublishSpecialClrFiles=true' - # Publish to blob storage. - publishInstallersAndChecksums: true diff --git a/eng/pipelines/runtime-official.yml b/eng/pipelines/runtime-official.yml index 03c4308e13aebf..e581348a11eb80 100644 --- a/eng/pipelines/runtime-official.yml +++ b/eng/pipelines/runtime-official.yml @@ -72,6 +72,8 @@ extends: variables: - name: _SignDiagnosticFilesArgs value: '' + - name: _EnableDefaultArtifactsArg + value: $[iif(and(eq(variables.osGroup, 'windows'), eq(variables.archType, 'x64')),'/p:EnableDefaultArtifacts=true','')] jobParameters: templatePath: 'templates-official' preBuildSteps: @@ -84,7 +86,7 @@ extends: vaultName: 'clrdiag-esrp-id' azureSubscription: 'diagnostics-esrp-kvcertuser' - buildArgs: -c $(_BuildConfig) /p:DotNetBuildAllRuntimePacks=true $(_SignDiagnosticFilesArgs) + buildArgs: -c $(_BuildConfig) -restore -build -sign -publish /p:DotNetBuildAllRuntimePacks=true $(_SignDiagnosticFilesArgs) $(_EnableDefaultArtifactsArg) nameSuffix: AllRuntimes isOfficialBuild: ${{ variables.isOfficialBuild }} timeoutInMinutes: 120 @@ -93,64 +95,8 @@ extends: parameters: isOfficialBuild: ${{ variables.isOfficialBuild }} - # Upload the results. - - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml - parameters: - name: $(osGroup)$(osSubgroup)_$(archType) - - # - # Build all runtime packs - # Mac x64/arm64 - # Sign and entitle createdump and corerun after native build. - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: release - platforms: - - osx_arm64 - - osx_x64 - jobParameters: - templatePath: 'templates-official' - buildArgs: -s clr.runtime+clr.alljits+clr.nativeaotruntime+host.native -c $(_BuildConfig) /bl:$(Build.SourcesDirectory)/artifacts/logs/$(_BuildConfig)/CoreClrNativeBuild.binlog - nameSuffix: AllRuntimes - isOfficialBuild: ${{ variables.isOfficialBuild }} - timeoutInMinutes: 120 - postBuildSteps: - - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - template: /eng/pipelines/common/macos-sign-with-entitlements.yml - parameters: - filesToSign: - - name: createdump - path: $(Build.SourcesDirectory)/artifacts/bin/coreclr/$(osGroup).$(archType).$(_BuildConfig) - - name: corerun - path: $(Build.SourcesDirectory)/artifacts/bin/coreclr/$(osGroup).$(archType).$(_BuildConfig) - - name: dotnet - path: $(Build.SourcesDirectory)/artifacts/bin/$(osGroup)-$(archType).$(_BuildConfig)/corehost - - name: apphost - path: $(Build.SourcesDirectory)/artifacts/bin/$(osGroup)-$(archType).$(_BuildConfig)/corehost - - - task: CopyFiles@2 - displayName: 'Copy signed createdump to sharedFramework' - inputs: - contents: createdump - sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/coreclr/$(osGroup).$(archType).$(_BuildConfig) - targetFolder: $(Build.SourcesDirectory)/artifacts/bin/coreclr/$(osGroup).$(archType).$(_BuildConfig)/sharedFramework - overWrite: true - - # Now that we've entitled and signed createdump, we can build the rest. - - template: /eng/pipelines/common/templates/global-build-step.yml - parameters: - buildArgs: -s clr.corelib+clr.nativecorelib+clr.nativeaotlibs+clr.tools+clr.packages+mono+libs+host.tools+host.pkg+packs -c $(_BuildConfig) /p:DotNetBuildAllRuntimePacks=true - displayName: Build managed CoreCLR and host components, Mono, all libraries, and packs - - # Upload the results. - - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml - parameters: - name: $(osGroup)$(osSubgroup)_$(archType) - # - # Build all runtime packs for Linux and Linux musl + # Build all runtime packs for MacOS, Linux, Linux musl, and mobile # - template: /eng/pipelines/common/platform-matrix.yml parameters: @@ -163,17 +109,31 @@ extends: - linux_musl_x64 - linux_musl_arm - linux_musl_arm64 + - osx_arm64 + - osx_x64 + - android_x64 + - android_x86 + - android_arm + - android_arm64 + - maccatalyst_x64 + - maccatalyst_arm64 + - tvossimulator_x64 + - tvossimulator_arm64 + - tvos_arm64 + - iossimulator_x64 + - iossimulator_arm64 + - ios_arm64 + - linux_bionic_x64 + - linux_bionic_arm + - linux_bionic_arm64 + - browser_wasm + - wasi_wasm jobParameters: templatePath: 'templates-official' - buildArgs: -c $(_BuildConfig) /p:DotNetBuildAllRuntimePacks=true + buildArgs: -c $(_BuildConfig) -restore -build -sign -publish /p:DotNetBuildAllRuntimePacks=true nameSuffix: AllRuntimes isOfficialBuild: ${{ variables.isOfficialBuild }} timeoutInMinutes: 120 - postBuildSteps: - # Upload the results. - - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml - parameters: - name: $(osGroup)$(osSubgroup)_$(archType) # # Build and Pack CrossDac @@ -194,11 +154,10 @@ extends: - task: DownloadPipelineArtifact@2 displayName: Download runtime packs for CrossDac inputs: - artifact: 'IntermediateArtifacts' + artifact: 'PackageArtifacts' path: $(Build.SourcesDirectory)/artifacts/RuntimeDownload patterns: | - IntermediateArtifacts/linux_*/Shipping/Microsoft.NETCore.App.Runtime.linux-*.nupkg - !IntermediateArtifacts/linux_*/Shipping/Microsoft.NETCore.App.Runtime.linux-*.symbols.nupkg + PackageArtifacts/linux_*/Shipping/Microsoft.NETCore.App.Runtime.linux-*.nupkg - powershell: $(Build.SourcesDirectory)/eng/extract-for-crossdac.ps1 -DownloadDirectory $(Build.SourcesDirectory)/artifacts/RuntimeDownload -ExtractDirectory $(CrossRuntimeExtractionRoot) displayName: Extract runtime packs - template: /eng/pipelines/coreclr/templates/install-diagnostic-certs.yml @@ -213,11 +172,6 @@ extends: - template: /eng/pipelines/coreclr/templates/remove-diagnostic-certs.yml parameters: isOfficialBuild: ${{ variables.isOfficialBuild }} - # Save packages using the prepare-signed-artifacts format. - # CrossDac packages are expected to be in the windows_x64 folder. - - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml - parameters: - name: windows_x64 dependsOn: - build_linux_x64_release_AllRuntimes - build_linux_arm_release_AllRuntimes @@ -231,73 +185,6 @@ extends: - name: _SignDiagnosticFilesArgs value: '' - # - # Build All runtime packs for mobile platforms - # - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: release - platforms: - - android_x64 - - android_x86 - - android_arm - - android_arm64 - - maccatalyst_x64 - - maccatalyst_arm64 - - tvossimulator_x64 - - tvossimulator_arm64 - - tvos_arm64 - - iossimulator_x64 - - iossimulator_arm64 - - ios_arm64 - - linux_bionic_x64 - - linux_bionic_arm - - linux_bionic_arm64 - jobParameters: - templatePath: 'templates-official' - buildArgs: -c $(_BuildConfig) /p:BuildMonoAOTCrossCompiler=false /p:DotNetBuildAllRuntimePacks=true - nameSuffix: AllRuntimes - isOfficialBuild: ${{ variables.isOfficialBuild }} - postBuildSteps: - # delete duplicate RIDless packages to prevent upload conflict - - task: DeleteFiles@1 - displayName: 'Delete Microsoft.NETCore.App.Ref and Microsoft.NETCore.App.HostModel package' - inputs: - SourceFolder: $(Build.SourcesDirectory)/artifacts/packages/$(_BuildConfig)/Shipping - Contents: | - 'Microsoft.NETCore.App.Ref.*.nupkg' - 'Microsoft.NET.HostModel.*.nupkg' - - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml - parameters: - name: MobileRuntimePacks - - - template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - browser_wasm - - wasi_wasm - jobParameters: - templatePath: 'templates-official' - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - nameSuffix: Mono - isOfficialBuild: ${{ variables.isOfficialBuild }} - postBuildSteps: - # delete duplicate RIDless packages to prevent upload conflict - - task: DeleteFiles@1 - displayName: 'Delete Microsoft.NETCore.App.Ref and Microsoft.NETCore.App.HostModel package' - inputs: - SourceFolder: $(Build.SourcesDirectory)/artifacts/packages/$(_BuildConfig)/Shipping - Contents: | - 'Microsoft.NETCore.App.Ref.*.nupkg' - 'Microsoft.NET.HostModel.*.nupkg' - - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml - parameters: - name: MobileRuntimePacks - - template: /eng/pipelines/common/platform-matrix.yml parameters: jobTemplate: /eng/pipelines/common/global-build-job.yml @@ -307,22 +194,10 @@ extends: - browser_wasm jobParameters: templatePath: 'templates-official' - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) /p:WasmEnableThreads=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + buildArgs: -c $(_BuildConfig) -restore -build -sign -publish /p:DotNetBuildAllRuntimePacks=true /p:WasmEnableThreads=true nameSuffix: Mono_multithread isOfficialBuild: ${{ variables.isOfficialBuild }} runtimeVariant: multithread - postBuildSteps: - # delete duplicate RIDless packages to prevent upload conflict - - task: DeleteFiles@1 - displayName: 'Delete Microsoft.NETCore.App.Ref and Microsoft.NETCore.App.HostModel package' - inputs: - SourceFolder: $(Build.SourcesDirectory)/artifacts/packages/$(_BuildConfig)/Shipping - Contents: | - 'Microsoft.NETCore.App.Ref.*.nupkg' - 'Microsoft.NET.HostModel.*.nupkg' - - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml - parameters: - name: MobileRuntimePacks # # Build Mono LLVM runtime packs @@ -338,23 +213,11 @@ extends: runtimeFlavor: mono jobParameters: templatePath: 'templates-official' - buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) -restore -build -sign -publish /p:MonoEnableLLVM=true /p:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=true nameSuffix: Mono_LLVMAOT runtimeVariant: LLVMAOT isOfficialBuild: ${{ variables.isOfficialBuild }} - postBuildSteps: - # delete duplicate RIDless packages to prevent upload conflict - - task: DeleteFiles@1 - displayName: 'Delete Microsoft.NETCore.App.Ref and Microsoft.NETCore.App.HostModel package' - inputs: - SourceFolder: $(Build.SourcesDirectory)/artifacts/packages/$(_BuildConfig)/Shipping - Contents: | - 'Microsoft.NETCore.App.Ref.*.nupkg' - 'Microsoft.NET.HostModel.*.nupkg' - - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml - parameters: - name: $(osGroup)$(osSubgroup)_$(archType) # # Build libraries (all TFMs) and packages @@ -367,13 +230,9 @@ extends: - windows_x64 jobParameters: templatePath: 'templates-official' - buildArgs: -s tools+libs -pack -c $(_BuildConfig) /p:TestAssemblies=false /p:TestPackages=true + buildArgs: -s tools+libs -restore -build -pack -sign -publish -c $(_BuildConfig) /p:TestAssemblies=false /p:TestPackages=true /p:EnableDefaultArtifacts=true nameSuffix: Libraries_WithPackages isOfficialBuild: ${{ variables.isOfficialBuild }} - postBuildSteps: - - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml - parameters: - name: Libraries_WithPackages timeoutInMinutes: 95 # # Build SourceBuild packages @@ -401,13 +260,9 @@ extends: - linux_arm64 jobParameters: templatePath: 'templates-official' - buildArgs: -s clr.native+clr.corelib+clr.tools+clr.nativecorelib+libs+host+packs -c $(_BuildConfig) -pgoinstrument /p:SkipLibrariesNativeRuntimePackages=true + buildArgs: -s clr.native+clr.corelib+clr.tools+clr.nativecorelib+libs+host+packs -c $(_BuildConfig) -restore -build -sign -publish -pgoinstrument /p:SkipLibrariesNativeRuntimePackages=true isOfficialBuild: ${{ variables.isOfficialBuild }} nameSuffix: PGO - postBuildSteps: - - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml - parameters: - name: PGO timeoutInMinutes: 95 # @@ -425,83 +280,41 @@ extends: preBuildSteps: - task: DownloadPipelineArtifact@2 inputs: - artifact: 'IntermediateArtifacts' + artifact: 'PackageArtifacts' path: $(Build.SourcesDirectory)/artifacts/workloadPackages patterns: | - IntermediateArtifacts/windows_x64/Shipping/Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-*.nupkg - IntermediateArtifacts/windows_arm64/Shipping/Microsoft.NETCore.App.Runtime.AOT.win-arm64.Cross.android-*.nupkg - IntermediateArtifacts/windows_x64/Shipping/Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm*.nupkg - IntermediateArtifacts/windows_arm64/Shipping/Microsoft.NETCore.App.Runtime.AOT.win-arm64.Cross.browser-wasm*.nupkg - IntermediateArtifacts/windows_x64/Shipping/Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.wasi-wasm*.nupkg - IntermediateArtifacts/windows_arm64/Shipping/Microsoft.NETCore.App.Runtime.AOT.win-arm64.Cross.wasi-wasm*.nupkg - IntermediateArtifacts/MobileRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.android-*.nupkg - IntermediateArtifacts/MobileRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.browser-wasm*.nupkg - IntermediateArtifacts/MobileRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.multithread.browser-wasm*.nupkg - IntermediateArtifacts/MobileRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.ios-*.nupkg - IntermediateArtifacts/MobileRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.iossimulator-*.nupkg - IntermediateArtifacts/MobileRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.maccatalyst-*.nupkg - IntermediateArtifacts/MobileRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.multithread.browser-wasm*.nupkg - IntermediateArtifacts/MobileRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.tvos-*.nupkg - IntermediateArtifacts/MobileRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.tvossimulator-*.nupkg - IntermediateArtifacts/MobileRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.wasi-wasm*.nupkg - IntermediateArtifacts/MobileRuntimePacks/Shipping/Microsoft.NET.Workload.Mono.ToolChain.Current.Manifest*.nupkg - IntermediateArtifacts/MobileRuntimePacks/Shipping/Microsoft.NET.Workload.Mono.ToolChain.net6.Manifest*.nupkg - IntermediateArtifacts/MobileRuntimePacks/Shipping/Microsoft.NET.Workload.Mono.ToolChain.net7.Manifest*.nupkg - IntermediateArtifacts/MobileRuntimePacks/Shipping/Microsoft.NET.Workload.Mono.ToolChain.net8.Manifest*.nupkg - IntermediateArtifacts/MobileRuntimePacks/Shipping/Microsoft.NET.Workload.Mono.ToolChain.net9.Manifest*.nupkg - IntermediateArtifacts/MobileRuntimePacks/Shipping/Microsoft.NET.Runtime.MonoTargets.Sdk*.nupkg - IntermediateArtifacts/MobileRuntimePacks/Shipping/Microsoft.NET.Runtime.MonoAOTCompiler.Task*.nupkg - IntermediateArtifacts/MobileRuntimePacks/Shipping/Microsoft.NET.Runtime.WebAssembly.Sdk*.nupkg - IntermediateArtifacts/MobileRuntimePacks/Shipping/Microsoft.NET.Runtime.WebAssembly.Wasi*.nupkg - IntermediateArtifacts/MobileRuntimePacks/Shipping/Microsoft.NET.Runtime.WebAssembly.Templates*.nupkg - IntermediateArtifacts/windows_arm64/Shipping/Microsoft.NETCore.App.Runtime.win-arm64*.nupkg - IntermediateArtifacts/windows_x64/Shipping/Microsoft.NETCore.App.Runtime.win-x64*.nupkg - IntermediateArtifacts/windows_x86/Shipping/Microsoft.NETCore.App.Runtime.win-x86*.nupkg - IntermediateArtifacts/MobileRuntimePacks/Shipping/Microsoft.NET.Sdk.WebAssembly.Pack*.nupkg - - - task: CopyFiles@2 - displayName: Flatten packages - inputs: - sourceFolder: $(Build.SourcesDirectory)/artifacts/workloadPackages - contents: '*/Shipping/*.nupkg' - cleanTargetFolder: false - targetFolder: $(Build.SourcesDirectory)/artifacts/workloadPackages - flattenFolders: true - - buildArgs: -s mono.workloads -c $(_BuildConfig) /p:PackageSource=$(Build.SourcesDirectory)/artifacts/workloadPackages /p:WorkloadOutputPath=$(Build.SourcesDirectory)/artifacts/workloads + PackageArtifacts/Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-*.nupkg + PackageArtifacts/Microsoft.NETCore.App.Runtime.AOT.win-arm64.Cross.android-*.nupkg + PackageArtifacts/Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm*.nupkg + PackageArtifacts/Microsoft.NETCore.App.Runtime.AOT.win-arm64.Cross.browser-wasm*.nupkg + PackageArtifacts/Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.wasi-wasm*.nupkg + PackageArtifacts/Microsoft.NETCore.App.Runtime.AOT.win-arm64.Cross.wasi-wasm*.nupkg + PackageArtifacts/Microsoft.NETCore.App.Runtime.Mono.android-*.nupkg + PackageArtifacts/Microsoft.NETCore.App.Runtime.Mono.browser-wasm*.nupkg + PackageArtifacts/Microsoft.NETCore.App.Runtime.Mono.multithread.browser-wasm*.nupkg + PackageArtifacts/Microsoft.NETCore.App.Runtime.Mono.ios-*.nupkg + PackageArtifacts/Microsoft.NETCore.App.Runtime.Mono.iossimulator-*.nupkg + PackageArtifacts/Microsoft.NETCore.App.Runtime.Mono.maccatalyst-*.nupkg + PackageArtifacts/Microsoft.NETCore.App.Runtime.Mono.multithread.browser-wasm*.nupkg + PackageArtifacts/Microsoft.NETCore.App.Runtime.Mono.tvos-*.nupkg + PackageArtifacts/Microsoft.NETCore.App.Runtime.Mono.tvossimulator-*.nupkg + PackageArtifacts/Microsoft.NETCore.App.Runtime.Mono.wasi-wasm*.nupkg + PackageArtifacts/Microsoft.NET.Workload.Mono.ToolChain.Current.Manifest*.nupkg + PackageArtifacts/Microsoft.NET.Workload.Mono.ToolChain.net6.Manifest*.nupkg + PackageArtifacts/Microsoft.NET.Workload.Mono.ToolChain.net7.Manifest*.nupkg + PackageArtifacts/Microsoft.NET.Workload.Mono.ToolChain.net8.Manifest*.nupkg + PackageArtifacts/Microsoft.NET.Workload.Mono.ToolChain.net9.Manifest*.nupkg + PackageArtifacts/Microsoft.NET.Runtime.MonoTargets.Sdk*.nupkg + PackageArtifacts/Microsoft.NET.Runtime.MonoAOTCompiler.Task*.nupkg + PackageArtifacts/Microsoft.NET.Runtime.WebAssembly.Sdk*.nupkg + PackageArtifacts/Microsoft.NET.Runtime.WebAssembly.Wasi*.nupkg + PackageArtifacts/Microsoft.NET.Runtime.WebAssembly.Templates*.nupkg + PackageArtifacts/Microsoft.NETCore.App.Runtime.win-arm64*.nupkg + PackageArtifacts/Microsoft.NETCore.App.Runtime.win-x64*.nupkg + PackageArtifacts/Microsoft.NETCore.App.Runtime.win-x86*.nupkg + PackageArtifacts/Microsoft.NET.Sdk.WebAssembly.Pack*.nupkg - postBuildSteps: - # Prepare packages wrapping msis - - task: CopyFiles@2 - displayName: Prepare package artifacts - inputs: - SourceFolder: '$(Build.SourcesDirectory)/artifacts/packages/$(_BuildConfig)' - Contents: | - Shipping/**/* - NonShipping/**/* - TargetFolder: '$(Build.ArtifactStagingDirectory)/IntermediateArtifacts1/workloads' - CleanTargetFolder: true - - # Prepare artifacts to be used for generating VS components - - task: CopyFiles@2 - displayName: Prepare VS Insertion artifacts - inputs: - SourceFolder: '$(Build.SourcesDirectory)/artifacts/VSSetup/$(_BuildConfig)' - Contents: | - Insertion/**/* - TargetFolder: '$(Build.ArtifactStagingDirectory)/IntermediateArtifacts2/workloads-vs' - CleanTargetFolder: true - - templateContext: - outputs: - - output: buildArtifacts - PathtoPublish: '$(Build.ArtifactStagingDirectory)/IntermediateArtifacts1' - ArtifactName: IntermediateArtifacts - displayName: 'Publish workload packages' - - output: buildArtifacts - PathtoPublish: '$(Build.ArtifactStagingDirectory)/IntermediateArtifacts2' - ArtifactName: IntermediateArtifacts - displayName: 'Publish workload VS Insertion artifacts' + buildArgs: -s mono.workloads -c $(_BuildConfig) -restore -build -sign -publish /p:PackageSource=$(Build.SourcesDirectory)/artifacts/workloadPackages /p:WorkloadOutputPath=$(Build.SourcesDirectory)/artifacts/workloads /p:ShouldGenerateProductVersionFiles=true /p:EnableDefaultArtifacts=true isOfficialBuild: ${{ variables.isOfficialBuild }} timeoutInMinutes: 120 @@ -524,7 +337,13 @@ extends: - Build_windows_x86_release_AllRuntimes - Build_windows_arm64_release_AllRuntimes - - ${{ if eq(variables.isOfficialBuild, true) }}: - - template: /eng/pipelines/official/stages/publish.yml + - stage: Publish + jobs: + - template: /eng/common/templates-official/job/publish-build-assets.yml parameters: - isOfficialBuild: ${{ variables.isOfficialBuild }} + publishUsingPipelines: true + publishAssetsImmediately: true + pool: + name: $(DncEngInternalBuildPool) + demands: ImageOverride -equals 1es-windows-2022 + symbolPublishingAdditionalParameters: '/p:PublishSpecialClrFiles=true'