From f14ae82a9375f4e59191e70a02ee2cdd6a0b7990 Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Mon, 4 May 2020 18:53:41 -0700 Subject: [PATCH 1/3] Get `MSBuild` performance summary --- .azure/pipelines/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml index f4cb66affec1..36a4769dfbe8 100644 --- a/.azure/pipelines/ci.yml +++ b/.azure/pipelines/ci.yml @@ -158,6 +158,7 @@ stages: -arch x64 -pack -all + '/fileLoggerParameters:LogFile=artifacts/log/performance.x64.log;PerformanceSummary;Verbosity=Quiet' $(_BuildArgs) $(_InternalRuntimeDownloadArgs) $(Windows64LogArgs) @@ -174,6 +175,7 @@ stages: -noBuildJava -noBuildNative /p:OnlyPackPlatformSpecificPackages=true + '/fileLoggerParameters:LogFile=artifacts/log/performance.x86.log;PerformanceSummary;Verbosity=Quiet' $(_BuildArgs) $(_InternalRuntimeDownloadArgs) $(Windows86LogArgs) @@ -410,6 +412,7 @@ stages: -p:AssetManifestFileName=aspnetcore-Linux_x64.xml $(_BuildArgs) $(_InternalRuntimeDownloadArgs) + '/fileLoggerParameters:LogFile=artifacts/log/performance.x64.log;PerformanceSummary;Verbosity=Quiet' displayName: Run build.sh - script: | git clean -xfd src/**/obj/ From d4cb506d573ec496724f1cea70aabbf781341480 Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Fri, 29 Jan 2021 16:29:58 -0800 Subject: [PATCH 2/3] Limit tests to a couple of job types - run those jobs 10 times --- .azure/pipelines/ci.yml | 676 +----------------------- .azure/pipelines/jobs/default-build.yml | 26 +- 2 files changed, 25 insertions(+), 677 deletions(-) diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml index 36a4769dfbe8..81938206e93c 100644 --- a/.azure/pipelines/ci.yml +++ b/.azure/pipelines/ci.yml @@ -67,7 +67,7 @@ variables: value: -ExcludeCIBinaryLog - ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: - name: _BuildArgs - value: '/p:SkipTestBuild=true /p:PostBuildSign=$(PostBuildSign)' + value: '/p:PostBuildSign=$(PostBuildSign)' - name: _PublishArgs value: '' # Write binary logs for all main Windows build steps except the x86 one in public and PR builds. @@ -118,26 +118,9 @@ stages: - stage: build displayName: Build jobs: - # Code check - - ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: - - template: jobs/default-build.yml - parameters: - jobName: Code_check - jobDisplayName: Code check - agentOs: Windows - steps: - - powershell: ./eng/scripts/CodeCheck.ps1 -ci $(_InternalRuntimeDownloadArgs) - displayName: Run eng/scripts/CodeCheck.ps1 - artifacts: - - name: Code_Check_Logs - path: artifacts/log/ - publishOnError: true - includeForks: true - # Build Windows (x64/x86) - template: jobs/default-build.yml parameters: - codeSign: true jobName: Windows_build jobDisplayName: "Build: Windows x64/x86" agentOs: Windows @@ -149,14 +132,9 @@ stages: condition: and(notin(variables['Build.Reason'], 'PullRequest'), in(variables['DotNetFinalVersionKind'], 'release', 'prerelease')) displayName: 'Set CI tags' - # !!! NOTE !!! Some of these steps have disabled code signing. - # This is intentional to workaround https://github.com/dotnet/arcade/issues/1957 which always re-submits for code-signing, even - # if they have already been signed. This results in slower builds due to re-submitting the same .nupkg many times for signing. - # The sign settings have been configured to - script: ./eng/build.cmd -ci -arch x64 - -pack -all '/fileLoggerParameters:LogFile=artifacts/log/performance.x64.log;PerformanceSummary;Verbosity=Quiet' $(_BuildArgs) @@ -170,7 +148,6 @@ stages: -ci -noBuildRepoTasks -arch x86 - -pack -all -noBuildJava -noBuildNative @@ -180,218 +157,11 @@ stages: $(_InternalRuntimeDownloadArgs) $(Windows86LogArgs) displayName: Build x86 - - - script: .\src\SiteExtensions\build.cmd - -ci - -noBuildRepoTasks - -pack - -noBuildDeps - -noBuildNative - $(_BuildArgs) - $(_InternalRuntimeDownloadArgs) - condition: ne(variables['Build.Reason'], 'PullRequest') - displayName: Build SiteExtension - - # This runs code-signing on all packages, zips, and jar files as defined in build/CodeSign.targets. If - # https://github.com/dotnet/arcade/issues/1957 is resolved, consider running code-signing inline with the other - # previous steps. Sign check is disabled because it is run in a separate step below, after installers are built. - - script: ./eng/build.cmd - -ci - -noBuildRepoTasks - -noBuildNative - -noBuild - -noRestore - -sign - /p:DotNetSignType=$(_SignType) - $(_BuildArgs) - $(WindowsSignLogArgs) - displayName: Code sign packages - - # Windows installers bundle both x86 and x64 assets - - script: ./eng/build.cmd - -ci - -noBuildRepoTasks - -sign - -buildInstallers - -noBuildNative - /p:DotNetSignType=$(_SignType) - /p:AssetManifestFileName=aspnetcore-win-x64-x86.xml - $(_BuildArgs) - $(_PublishArgs) - $(_InternalRuntimeDownloadArgs) - /p:PublishInstallerBaseVersion=true - $(WindowsInstallersLogArgs) - displayName: Build Installers - - # A few files must also go to the VS package feed. - - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), ne(variables['PostBuildSign'], 'true')) }}: - - task: NuGetCommand@2 - displayName: Push Visual Studio packages - inputs: - command: push - packagesToPush: 'artifacts/packages/**/VS.Redist.Common.AspNetCore.*.nupkg' - nuGetFeedType: external - publishFeedCredentials: 'DevDiv - VS package feed' - artifacts: - name: Windows_Logs path: artifacts/log/ publishOnError: true includeForks: true - - name: Windows_Packages - path: artifacts/packages/ - - # Build Windows ARM - - template: jobs/default-build.yml - parameters: - codeSign: true - jobName: Windows_arm_build - jobDisplayName: "Build: Windows ARM" - agentOs: Windows - buildArgs: - -arch arm - -sign - -pack - -noBuildNodeJS - -noBuildJava - /p:DotNetSignType=$(_SignType) - /p:OnlyPackPlatformSpecificPackages=true - /p:AssetManifestFileName=aspnetcore-win-arm.xml - $(_BuildArgs) - $(_PublishArgs) - $(_InternalRuntimeDownloadArgs) - installNodeJs: false - installJdk: false - artifacts: - - name: Windows_arm_Logs - path: artifacts/log/ - publishOnError: true - includeForks: true - - name: Windows_arm_Packages - path: artifacts/packages/ - - # Build Windows ARM64 - - template: jobs/default-build.yml - parameters: - codeSign: true - jobName: Windows_arm64_build - jobDisplayName: "Build: Windows ARM64" - agentOs: Windows - installNodeJs: false - installJdk: false - artifacts: - - name: Windows_arm64_Logs - path: artifacts/log/ - publishOnError: true - includeForks: true - - name: Windows_arm64_Packages - path: artifacts/packages/ - - name: Windows_arm64_Installers - path: artifacts/installers/ - steps: - - script: ./eng/build.cmd - -ci - -arch arm64 - -sign - -pack - -noBuildJava - -noBuildNative - /p:DotNetSignType=$(_SignType) - /p:OnlyPackPlatformSpecificPackages=true - $(_BuildArgs) - $(_InternalRuntimeDownloadArgs) - $(WindowsArm64LogArgs) - displayName: Build ARM64 - - # Windows installers bundle for arm64 - - script: ./eng/build.cmd - -ci - -noBuildRepoTasks - -arch arm64 - -sign - -buildInstallers - -noBuildNative - /p:DotNetSignType=$(_SignType) - /p:AssetManifestFileName=aspnetcore-win-arm64.xml - $(_BuildArgs) - $(_PublishArgs) - $(_InternalRuntimeDownloadArgs) - $(WindowsArm64InstallersLogArgs) - displayName: Build Arm64 Installers - - # A few files must also go to the VS package feed. - - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), ne(variables['PostBuildSign'], 'true')) }}: - - task: NuGetCommand@2 - displayName: Push Visual Studio packages - inputs: - command: push - packagesToPush: 'artifacts/packages/**/VS.Redist.Common.AspNetCore.*.nupkg' - nuGetFeedType: external - publishFeedCredentials: 'DevDiv - VS package feed' - - - # Build MacOS arm64 - - template: jobs/default-build.yml - parameters: - jobName: MacOs_arm64_build - jobDisplayName: "Build: macOS arm64" - agentOs: macOs - buildArgs: - --arch arm64 - --pack - --all - --no-build-nodejs - --no-build-java - -p:OnlyPackPlatformSpecificPackages=true - -p:AssetManifestFileName=aspnetcore-MacOS_arm64.xml - $(_BuildArgs) - $(_PublishArgs) - $(_InternalRuntimeDownloadArgs) - installNodeJs: false - installJdk: false - artifacts: - - name: MacOS_arm64_Logs - path: artifacts/log/ - publishOnError: true - includeForks: true - - name: MacOS_arm64_Packages - path: artifacts/packages/ - - - ${{ if ne(variables['PostBuildSign'], 'true') }}: - - template: jobs/codesign-xplat.yml - parameters: - inputName: MacOS_arm64 - - # Build MacOS x64 - - template: jobs/default-build.yml - parameters: - jobName: MacOs_x64_build - jobDisplayName: "Build: macOS x64" - agentOs: macOs - buildArgs: - --pack - --all - --no-build-nodejs - --no-build-java - -p:OnlyPackPlatformSpecificPackages=true - -p:AssetManifestFileName=aspnetcore-MacOS_x64.xml - $(_BuildArgs) - $(_PublishArgs) - $(_InternalRuntimeDownloadArgs) - installNodeJs: false - installJdk: false - artifacts: - - name: MacOS_x64_Logs - path: artifacts/log/ - publishOnError: true - includeForks: true - - name: MacOS_x64_Packages - path: artifacts/packages/ - - - ${{ if ne(variables['PostBuildSign'], 'true') }}: - - template: jobs/codesign-xplat.yml - parameters: - inputName: MacOS_x64 # Build Linux x64 - template: jobs/default-build.yml @@ -404,457 +174,13 @@ stages: - script: ./eng/build.sh --ci --arch x64 - --pack --all - --no-build-nodejs - --no-build-java - -p:OnlyPackPlatformSpecificPackages=true - -p:AssetManifestFileName=aspnetcore-Linux_x64.xml $(_BuildArgs) $(_InternalRuntimeDownloadArgs) '/fileLoggerParameters:LogFile=artifacts/log/performance.x64.log;PerformanceSummary;Verbosity=Quiet' displayName: Run build.sh - - script: | - git clean -xfd src/**/obj/ - ./dockerbuild.sh bionic \ - --ci \ - --nobl \ - --arch x64 \ - --build-installers \ - --no-build-deps \ - --no-build-nodejs \ - -p:OnlyPackPlatformSpecificPackages=true \ - -p:BuildRuntimeArchive=false \ - -p:LinuxInstallerType=deb \ - $(_BuildArgs) \ - $(_InternalRuntimeDownloadArgs) - displayName: Build Debian installers - - script: | - git clean -xfd src/**/obj/ - ./dockerbuild.sh rhel \ - --ci \ - --nobl \ - --arch x64 \ - --build-installers \ - --no-build-deps \ - --no-build-nodejs \ - -p:OnlyPackPlatformSpecificPackages=true \ - -p:BuildRuntimeArchive=false \ - -p:LinuxInstallerType=rpm \ - -p:AssetManifestFileName=aspnetcore-Linux_x64.xml \ - $(_BuildArgs) \ - $(_PublishArgs) \ - $(_InternalRuntimeDownloadArgs) - displayName: Build RPM installers - installNodeJs: false - installJdk: false artifacts: - name: Linux_x64_Logs path: artifacts/log/ publishOnError: true includeForks: true - - name: Linux_x64_Packages - path: artifacts/packages/ - - - ${{ if ne(variables['PostBuildSign'], 'true') }}: - - template: jobs/codesign-xplat.yml - parameters: - inputName: Linux_x64 - - # Build Linux ARM - - template: jobs/default-build.yml - parameters: - jobName: Linux_arm_build - jobDisplayName: "Build: Linux ARM" - agentOs: Linux - buildArgs: - --arch arm - --pack - --all - --no-build-nodejs - --no-build-java - -p:OnlyPackPlatformSpecificPackages=true - -p:AssetManifestFileName=aspnetcore-Linux_arm.xml - $(_BuildArgs) - $(_PublishArgs) - $(_InternalRuntimeDownloadArgs) - installNodeJs: false - installJdk: false - artifacts: - - name: Linux_arm_Logs - path: artifacts/log/ - publishOnError: true - includeForks: true - - name: Linux_arm_Packages - path: artifacts/packages/ - - - ${{ if ne(variables['PostBuildSign'], 'true') }}: - - template: jobs/codesign-xplat.yml - parameters: - inputName: Linux_arm - - # Build Linux ARM64 - - template: jobs/default-build.yml - parameters: - jobName: Linux_arm64_build - jobDisplayName: "Build: Linux ARM64" - agentOs: Linux - buildArgs: - --arch arm64 - --all - --pack - --no-build-nodejs - --no-build-java - -p:OnlyPackPlatformSpecificPackages=true - -p:AssetManifestFileName=aspnetcore-Linux_arm64.xml - $(_BuildArgs) - $(_PublishArgs) - $(_InternalRuntimeDownloadArgs) - installNodeJs: false - installJdk: false - artifacts: - - name: Linux_arm64_Logs - path: artifacts/log/ - publishOnError: true - includeForks: true - - name: Linux_arm64_Packages - path: artifacts/packages/ - - - ${{ if ne(variables['PostBuildSign'], 'true') }}: - - template: jobs/codesign-xplat.yml - parameters: - inputName: Linux_arm64 - - # Build Linux Musl x64 - - template: jobs/default-build.yml - parameters: - jobName: Linux_musl_x64_build - jobDisplayName: "Build: Linux Musl x64" - agentOs: Linux - container: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.9-WithNode-0fc54a3-20190918214015 - buildScript: ./eng/build.sh - buildArgs: - --arch x64 - --os-name linux-musl - --pack - --all - --no-build-nodejs - --no-build-java - -p:OnlyPackPlatformSpecificPackages=true - -p:AssetManifestFileName=aspnetcore-Linux_musl_x64.xml - $(_BuildArgs) - $(_PublishArgs) - $(_InternalRuntimeDownloadArgs) - installNodeJs: false - installJdk: false - skipComponentGovernanceDetection: true - artifacts: - - name: Linux_musl_x64_Logs - path: artifacts/log/ - publishOnError: true - includeForks: true - - name: Linux_musl_x64_Packages - path: artifacts/packages/ - - - ${{ if ne(variables['PostBuildSign'], 'true') }}: - - template: jobs/codesign-xplat.yml - parameters: - inputName: Linux_musl_x64 - - # Build Linux Musl ARM - - template: jobs/default-build.yml - parameters: - jobName: Linux_musl_arm_build - jobDisplayName: "Build: Linux Musl ARM" - agentOs: Linux - useHostedUbuntu: false - container: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-cross-arm-alpine-20200827125937-14441ae - buildScript: ./eng/build.sh - buildArgs: - --arch arm - --os-name linux-musl - --pack - --all - --no-build-nodejs - --no-build-java - -p:OnlyPackPlatformSpecificPackages=true - -p:AssetManifestFileName=aspnetcore-Linux_musl_arm.xml - $(_BuildArgs) - $(_PublishArgs) - $(_InternalRuntimeDownloadArgs) - installNodeJs: false - installJdk: false - artifacts: - - name: Linux_musl_arm_Logs - path: artifacts/log/ - publishOnError: true - includeForks: true - - name: Linux_musl_arm_Packages - path: artifacts/packages/ - - - ${{ if ne(variables['PostBuildSign'], 'true') }}: - - template: jobs/codesign-xplat.yml - parameters: - inputName: Linux_musl_arm - - # Build Linux Musl ARM64 - - template: jobs/default-build.yml - parameters: - jobName: Linux_musl_arm64_build - jobDisplayName: "Build: Linux Musl ARM64" - agentOs: Linux - useHostedUbuntu: false - container: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-arm64-alpine-20200413125008-406629a - buildScript: ./eng/build.sh - buildArgs: - --arch arm64 - --os-name linux-musl - --pack - --all - --no-build-nodejs - --no-build-java - -p:OnlyPackPlatformSpecificPackages=true - -p:AssetManifestFileName=aspnetcore-Linux_musl_arm64.xml - $(_BuildArgs) - $(_PublishArgs) - $(_InternalRuntimeDownloadArgs) - installNodeJs: false - installJdk: false - artifacts: - - name: Linux_musl_arm64_Logs - path: artifacts/log/ - publishOnError: true - includeForks: true - - name: Linux_musl_arm64_Packages - path: artifacts/packages/ - - - ${{ if ne(variables['PostBuildSign'], 'true') }}: - - template: jobs/codesign-xplat.yml - parameters: - inputName: Linux_musl_arm64 - - - ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: - # Test jobs - - template: jobs/default-build.yml - parameters: - condition: ne(variables['SkipTests'], 'true') - jobName: Windows_Test - jobDisplayName: "Test: Windows Server 2016 x64" - agentOs: Windows - isTestingJob: true - # Just uploading artifacts/logs/ files can take 15 minutes. Doubling the cancel timeout for this job. - cancelTimeoutInMinutes: 30 - buildArgs: -all -pack -test /p:SkipHelixReadyTests=true /p:SkipIISNewHandlerTests=true /p:SkipIISTests=true - /p:SkipIISExpressTests=true /p:SkipIISNewShimTests=true /p:RunTemplateTests=false - $(_InternalRuntimeDownloadArgs) - beforeBuild: - - powershell: "& ./src/Servers/IIS/tools/UpdateIISExpressCertificate.ps1; & ./src/Servers/IIS/tools/update_schema.ps1" - displayName: Setup IISExpress test certificates and schema - artifacts: - - name: Windows_Test_Dumps - path: artifacts/dumps/ - publishOnError: true - includeForks: true - - name: Windows_Test_Logs - path: artifacts/log/ - publishOnError: true - includeForks: true - - name: Windows_Test_Results - path: artifacts/TestResults/ - publishOnError: true - includeForks: true - - - template: jobs/default-build.yml - parameters: - condition: ne(variables['SkipTests'], 'true') - jobName: Windows_Templates_Test - jobDisplayName: "Test: Templates - Windows Server 2016 x64" - agentOs: Windows - isTestingJob: true - testRunTitle: Templates-$(AgentOsName)-$(BuildConfiguration) - steps: - - script: ./eng/build.cmd -ci -nobl -all -pack $(_InternalRuntimeDownloadArgs) - displayName: Build Repo - - script: ./src/ProjectTemplates/build.cmd -ci -nobl -noBuildRepoTasks -pack -NoRestore -noBuildNative -NoBuilddeps "/p:RunTemplateTests=true" - displayName: Pack Templates - - script: ./src/ProjectTemplates/build.cmd -ci -nobl -noBuildRepoTasks -test -NoRestore -NoBuild -NoBuilddeps "/p:RunTemplateTests=true" - displayName: Test Templates - artifacts: - - name: Windows_Test_Templates_Dumps - path: artifacts/dumps/ - publishOnError: true - includeForks: true - - name: Windows_Test_Templates_Logs - path: artifacts/log/ - publishOnError: true - includeForks: true - - name: Windows_Test_Templates_Results - path: artifacts/TestResults/ - publishOnError: true - includeForks: true - - - template: jobs/default-build.yml - parameters: - condition: ne(variables['SkipTests'], 'true') - jobName: MacOS_Test - jobDisplayName: "Test: macOS 10.14" - agentOs: macOS - timeoutInMinutes: 240 - isTestingJob: true - buildArgs: --all --test "/p:RunTemplateTests=false /p:SkipHelixReadyTests=true" $(_InternalRuntimeDownloadArgs) - beforeBuild: - - bash: "./eng/scripts/install-nginx-mac.sh" - displayName: Installing Nginx - artifacts: - - name: MacOS_Test_Logs - path: artifacts/log/ - publishOnError: true - includeForks: true - - name: MacOS_Test_Results - path: artifacts/TestResults/ - publishOnError: true - includeForks: true - - - template: jobs/default-build.yml - parameters: - condition: ne(variables['SkipTests'], 'true') - jobName: Linux_Test - jobDisplayName: "Test: Ubuntu 16.04 x64" - agentOs: Linux - isTestingJob: true - useHostedUbuntu: false - buildArgs: --all --test "/p:RunTemplateTests=false /p:SkipHelixReadyTests=true" $(_InternalRuntimeDownloadArgs) - beforeBuild: - - bash: "./eng/scripts/install-nginx-linux.sh" - displayName: Installing Nginx - - bash: "echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p" - displayName: Increase inotify limit - artifacts: - - name: Linux_Test_Logs - path: artifacts/log/ - publishOnError: true - includeForks: true - - name: Linux_Test_Results - path: artifacts/TestResults/ - publishOnError: true - includeForks: true - - # Helix x64 - - template: jobs/default-build.yml - parameters: - jobName: Helix_x64 - jobDisplayName: 'Tests: Helix x64' - agentOs: Windows - timeoutInMinutes: 240 - steps: - # Build the shared framework - - script: ./eng/build.cmd -ci -nobl -all -pack -arch x64 - /p:CrossgenOutput=false /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log $(_InternalRuntimeDownloadArgs) - displayName: Build shared fx - - script: ./eng/build.cmd -ci -nobl -noBuildRepoTasks -restore -noBuild -noBuildNative -projects src/Grpc/**/*.csproj - /p:CrossgenOutput=false /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log $(_InternalRuntimeDownloadArgs) - displayName: Restore interop projects - - script: ./eng/build.cmd -ci -nobl -noBuildRepoTasks -noRestore -test -all -noBuildNative -projects eng\helix\helix.proj - /p:IsRequiredCheck=true /p:IsHelixJob=true /p:BuildInteropProjects=true /p:RunTemplateTests=true - /p:CrossgenOutput=false /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log $(_InternalRuntimeDownloadArgs) - displayName: Run build.cmd helix target - env: - HelixApiAccessToken: $(HelixApiAccessToken) # Needed for internal queues - SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops - - artifacts: - - name: Helix_logs - path: artifacts/log/ - publishOnError: true - includeForks: true - - # Source build - - job: Source_Build - displayName: 'Test: Linux Source Build' - container: centos:7 - pool: - vmImage: 'ubuntu-16.04' - variables: - DotNetCoreSdkDir: $(Agent.ToolsDirectory)/dotnet - # This isn't needed in the path because build does not need to _use_ global tools. - DOTNET_CLI_HOME: $(System.DefaultWorkingDirectory) - DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: true - steps: - - script: | - source eng/common/native/common-library.sh - mkdir -p $(System.DefaultWorkingDirectory)/.tools - GetFile https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 $(System.DefaultWorkingDirectory)/.tools/jq - chmod +x $(System.DefaultWorkingDirectory)/.tools/jq - echo "##vso[task.prependpath]$(System.DefaultWorkingDirectory)/.tools" - displayName: Install jq - - ${{ if ne(variables['System.TeamProject'], 'public') }}: - - task: Bash@3 - displayName: Setup Private Feeds Credentials - inputs: - filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh - arguments: $(Build.SourcesDirectory)/NuGet.config $Token - env: - Token: $(dn-bot-dnceng-artifact-feeds-rw) - - script: ./eng/scripts/ci-source-build.sh --ci --nobl --configuration Release /p:BuildManaged=true /p:BuildNodeJs=false $(_InternalRuntimeDownloadArgs) - displayName: Run ci-source-build.sh - - task: PublishBuildArtifacts@1 - displayName: Upload logs - condition: always() - continueOnError: true - inputs: - pathtoPublish: artifacts/log/ - artifactName: Source_Build_Logs - artifactType: Container - parallel: true - - task: PublishBuildArtifacts@1 - displayName: Upload package artifacts - # Only capture source build artifacts in PRs for the sake of inspecting - # changes that impact source-build. The artifacts from this build pipeline are never actually used. - condition: and(succeeded(), in(variables['Build.Reason'], 'PullRequest')) - inputs: - pathtoPublish: artifacts/packages/ - artifactName: Source_Build_Packages - artifactType: Container - parallel: true - - # Publish to the BAR - - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - template: /eng/common/templates/job/publish-build-assets.yml - parameters: - dependsOn: - - Windows_build - - Windows_arm_build - - Windows_arm64_build - - ${{ if ne(variables['PostBuildSign'], 'true') }}: - - CodeSign_Xplat_MacOS_arm64 - - CodeSign_Xplat_MacOS_x64 - - CodeSign_Xplat_Linux_x64 - - CodeSign_Xplat_Linux_arm - - CodeSign_Xplat_Linux_arm64 - - CodeSign_Xplat_Linux_musl_x64 - - CodeSign_Xplat_Linux_musl_arm - - CodeSign_Xplat_Linux_musl_arm64 - - ${{ if eq(variables['PostBuildSign'], 'true') }}: - - MacOs_arm64_build - - MacOs_x64_build - - Linux_x64_build - - Linux_arm_build - - Linux_arm64_build - - Linux_musl_x64_build - - Linux_musl_arm_build - - Linux_musl_arm64_build - # In addition to the dependencies above, ensure the build was successful overall. - - Source_Build - pool: - vmImage: vs2017-win2016 - publishUsingPipelines: ${{ variables._PublishUsingPipelines }} - enablePublishBuildArtifacts: true # publish artifacts/log files - -- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - template: /eng/common/templates/post-build/post-build.yml - parameters: - publishingInfraVersion: 3 - enableSymbolValidation: false - enableSigningValidation: false - enableNugetValidation: false - publishInstallersAndChecksums: true diff --git a/.azure/pipelines/jobs/default-build.yml b/.azure/pipelines/jobs/default-build.yml index 88f0bebc179e..c3d25c3505a7 100644 --- a/.azure/pipelines/jobs/default-build.yml +++ b/.azure/pipelines/jobs/default-build.yml @@ -89,6 +89,28 @@ jobs: enableTelemetry: true helixRepo: dotnet/aspnetcore helixType: build.product/ + strategy: + matrix: + i0: + iteration: 0 + i1: + iteration: 1 + i2: + iteration: 2 + i3: + iteration: 3 + i4: + iteration: 4 + i5: + iteration: 5 + i6: + iteration: 6 + i7: + iteration: 7 + i8: + iteration: 8 + i9: + iteration: 9 workspace: clean: all # Map friendly OS names to the right queue @@ -275,9 +297,9 @@ jobs: inputs: pathtoPublish: $(Build.SourcesDirectory)/${{ artifact.path }} ${{ if eq(artifact.name, '') }}: - artifactName: artifacts-$(AgentOsName)-$(BuildConfiguration) + artifactName: artifacts-$(AgentOsName)-$(BuildConfiguration)-$(iteration) ${{ if ne(artifact.name, '') }}: - artifactName: ${{ artifact.name }} + artifactName: ${{ artifact.name }}-$(iteration) artifactType: Container parallel: true From d90196696c09b2a5fce00b9cb3795e0c4d751f2f Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Fri, 19 Feb 2021 16:43:20 -0800 Subject: [PATCH 3/3] Use fewer large item groups - do not dupe the `@(ProjectReferenceProvider)` item group --- eng/targets/ResolveReferences.targets | 58 ++++++++------------------- 1 file changed, 17 insertions(+), 41 deletions(-) diff --git a/eng/targets/ResolveReferences.targets b/eng/targets/ResolveReferences.targets index 23b173a712b3..1362f7d5d24c 100644 --- a/eng/targets/ResolveReferences.targets +++ b/eng/targets/ResolveReferences.targets @@ -86,46 +86,22 @@ - - <_AllProjectReference Include="@(ProjectReferenceProvider)" /> - - - <_AllProjectReference Update="@(ProjectReference->'%(Filename)')" DirectUse="1" /> - - <_AllProjectReference Update="@(Reference)" Use="1"> - - %(Reference.Aliases) - %(Reference.BuildInParallel) - %(Reference.DoNotHarvest) - %(Reference.ExcludeAssets) - %(Reference.IncludeAssets) - %(Reference.IsNativeImage) - %(Reference.LinkBase) - %(Reference.Name) - %(Reference.OutputItemType) - %(Reference.Package) - %(Reference.Private) - %(Reference.PrivateAssets) - %(Reference.Project) - %(Reference.Properties) - %(Reference.Publish) - %(Reference.ReferenceOutputAssembly) - %(Reference.SetPlatform) - %(Reference.SkipGetTargetFrameworkProperties) - %(Reference.Targets) - %(Reference.UndefineProperties) - %(Reference.Watch) - - - - + + + + + + + +