diff --git a/.azure/pipelines/benchmarks.yml b/.azure/pipelines/benchmarks.yml index 367526a4c73d..6e319f80da88 100644 --- a/.azure/pipelines/benchmarks.yml +++ b/.azure/pipelines/benchmarks.yml @@ -9,8 +9,7 @@ jobs: jobName: Windows_Build jobDisplayName: "Build only : Windows" agentOs: Windows - buildArgs: -all -pack + buildArgs: -ci -all -pack artifacts: - path: artifacts/ - publish: true - force: true + - path: artifacts/ + includeForks: true diff --git a/.azure/pipelines/ci-official.yml b/.azure/pipelines/ci-official.yml deleted file mode 100644 index 4c268252e64a..000000000000 --- a/.azure/pipelines/ci-official.yml +++ /dev/null @@ -1,222 +0,0 @@ -trigger: - branches: - include: - - master - - release/* - exclude: - - release/2.0 - -name: $(Date:yyMMdd)-$(Rev:rr) - -phases: -- phase: Windows - queue: - name: DotNetCore-Windows - timeoutInMinutes: 120 - matrix: - Release: - BuildConfiguration: Release - variables: - CI: true - DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true - - # This variable is required by MicroBuildSigningPlugin to determine permissions for codesigning. - TeamName: AspNetCore - - # SignType = { test, real } - # This is prefixed underscore because variables automatically become environment variables (and therefore MSBuild properties), - # and this one was causing issues in MSBuild projects which use the $(SignType) MSbuild prop. - _SignType: real - - steps: - - task: NodeTool@0 - displayName: Install Node 10.x - inputs: - versionSpec: 10.x - - task: MicroBuildSigningPlugin@1 - displayName: Install MicroBuild plugin - condition: and(succeeded(), in(variables['_SignType'], 'test', 'real')) - inputs: - signType: $(_SignType) - zipSources: false - # TODO: configure build.cmd to build both x64 and x86 in one invocation - - script: build.cmd -ci /p:SkipTests=true /p:Configuration=$(BuildConfiguration) /p:BuildNumber=$(Build.BuildNumber) /t:Build /t:BuildSharedFx /p:SharedFxRID=win-x64 /t:BuildFallbackArchive - displayName: Build NuGet packages and win-x64 runtime - - script: build.cmd -ci /p:SkipTests=true /p:Configuration=$(BuildConfiguration) /p:BuildNumber=$(Build.BuildNumber) /t:BuildSharedFx /p:SharedFxRID=win-x86 - displayName: Build win-x86 runtime - - script: build.cmd -ci /p:SkipTests=true /p:Configuration=$(BuildConfiguration) /p:BuildNumber=$(Build.BuildNumber) /t:BuildSharedFx /p:SharedFxRID=win-arm - displayName: Build win-arm runtime - - powershell: > - src/Installers/Windows/clone_and_build_ancm.ps1 - -GitCredential '$(dn-bot-devdiv-build-rw-code-rw)' - -Config $(BuildConfiguration) - -BuildNumber $(Build.BuildNumber) - -SignType $(_SignType) - displayName: Build ANCM installers - # TODO: configure harvesting to run as a part of build.cmd - - powershell: > - src/Installers/Windows/build.ps1 - -x64 artifacts/runtime/aspnetcore-runtime-internal-3.0.0-alpha1-$(Build.BuildNumber)-win-x64.zip - -x86 artifacts/runtime/aspnetcore-runtime-internal-3.0.0-alpha1-$(Build.BuildNumber)-win-x86.zip - -Config $(BuildConfiguration) - -BuildNumber $(Build.BuildNumber) - -SignType $(_SignType) - displayName: Build Windows installers - - task: PublishTestResults@2 - displayName: Publish test results - condition: always() - inputs: - testRunner: vstest - testResultsFiles: 'artifacts/logs/**/*.trx' - - task: PublishBuildArtifacts@1 - displayName: Upload artifacts - condition: eq(variables['system.pullrequest.isfork'], false) - inputs: - pathtoPublish: ./artifacts/ - artifactName: artifacts-Windows-Release - artifactType: Container - # Detect OSS Components in use in the product. Only needs to run on one OS in the matrix. - - task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 - displayName: 'Component Detection' - inputs: - # This funky GUID represents the product "ASP.NET and EF Core" - governanceProduct: 'c641993b-8380-e811-80c3-0004ffb4789e' - snapshotForceEnabled: true - - task: MicroBuildCleanup@1 - displayName: Cleanup MicroBuild tasks - condition: always() - -- phase: macOS - dependsOn: Windows - queue: - name: Hosted macOS Preview - matrix: - Release: - BuildConfiguration: Release - variables: - CI: true - DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true - steps: - - task: DownloadBuildArtifacts@0 - displayName: Download artifacts - inputs: - artifactName: artifacts-Windows-Release - downloadPath: $(Build.SourcesDirectory)/.deps - itemPattern: '**/*.nupkg' - # Workaround https://github.com/Microsoft/vsts-tasks/issues/6739 - - task: CopyFiles@2 - displayName: Copy package assets to correct folder - inputs: - sourceFolder: $(Build.SourcesDirectory)/.deps/artifacts-Windows-Release - targetFolder: $(Build.SourcesDirectory)/.deps - - script: > - ./build.sh - --ci - /t:Prepare - /t:Restore - /t:GeneratePropsFiles - /t:BuildSharedFx - /p:SharedFxRID=osx-x64 - /p:BuildNumber=$(Build.BuildNumber) - displayName: Build osx-x64 runtime - - task: PublishTestResults@2 - displayName: Publish test results - condition: always() - inputs: - testRunner: vstest - testResultsFiles: 'artifacts/logs/**/*.trx' - - task: PublishBuildArtifacts@1 - displayName: Upload artifacts - condition: eq(variables['system.pullrequest.isfork'], false) - inputs: - pathtoPublish: ./artifacts/ - artifactName: artifacts-macOS-Release - artifactType: Container - -- phase: Linux - dependsOn: - - Windows - - macOS - queue: - name: DotNetCore-Linux - matrix: - Release: - BuildConfiguration: Release - variables: - CI: true - DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true - steps: - - task: DownloadBuildArtifacts@0 - displayName: Download artifacts - inputs: - artifactName: artifacts-Windows-Release - downloadPath: $(Build.SourcesDirectory)/.deps - itemPattern: '**/*.nupkg' - - task: DownloadBuildArtifacts@0 - displayName: Download Windows artifacts - inputs: - artifactName: artifacts-Windows-Release - downloadPath: $(Build.SourcesDirectory)/.r - itemPattern: '**/aspnetcore-runtime-*' - - task: DownloadBuildArtifacts@0 - displayName: Download macOS artifacts - inputs: - artifactName: artifacts-macOS-Release - downloadPath: $(Build.SourcesDirectory)/.r - itemPattern: '**/aspnetcore-runtime-*' - # Workaround https://github.com/Microsoft/vsts-tasks/issues/6739 - - task: CopyFiles@2 - displayName: Copy package assets to correct folder - inputs: - sourceFolder: $(Build.SourcesDirectory)/.deps/artifacts-Windows-Release - targetFolder: $(Build.SourcesDirectory)/.deps - # TODO: Make the cumulative zips build in their own step - - task: CopyFiles@2 - displayName: Copy package assets to correct folder - inputs: - sourceFolder: $(Build.SourcesDirectory)/.r/artifacts-Windows-Release - targetFolder: $(Build.SourcesDirectory)/artifacts/ - - task: CopyFiles@2 - displayName: Copy package assets to correct folder - inputs: - sourceFolder: $(Build.SourcesDirectory)/.r/artifacts-macOS-Release - targetFolder: $(Build.SourcesDirectory)/artifacts/ - - script: > - ./build.sh - --ci - /t:Prepare - /t:Restore - /t:GeneratePropsFiles - /t:BuildSharedFx - /p:SharedFxRID=linux-x64 - /p:BuildNumber=$(Build.BuildNumber) - displayName: Build linux-x64 runtime - - script: > - ./build.sh - --ci - /t:BuildSharedFx - /p:SharedFxRID=linux-arm - /p:BuildNumber=$(Build.BuildNumber) - displayName: Build linux-arm runtime - - script: > - ./dockerbuild.sh - alpine - /t:Prepare - /t:GeneratePropsFiles - /t:BuildSharedFx - /p:SharedFxRID=linux-musl-x64 - /p:BuildNumber=$(Build.BuildNumber) - displayName: Build linux-musl-x64 runtime - - task: PublishTestResults@2 - displayName: Publish test results - condition: always() - inputs: - testRunner: vstest - testResultsFiles: 'artifacts/logs/**/*.trx' - - task: PublishBuildArtifacts@1 - displayName: Upload artifacts - condition: eq(variables['system.pullrequest.isfork'], false) - inputs: - pathtoPublish: ./artifacts/ - artifactName: artifacts-Linux-Release - artifactType: Container diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml index 2720630c00bb..c05e880ec8d2 100644 --- a/.azure/pipelines/ci.yml +++ b/.azure/pipelines/ci.yml @@ -1,8 +1,20 @@ -# Don't run CI for this config yet. We're not ready to move official builds on to Azure Pipelines -trigger: none +# +# See https://docs.microsoft.com/en-us/vsts/pipelines/yaml-schema for details on this file. +# + +# Configure which branches trigger builds +trigger: + batch: true + branches: + include: + - master + - release/* + - internal/release/* + - ci/* # Run PR validation on all branches pr: + autoCancel: true branches: include: - '*' @@ -16,48 +28,283 @@ jobs: vmImage: vs2017-win2016 steps: - powershell: ./eng/scripts/CodeCheck.ps1 -ci + displayName: Run eng/scripts/CodeCheck.ps1 + +- template: jobs/default-build.yml + parameters: + codeSign: true + agentOs: Windows + buildScript: ./src/SiteExtensions/LoggingAggregate/build.cmd + buildArgs: -ci -sign /p:SignType=$(_SignType) + jobName: SiteExtensions + jobDisplayName: "Build: Azure Logging Site Extension" + artifacts: + - name: AzureSiteExtensions_Packages + path: artifacts/packages/ + - name: AzureSiteExtensions_Logs + path: artifacts/logs/ + +# Build Windows (x64/x86) +- template: jobs/default-build.yml + parameters: + codeSign: true + jobName: Windows_build + jobDisplayName: "Build: Windows x64/x86" + agentOs: Windows + buildSteps: + - script: "echo ##vso[build.addbuildtag]daily-build" + condition: and(ne(variables['Build.Reason'], 'PullRequest'), ne(variables['IsFinalBuild'], 'true')) + displayName: 'Set CI tags' + - script: "echo ##vso[build.addbuildtag]release-candidate" + condition: and(ne(variables['Build.Reason'], 'PullRequest'), eq(variables['IsFinalBuild'], 'true')) + displayName: 'Set CI tags' + # This is going to actually build x86 native assets + # TODO: make it possible to build for one Windows architecture at a time + - script: ./eng/scripts/cibuild.cmd -arch x64 /p:SignType=$(_SignType) + displayName: Build x64 + # Build the x86 shared framework + - script: ./eng/scripts/cibuild.cmd -arch x86 /t:BuildSharedFx /p:SignType=$(_SignType) + displayName: Build x86 + # Windows installers bundle both x86 and x64 assets + - powershell: | + ./src/Installers/Windows/build.ps1 ` + -ci ` + '/p:SignType=$(_SignType)' + displayName: Build Installers + artifacts: + - name: Windows_Packages + path: artifacts/packages/ + - name: Windows_VSIX + path: artifacts/VSSetup/ + - name: Windows_Manifests + path: artifacts/manifests/ + - name: Windows_Installers + path: artifacts/installers/ + - name: Windows_Logs + path: artifacts/logs/ + +# Build Windows ARM +- template: jobs/default-build.yml + parameters: + codeSign: true + jobName: Windows_arm_build + jobDisplayName: "Build: Windows ARM" + agentOs: Windows + buildScript: ./eng/scripts/cibuild.cmd + buildArgs: -arch arm /p:SignType=$(_SignType) + afterBuild: + # Remove packages that are not rid-specific. + # TODO add a flag so builds only produce runtime packages + - powershell: gci artifacts/packages/ -recurse -exclude 'runtime.*' -file | rm -ea ignore + artifacts: + - name: Windows_arm_Packages + path: artifacts/packages/ + - name: Windows_arm_Manifests + path: artifacts/manifests/ + - name: Windows_arm_Installers + path: artifacts/installers/ + - name: Windows_arm_Logs + path: artifacts/logs/ + +# Build MacOS +- template: jobs/default-build.yml + parameters: + jobName: MacOs_x64_build + jobDisplayName: "Build: macOS" + agentOs: macOs + buildScript: ./eng/scripts/cibuild.sh + buildArgs: --no-build-nodejs --no-build-java + afterBuild: + # Remove packages that are not rid-specific. + # TODO add a flag so macOS/Linux builds only produce runtime packages + - script: find artifacts/packages/ -type f -not -name 'runtime.*' -delete + artifacts: + - name: MacOS_x64_Packages + path: artifacts/packages/ + - name: MacOS_x64_Manifests + path: artifacts/manifests/ + - name: MacOS_x64_Installers + path: artifacts/installers/ + - name: MacOS_x64_Logs + path: artifacts/logs/ +- template: jobs/codesign-xplat.yml + parameters: + inputName: MacOS_x64 + +# Build Linux x64 +- template: jobs/default-build.yml + parameters: + jobName: Linux_x64_build + jobDisplayName: "Build: Linux x64" + agentOs: Linux + buildSteps: + - script: ./eng/scripts/cibuild.sh --arch x64 --no-build-nodejs --no-build-java + displayName: Run cibuild.sh + - script: | + rm -rf .dotnet/ + git clean -xfd src/ + ./dockerbuild.sh bionic \ + --ci --pack --all --no-build-nodejs --no-build-java \ + --arch x64 \ + -e KOREBUILD_SKIP_INSTALL_NETFX=0 \ + /t:BuildSharedFx \ + /p:BuildRuntimeArchive=false \ + /p:LinuxInstallerType=deb + displayName: Build Debian installers + - script: | + rm -rf .dotnet/ + git clean -xfd src/ + ./dockerbuild.sh rhel \ + --ci --pack --all --no-build-nodejs --no-build-java \ + --arch x64 \ + -e KOREBUILD_SKIP_INSTALL_NETFX=0 \ + /t:BuildSharedFx \ + /p:BuildRuntimeArchive=false \ + /p:LinuxInstallerType=rpm + displayName: Build RPM installers + afterBuild: + # Remove packages that are not rid-specific. + # TODO add a flag so macOS/Linux builds only produce runtime packages + - script: find artifacts/packages/ -type f -not -name 'runtime.*' -delete + artifacts: + - name: Linux_x64_Packages + path: artifacts/packages/ + - name: Linux_x64_Manifests + path: artifacts/manifests/ + - name: Linux_x64_Installers + path: artifacts/installers/ + - name: Linux_x64_Logs + path: artifacts/logs/ +- 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 + buildScript: ./eng/scripts/cibuild.sh + buildArgs: --arch arm --no-build-nodejs --no-build-java + afterBuild: + # Remove packages that are not rid-specific. + # TODO add a flag so macOS/Linux builds only produce runtime packages + - script: find artifacts/packages/ -type f -not -name 'runtime.*' -delete + artifacts: + - name: Linux_arm_Packages + path: artifacts/packages/ + - name: Linux_arm_Manifests + path: artifacts/manifests/ + - name: Linux_arm_Installers + path: artifacts/installers/ + - name: Linux_arm_Logs + path: artifacts/logs/ +- 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 + buildScript: ./eng/scripts/cibuild.sh + buildArgs: --arch arm64 --no-build-nodejs --no-build-java + afterBuild: + # Remove packages that are not rid-specific. + # TODO add a flag so macOS/Linux builds only produce runtime packages + - script: find artifacts/packages/ -type f -not -name 'runtime.*' -delete + artifacts: + - name: Linux_arm64_Packages + path: artifacts/packages/ + - name: Linux_arm64_Manifests + path: artifacts/manifests/ + - name: Linux_arm64_Installers + path: artifacts/installers/ + - name: Linux_arm64_Logs + path: artifacts/logs/ +- 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 + buildScript: ./dockerbuild.sh alpine + buildArgs: --ci --pack --all -e KOREBUILD_SKIP_INSTALL_NETFX=0 --arch x64 --os-name linux-musl --no-build-nodejs --no-build-java + afterBuild: + # Remove packages that are not rid-specific. + # TODO add a flag so macOS/Linux builds only produce runtime packages + - script: find artifacts/packages/ -type f -not -name 'runtime.*' -delete + artifacts: + - name: Linux_musl_x64_Packages + path: artifacts/packages/ + - name: Linux_musl_x64_Manifests + path: artifacts/manifests/ + - name: Linux_musl_x64_Installers + path: artifacts/installers/ + - name: Linux_musl_x64_Logs + path: artifacts/logs/ +- template: jobs/codesign-xplat.yml + parameters: + inputName: Linux_musl_x64 + +# Test jobs - template: jobs/default-build.yml parameters: - jobName: Windows_Build - jobDisplayName: "Build and test: Windows" + condition: ne(variables['SkipTests'], 'true') + jobName: Windows_Test + jobDisplayName: "Test: Windows Server 2016 x64" agentOs: Windows buildScript: ./eng/scripts/cibuild.cmd + buildArgs: -test "/p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISTests=true /p:SkipIISExpressTests=true /p:SkipIISForwardsCompatibilityTests=true" beforeBuild: - powershell: "& ./src/Servers/IIS/tools/UpdateIISExpressCertificate.ps1; & ./src/Servers/IIS/tools/update_schema.ps1" displayName: Setup IISExpress test certificates and schema - buildArgs: "/p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISTests=true /p:SkipIISExpressTests=true /p:SkipIISForwardsCompatibilityTests=true" - template: jobs/default-build.yml parameters: - jobName: MacOs_Build - jobDisplayName: "Build and test: macOS" + condition: ne(variables['SkipTests'], 'true') + jobName: MacOs_Test + jobDisplayName: "Test: macOS 10.13" agentOs: macOs buildScript: ./eng/scripts/cibuild.sh + buildArgs: --test beforeBuild: - bash: "./eng/scripts/install-nginx-mac.sh" displayName: Installing Nginx - template: jobs/default-build.yml parameters: - jobName: Linux_Build - jobDisplayName: "Build and test: Linux" + condition: ne(variables['SkipTests'], 'true') + jobName: Linux_Test + jobDisplayName: "Test: Ubuntu 16.04 x64" agentOs: Linux buildScript: ./eng/scripts/cibuild.sh + buildArgs: --test beforeBuild: - bash: "./eng/scripts/install-nginx-linux.sh" displayName: Installing Nginx - template: jobs/iisintegration-job.yml parameters: + condition: ne(variables['SkipTests'], 'true') TestGroupName: IIS skipArgs: " /p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISTests=false /p:SkipIISExpressTests=true /p:SkipIISForwardsCompatibilityTests=true" - template: jobs/iisintegration-job.yml parameters: + condition: ne(variables['SkipTests'], 'true') TestGroupName: IISExpress skipArgs: "/p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISTests=true /p:SkipIISExpressTests=false /p:SkipIISForwardsCompatibilityTests=true" - template: jobs/iisintegration-job.yml parameters: + condition: ne(variables['SkipTests'], 'true') TestGroupName: IISForwardCompat skipArgs: "/p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISTests=true /p:SkipIISExpressTests=true /p:SkipIISForwardsCompatibilityTests=false" - template: jobs/iisintegration-job.yml parameters: + condition: ne(variables['SkipTests'], 'true') TestGroupName: IISBackCompat skipArgs: "/p:SkipIISBackwardsCompatibilityTests=false /p:SkipIISTests=true /p:SkipIISExpressTests=true /p:SkipIISForwardsCompatibilityTests=true" -- template: jobs/site-extensions-job.yml \ No newline at end of file diff --git a/.azure/pipelines/jobs/codesign-xplat.yml b/.azure/pipelines/jobs/codesign-xplat.yml new file mode 100644 index 000000000000..d0b3d914cffc --- /dev/null +++ b/.azure/pipelines/jobs/codesign-xplat.yml @@ -0,0 +1,26 @@ +# This runs code signing for .nupkg files built on MacOS or Linux +parameters: + inputName: '' + +jobs: +- template: default-build.yml + parameters: + dependsOn: + - ${{ parameters.inputName }}_build + condition: in(variables['_SignType'], 'test', 'real') + jobName: CodeSign_Xplat_${{ parameters.inputName }} + jobDisplayName: "Code-sign ${{ parameters.inputName }} packages" + agentOs: Windows + beforeBuild: + - task: DownloadBuildArtifacts@0 + displayName: Download ${{ parameters.inputName }} artifacts + inputs: + artifactName: ${{ parameters.inputName }}_Packages + downloadPath: $(Build.StagingDirectory)/deps/ + itemPattern: '**/*.nupkg' + buildScript: eng\tools\XplatPackageSigner\sign-packages.cmd $(Build.StagingDirectory)\deps\${{ parameters.inputName }}Packages\ + artifacts: + - name: ${{ parameters.inputName }}_Packages_Signed + path: $(Build.StagingDirectory)\deps\${{ parameters.inputName }}Packages\ + - name: ${{ parameters.inputName }}_Logs + path: artifacts/logs/ diff --git a/.azure/pipelines/jobs/default-build.yml b/.azure/pipelines/jobs/default-build.yml index 270ff2be8d32..ab728158b38e 100644 --- a/.azure/pipelines/jobs/default-build.yml +++ b/.azure/pipelines/jobs/default-build.yml @@ -14,14 +14,14 @@ # Note: -ci is always passed # beforeBuild: [steps] # Additional steps to run before build.sh/cmd +# buildSteps: [steps] +# Instead of running build.cmd/sh, run these build steps. # afterBuild: [steps] # Additional steps to run after build.sh/cmd -# artifacts: -# publish: boolean -# Should artifacts be published -# path: string +# artifacts: [array] +# - path: string # The file path to artifacts output -# force: boolean +# includeForks: boolean # Should artifacts from forks be published # name: string # The name of the artifact container @@ -31,6 +31,8 @@ # A map of matrix configurations and variables. https://docs.microsoft.com/en-us/vsts/pipelines/yaml-schema?view=vsts#matrix # dependsOn: string | [ string ] # For fan-out/fan-in. https://docs.microsoft.com/en-us/vsts/pipelines/yaml-schema?view=vsts#phase +# condition: string +# A condition which can be used to skip the job completely # codeSign: boolean # This build definition is enabled for code signing. (Only applies to Windows) # buildDirectory: string @@ -48,17 +50,16 @@ parameters: buildArgs: '' configuration: 'Release' beforeBuild: [] + # buildSteps: [] don't define an empty object default because there is no way in template expression yet to check "if isEmpty(parameters.buildSteps)" afterBuild: [] codeSign: false variables: {} dependsOn: '' + condition: '' # jobName: '' - use agentOs by default. # jobDisplayName: '' - use agentOs by default. # matrix: {} - don't define an empty object default because there is no way in template expression yet to check "if isEmpty(parameters.matrix)" - artifacts: - publish: true - path: 'artifacts/' - force: false + artifacts: [] buildDirectory: '' buildScript: '' @@ -66,6 +67,8 @@ jobs: - job: ${{ coalesce(parameters.jobName, parameters.agentOs) }} displayName: ${{ coalesce(parameters.jobDisplayName, parameters.agentOs) }} dependsOn: ${{ parameters.dependsOn }} + ${{ if ne(parameters.condition, '') }}: + condition: ${{ parameters.condition }} timeoutInMinutes: 120 workspace: clean: all @@ -76,15 +79,14 @@ jobs: # Map friendly OS names to the right queue # See https://github.com/dotnet/arcade/blob/master/Documentation/ChoosingAMachinePool.md pool: - ${{ if ne(parameters.poolName, '') }}: - name: ${{ parameters.poolName }} + ${{ if ne(parameters.poolVmImage, '') }}: vmImage: ${{ parameters.poolVmImage }} - ${{ if and(eq(parameters.poolName, ''), eq(parameters.agentOs, 'macOS')) }}: - name: Hosted macOS + ${{ if and(eq(parameters.poolVmImage, ''), eq(parameters.agentOs, 'macOS')) }}: vmImage: macOS-10.13 - ${{ if and(eq(parameters.poolName, ''), eq(parameters.agentOs, 'Linux')) }}: - name: Hosted Ubuntu 1604 + ${{ if and(eq(parameters.poolVmImage, ''), eq(parameters.agentOs, 'Linux')) }}: vmImage: ubuntu-16.04 + ${{ if ne(parameters.poolName, '') }}: + name: ${{ parameters.poolName }} ${{ if and(eq(parameters.poolName, ''), eq(parameters.agentOs, 'Windows')) }}: ${{ if eq(variables['System.TeamProject'], 'internal') }}: name: dotnet-internal-temp @@ -102,7 +104,7 @@ jobs: ${{ if eq(parameters.agentOs, 'Windows') }}: JAVA_HOME: $(Agent.BuildDirectory)\.tools\jdk ${{ if or(ne(parameters.codeSign, 'true'), ne(variables['System.TeamProject'], 'internal')) }}: - _SignType: + _SignType: '' ${{ if and(eq(parameters.codeSign, 'true'), eq(variables['System.TeamProject'], 'internal')) }}: _SignType: real ${{ insert }}: ${{ parameters.variables }} @@ -124,17 +126,25 @@ jobs: signType: $(_SignType) zipSources: false feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json + - ${{ parameters.beforeBuild }} - - ${{ if eq(parameters.buildScript, '') }}: - - ${{ if eq(parameters.agentOs, 'Windows') }}: - - script: .\$(BuildDirectory)\build.cmd -ci /p:SignType=$(_SignType) /p:Configuration=$(BuildConfiguration) $(BuildScriptArgs) - displayName: Run build.cmd - - ${{ if ne(parameters.agentOs, 'Windows') }}: - - script: ./$(BuildDirectory)/build.sh -ci -p:Configuration=$(BuildConfiguration) $(BuildScriptArgs) - displayName: Run build.sh - - ${{ if ne(parameters.buildScript, '') }}: - - script: $(BuildScript) /p:Configuration=$(BuildConfiguration) $(BuildScriptArgs) - displayName: run $(BuildScript) + + - ${{ if ne(parameters.buildSteps, '')}}: + - ${{ parameters.buildSteps }} + - ${{ if eq(parameters.buildSteps, '')}}: + - ${{ if eq(parameters.buildScript, '') }}: + - ${{ if eq(parameters.agentOs, 'Windows') }}: + - script: .\$(BuildDirectory)\build.cmd -ci /p:SignType=$(_SignType) /p:Configuration=$(BuildConfiguration) $(BuildScriptArgs) + displayName: Run build.cmd + - ${{ if ne(parameters.agentOs, 'Windows') }}: + - script: ./$(BuildDirectory)/build.sh -ci -p:Configuration=$(BuildConfiguration) $(BuildScriptArgs) + displayName: Run build.sh + - ${{ if ne(parameters.buildScript, '') }}: + - script: $(BuildScript) /p:Configuration=$(BuildConfiguration) $(BuildScriptArgs) + displayName: run $(BuildScript) + + - ${{ parameters.afterBuild }} + - task: PublishTestResults@2 displayName: Publish test results condition: always() @@ -144,23 +154,23 @@ jobs: testRunner: vstest testResultsFiles: '**/artifacts/**/*.trx' mergeTestResults: true - - ${{ if eq(parameters.artifacts.publish, 'true') }}: + - ${{ each artifact in parameters.artifacts }}: - task: PublishBuildArtifacts@1 - displayName: Upload artifacts - condition: or(eq(variables['system.pullrequest.isfork'], false), eq('${{ parameters.artifacts.force }}', 'true')) + displayName: Upload artifacts from ${{ artifact.path }} + condition: or(eq(variables['system.pullrequest.isfork'], false), eq('${{ artifact.includeForks }}', 'true')) continueOnError: true inputs: ${{ if eq(parameters.buildDirectory, '') }}: - pathtoPublish: ${{ parameters.artifacts.path }} + pathtoPublish: ${{ artifact.path }} ${{ if ne(parameters.buildDirectory, '') }}: - pathtoPublish: ${{ parameters.buildDirectory }}\${{ parameters.artifacts.path }} - ${{ if eq(parameters.artifacts.name, '') }}: + pathtoPublish: ${{ parameters.buildDirectory }}\${{ artifact.path }} + ${{ if eq(artifact.name, '') }}: artifactName: artifacts-$(AgentOsName)-$(BuildConfiguration) - ${{ if ne(parameters.artifacts.name, '') }}: - artifactName: ${{ parameters.artifacts.name }} + ${{ if ne(artifact.name, '') }}: + artifactName: ${{ artifact.name }} artifactType: Container parallel: true - - ${{ parameters.afterBuild }} + - ${{ if and(eq(variables['System.TeamProject'], 'internal'), eq(parameters.agentOs, 'Windows')) }}: - task: MicroBuildCleanup@1 displayName: Cleanup MicroBuild tasks diff --git a/.azure/pipelines/jobs/iisintegration-job.yml b/.azure/pipelines/jobs/iisintegration-job.yml index d174a9fcc859..695964f24742 100644 --- a/.azure/pipelines/jobs/iisintegration-job.yml +++ b/.azure/pipelines/jobs/iisintegration-job.yml @@ -1,8 +1,8 @@ jobs: - template: default-build.yml parameters: - buildScript: ./build.cmd - buildArgs: "-ci -restore -build -test -projects src/Servers/IIS/**/*.csproj ${{ parameters.skipArgs }}" + buildScript: .\build.cmd + buildArgs: "-ci -test -projects src/Servers/IIS/**/*.csproj ${{ parameters.skipArgs }}" poolName: "Hosted VS2017" poolVmImage: "vs2017-win2016" beforeBuild: @@ -13,4 +13,4 @@ jobs: displayName: Stop AppVerifier condition: always() jobName: ANCM_${{ parameters.TestGroupName }} - jobDisplayName: "Build and test: ANCM ${{ parameters.TestGroupName }}" + jobDisplayName: "Test: ANCM ${{ parameters.TestGroupName }}" diff --git a/.azure/pipelines/jobs/site-extensions-job.yml b/.azure/pipelines/jobs/site-extensions-job.yml deleted file mode 100644 index d80b7061247d..000000000000 --- a/.azure/pipelines/jobs/site-extensions-job.yml +++ /dev/null @@ -1,10 +0,0 @@ -jobs: -- template: default-build.yml - parameters: - buildScript: ./src/SiteExtensions/LoggingAggregate/build.cmd - buildArgs: "-ci" - jobName: SiteExtensions - jobDisplayName: "Build logging site extension" - artifacts: - publish: true - path: 'artifacts' diff --git a/Directory.Build.props b/Directory.Build.props index 59cdd9ab97e7..1ba0f1b9b567 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -53,6 +53,23 @@ true true Debug + win + osx + linux + x64 + $(TargetOsName)-$(TargetArchitecture) + + + + win-x64; + win-x86; + win-arm; + osx-x64; + linux-musl-x64; + linux-x64; + linux-arm; + linux-arm64 + SHA256 @@ -61,7 +78,7 @@ false - + strict @@ -114,12 +131,13 @@ $(MSBuildThisFileDirectory)src\Mvc\src\Microsoft.AspNetCore.Mvc.Testing\Microsoft.AspNetCore.Mvc.Testing.targets + + true - diff --git a/build.cmd b/build.cmd index b6c8d24864f7..592b5d0f9526 100644 --- a/build.cmd +++ b/build.cmd @@ -1,2 +1,2 @@ @ECHO OFF -PowerShell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command "[System.Threading.Thread]::CurrentThread.CurrentCulture = ''; [System.Threading.Thread]::CurrentThread.CurrentUICulture = '';& '%~dp0build.ps1' %*; exit $LASTEXITCODE" +PowerShell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command "[System.Threading.Thread]::CurrentThread.CurrentCulture = ''; [System.Threading.Thread]::CurrentThread.CurrentUICulture = ''; try { & '%~dp0build.ps1' %*; exit $LASTEXITCODE } catch { write-host $_; exit 1 }" diff --git a/build.ps1 b/build.ps1 index e2cb9fd0d16d..578129a9acf2 100644 --- a/build.ps1 +++ b/build.ps1 @@ -13,10 +13,13 @@ build projects, run tests, and generate code. Sets up CI specific settings and variables. .PARAMETER Restore -Run restore on projects. +Run restore. -.PARAMETER Build -Compile projects. +.PARAMETER NoRestore +Suppress running restore on projects. + +.PARAMETER NoBuild +Suppress re-compile projects. (Implies -NoRestore) .PARAMETER Pack Produce packages. @@ -27,23 +30,34 @@ Run tests. .PARAMETER Sign Run code signing. +.PARAMETER Architecture +The CPU architecture to build for (x64, x86, arm). Default=x64 + .PARAMETER Projects A list of projects to build. Globbing patterns are supported, such as "$(pwd)/**/*.csproj" .PARAMETER All Build all project types. -.PARAMETER Managed +.PARAMETER BuildManaged Build managed projects (C#, F#, VB). +You can also use -NoBuildManaged to suppress this project type. -.PARAMETER Native +.PARAMETER BuildNative Build native projects (C++). +You can also use -NoBuildNative to suppress this project type. -.PARAMETER NodeJS +.PARAMETER BuildNodeJS Build NodeJS projects (TypeScript, JS). +You can also use -NoBuildNodeJS to suppress this project type. -.PARAMETER Installers +.PARAMETER BuildJava +Build Java projects. +You can also use -NoBuildJava to suppress this project type. + +.PARAMETER BuildInstallers Build Windows Installers. Required .NET 3.5 to be installed (WiX toolset requirement). +You can also use -NoBuildInstallers to suppress this project type. .PARAMETER MSBuildArguments Additional MSBuild arguments to be passed through. @@ -51,7 +65,7 @@ Additional MSBuild arguments to be passed through. .EXAMPLE Building both native and managed projects. - build.ps1 -managed -native + build.ps1 -BuildManaged -BuildNative .EXAMPLE Building a subfolder of code. @@ -71,29 +85,35 @@ param( [switch]$CI, # Build lifecycle options - [switch]$Restore = $True, # Run tests - [switch]$Build = $True, # Compile + [switch]$Restore, + [switch]$NoRestore, # Suppress restore + [switch]$NoBuild, # Suppress compiling [switch]$Pack, # Produce packages [switch]$Test, # Run tests [switch]$Sign, # Code sign - # Project selection - [Parameter(ParameterSetName = 'All')] - [switch]$All, # Build everything + [ValidateSet('x64', 'x86', 'arm')] + $Architecture = 'x64', # A list of projects which should be built. - [Parameter(ParameterSetName = 'Projects')] [string]$Projects, + # Project selection + [switch]$All, # Build everything + # Build a specified set of project groups - [Parameter(ParameterSetName = 'Groups')] - [switch]$Managed, - [Parameter(ParameterSetName = 'Groups')] - [switch]$Native, - [Parameter(ParameterSetName = 'Groups')] - [switch]$NodeJS, - [Parameter(ParameterSetName = 'Groups')] - [switch]$Installers, + [switch]$BuildManaged, + [switch]$BuildNative, + [switch]$BuildNodeJS, + [switch]$BuildJava, + [switch]$BuildInstallers, + + # Inverse of the previous switches because specifying '-switch:$false' is not intuitive for most command line users + [switch]$NoBuildManaged, + [switch]$NoBuildNative, + [switch]$NoBuildNodeJS, + [switch]$NoBuildJava, + [switch]$NoBuildInstallers, # By default, Windows builds will use MSBuild.exe. Passing this will force the build to run on # dotnet.exe instead, which may cause issues if you invoke build on a project unsupported by @@ -237,31 +257,48 @@ elseif ($Projects) { } $MSBuildArguments += "/p:Projects=$Projects" } -else { - # When adding new sub-group build flags, add them to this check. - if((-not $Native) -and (-not $Managed) -and (-not $NodeJS) -and (-not $Installers)) { - Write-Warning "No default group of projects was specified, so building the 'managed' and 'native' subsets of projects. Run ``build.cmd -help`` for more details." +# When adding new sub-group build flags, add them to this check. +elseif((-not $BuildNative) -and (-not $BuildManaged) -and (-not $BuildNodeJS) -and (-not $BuildInstallers) -and (-not $BuildJava)) { + Write-Warning "No default group of projects was specified, so building the 'managed' and 'native' subsets of projects. Run ``build.cmd -help`` for more details." - # This goal of this is to pick a sensible default for `build.cmd` with zero arguments. - # Now that we support subfolder invokations of build.cmd, we will be pushing to have build.cmd build everything (-all) by default + # This goal of this is to pick a sensible default for `build.cmd` with zero arguments. + # Now that we support subfolder invokations of build.cmd, we will be pushing to have build.cmd build everything (-all) by default - $Managed = $true - $Native = $true - } - - $MSBuildArguments += "/p:BuildManaged=$Managed" - $MSBuildArguments += "/p:BuildNative=$Native" - $MSBuildArguments += "/p:BuildNodeJS=$NodeJS" - $MSBuildArguments += "/p:BuildWindowsInstallers=$Installers" + $BuildManaged = $true + $BuildNative = $true } +if ($BuildInstallers) { $MSBuildArguments += "/p:BuildInstallers=true" } +if ($BuildManaged) { $MSBuildArguments += "/p:BuildManaged=true" } +if ($BuildNative) { $MSBuildArguments += "/p:BuildNative=true" } +if ($BuildNodeJS) { $MSBuildArguments += "/p:BuildNodeJS=true" } +if ($BuildJava) { $MSBuildArguments += "/p:BuildJava=true" } + +if ($NoBuildInstallers) { $MSBuildArguments += "/p:BuildInstallers=false" } +if ($NoBuildManaged) { $MSBuildArguments += "/p:BuildManaged=false" } +if ($NoBuildNative) { $MSBuildArguments += "/p:BuildNative=false" } +if ($NoBuildNodeJS) { $MSBuildArguments += "/p:BuildNodeJS=false" } +if ($NoBuildJava) { $MSBuildArguments += "/p:BuildJava=false" } + +$RunBuild = if ($NoBuild) { $false } else { $true } + +# Run restore by default unless -NoRestore is set. +# -NoBuild implies -NoRestore, unless -Restore is explicitly set (as in restore.cmd) +$RunRestore = if ($NoRestore) { $false } + elseif ($Restore) { $true } + elseif ($NoBuild) { $false } + else { $true } + # Target selection -$MSBuildArguments += "/p:_RunRestore=$Restore" -$MSBuildArguments += "/p:_RunBuild=$Build" +$MSBuildArguments += "/p:_RunRestore=$RunRestore" +$MSBuildArguments += "/p:_RunBuild=$RunBuild" $MSBuildArguments += "/p:_RunPack=$Pack" $MSBuildArguments += "/p:_RunTests=$Test" $MSBuildArguments += "/p:_RunSign=$Sign" +$MSBuildArguments += "/p:TargetArchitecture=$Architecture" +$MSBuildArguments += "/p:TargetOsName=win" + Import-Module -Force -Scope Local (Join-Path $korebuildPath 'KoreBuild.psd1') try { diff --git a/build.sh b/build.sh index 0ce513c03e90..bf5e54e8b010 100755 --- a/build.sh +++ b/build.sh @@ -18,15 +18,26 @@ lockfile_path="$DIR/korebuild-lock.txt" config_file="$DIR/korebuild.json" channel='master' tools_source='https://aspnetcore.blob.core.windows.net/buildtools' +target_os_name='' ci=false run_restore=true run_build=true run_pack=false run_tests=false build_all=false -build_managed=false -build_nodejs=false +build_managed='' +build_native='' +build_nodejs='' +build_java='' build_projects='' +target_arch='x64' + +if [ "$(uname)" = "Darwin" ]; then + target_os_name='osx' +else + target_os_name='linux' +fi + msbuild_args=() # @@ -36,23 +47,28 @@ __usage() { echo "Usage: $(basename "${BASH_SOURCE[0]}") [options] [[--] ...] Arguments: - ... Arguments passed to the command. Variable number of arguments allowed. + ... Arguments passed to the command. Variable number of arguments allowed. Options: - --[no-]restore Run restore. - --[no-]build Compile projects - --[no-]pack Produce packages. - --[no-]test Run tests. + --arch The CPU architecture to build for (x64, arm, arm64). Default=$target_arch + --os-name The base runtime identifier to build for (linux, osx, linux-musl). Default=$target_os_name + + --[no-]restore Run restore. + --[no-]build Compile projects. (Implies --no-restore) + --[no-]pack Produce packages. + --[no-]test Run tests. - --projects A list of projects to build. (Must be an absolute path.) - Globbing patterns are supported, such as \"$(pwd)/**/*.csproj\". + --projects A list of projects to build. (Must be an absolute path.) + Globbing patterns are supported, such as \"$(pwd)/**/*.csproj\". - --all Build all project types. - --managed Build managed projects (C#, F#, VB). - --nodejs Build NodeJS projects (TypeScript, JS). + --all Build all project types. + --[no-]build-native Build native projects (C, C++). + --[no-]build-managed Build managed projects (C#, F#, VB). + --[no-]build-nodejs Build NodeJS projects (TypeScript, JS). + --[no-]build-java Build Java projects. - --ci Apply CI specific settings and environment variables. - --verbose Show verbose output. + --ci Apply CI specific settings and environment variables. + --verbose Show verbose output. Description: This build script installs required tools and runs an MSBuild command on this repository @@ -150,6 +166,16 @@ while [[ $# -gt 0 ]]; do __usage --no-exit exit 0 ;; + --arch) + shift + target_arch="${1:-}" + [ -z "$target_arch" ] && __error "Missing value for parameter --arch" && __usage + ;; + --os-name) + shift + target_os_name="${1:-}" + [ -z "$target_os_name" ] && __error "Missing value for parameter --os-name" && __usage + ;; --restore|-[Rr]estore) run_restore=true ;; @@ -161,6 +187,8 @@ while [[ $# -gt 0 ]]; do ;; --no-build) run_build=false + # --no-build implies --no-restore + run_restore=false ;; --pack|-[Pp]ack) run_pack=true @@ -182,14 +210,29 @@ while [[ $# -gt 0 ]]; do --all|-[Aa]ll) build_all=true ;; - --managed|-[Mm]anaged) + --build-managed|-BuildManaged) build_managed=true ;; - --nodejs|-[Nn]ode[Jj][Ss]) + --no-build-managed|-NoBuildManaged) + build_managed=false + ;; + --build-nodejs|-BuildNodeJs) build_nodejs=true ;; - --native|-[Nn]ative) - __warn 'The C++ projects in this repo only build on Windows. The --native flag will be ignored.' + --no-build-nodejs|-NoBuildNodeJs) + build_nodejs=false + ;; + --build-java|-BuildJava) + build_java=true + ;; + --no-build-java|-NoBuildJava) + build_java=false + ;; + --build-native|-BuildNative) + build_native=true + ;; + --no-build-native|-NoBuildNative) + build_native=false ;; --ci|-[Cc][Ii]) ci=true @@ -252,24 +295,27 @@ if [ "$build_all" = true ]; then msbuild_args[${#msbuild_args[*]}]="-p:BuildAllProjects=true" elif [ ! -z "$build_projects" ]; then msbuild_args[${#msbuild_args[*]}]="-p:Projects=$build_projects" -else - # When adding new sub-group build flags, add them to this check - if [ "$build_managed" = false ] && [ "$build_nodejs" = false ]; then - # This goal of this is to pick a sensible default for `build.sh` with zero arguments. - # We believe the most common thing our contributors will work on is C#, so if no other build group was picked, build the C# projects. - __warn "No default group of projects was specified, so building the 'managed' subset of projects. Run ``build.sh -help`` for more details." - build_managed=true - fi - - msbuild_args[${#msbuild_args[*]}]="-p:BuildManaged=$build_managed" - msbuild_args[${#msbuild_args[*]}]="-p:BuildNodeJS=$build_nodejs" +elif [ -z "$build_managed" ] && [ -z "$build_nodejs" ] && [ -z "$build_java" ] && [ -z "$build_native" ]; then + # This goal of this is to pick a sensible default for `build.sh` with zero arguments. + # We believe the most common thing our contributors will work on is C#, so if no other build group was picked, build the C# projects. + __warn "No default group of projects was specified, so building the 'managed' subset of projects. Run ``build.sh -help`` for more details." + build_managed=true fi +# Only set these MSBuild properties if they were explicitly set by build parameters. +[ ! -z "$build_java" ] && msbuild_args[${#msbuild_args[*]}]="-p:BuildJava=$build_java" +[ ! -z "$build_native" ] && msbuild_args[${#msbuild_args[*]}]="-p:BuildNative=$build_native" +[ ! -z "$build_nodejs" ] && msbuild_args[${#msbuild_args[*]}]="-p:BuildNodeJS=$build_nodejs" +[ ! -z "$build_managed" ] && msbuild_args[${#msbuild_args[*]}]="-p:BuildManaged=$build_managed" + msbuild_args[${#msbuild_args[*]}]="-p:_RunRestore=$run_restore" msbuild_args[${#msbuild_args[*]}]="-p:_RunBuild=$run_build" msbuild_args[${#msbuild_args[*]}]="-p:_RunPack=$run_pack" msbuild_args[${#msbuild_args[*]}]="-p:_RunTests=$run_tests" +msbuild_args[${#msbuild_args[*]}]="-p:TargetArchitecture=$target_arch" +msbuild_args[${#msbuild_args[*]}]="-p:TargetOsName=$target_os_name" + # Disable downloading ref assemblies as a tarball. Use netfx refs from the Microsoft.NETFramework.ReferenceAssemblies NuGet package instead. [ -z "${KOREBUILD_SKIP_INSTALL_NETFX:-}" ] && KOREBUILD_SKIP_INSTALL_NETFX=1 diff --git a/build/CodeSign.props b/build/CodeSign.props index d3e6f7b573e3..7f5d4a527d0a 100644 --- a/build/CodeSign.props +++ b/build/CodeSign.props @@ -1,12 +1,22 @@ - - - - - - + + + + + + + + + + + diff --git a/build/CodeSign.targets b/build/CodeSign.targets index 0211055823f9..6827c8c2a4ed 100644 --- a/build/CodeSign.targets +++ b/build/CodeSign.targets @@ -7,7 +7,7 @@ $(IntermediateDir)ar\ - $(BaseRedistNetCorePath)$(SharedFxRid)\ + $(BaseRedistNetCorePath)$(TargetRuntimeIdentifier)\ diff --git a/build/Publish.targets b/build/Publish.targets index fa3e8c9d77fb..17248cc56cbb 100644 --- a/build/Publish.targets +++ b/build/Publish.targets @@ -1,10 +1,19 @@ - + + + + + + + + diff --git a/build/SharedFx.targets b/build/SharedFx.targets index b02070716aa7..0a3066c666b8 100644 --- a/build/SharedFx.targets +++ b/build/SharedFx.targets @@ -12,8 +12,8 @@ - - + + @@ -25,25 +25,19 @@ <_RestoreGraphProjectInput>@(FxProjectToBuild) - - $(BuildProperties); - SharedFxRid=$(SharedFxRid); - SharedFxArchitecture=$(SharedFxArchitecture); - PackageVersion=$(PackageVersion) - + Properties="$(BuildProperties);RestoreGraphProjectInput=$(_RestoreGraphProjectInput);_DummyTarget=Restore" /> @@ -52,7 +46,7 @@ - $(LogOutputDir)SharedFx-UnitTests-$(Version).trx + $(LogOutputDir)SharedFx-UnitTests-$(PackageVersion)-$(TargetRuntimeIdentifier).trx $(UnitTestFxTrxLogFile) $(HostMachineRepositoryRoot)/artifacts/logs/SharedFx-UnitTests.trx diff --git a/build/publish/Publish.csproj b/build/publish/Publish.csproj index 7ea57a073a42..ef60f95814c7 100644 --- a/build/publish/Publish.csproj +++ b/build/publish/Publish.csproj @@ -8,6 +8,7 @@ true $(ArtifactsDir)manifests\ https://maestro-prod.westus2.cloudapp.azure.com + true @@ -156,9 +157,8 @@ diff --git a/build/repo.props b/build/repo.props index 0e2dfa73f78e..10ad43d5983e 100644 --- a/build/repo.props +++ b/build/repo.props @@ -1,13 +1,16 @@ - + + $(TargetOsName)-$(TargetArchitecture) + + true true false - true + true false @@ -69,10 +72,10 @@ - + - + @@ -93,36 +96,40 @@ - + + + - Platform=x64 - Platform=x86 - + Platform=x64 + Platform=Win32 + - + + - + Exclude="@(ProjectToExclude)" /> - + + + + + + + - + + + diff --git a/build/repo.targets b/build/repo.targets index e5bfffddc455..1474629b04c9 100644 --- a/build/repo.targets +++ b/build/repo.targets @@ -34,6 +34,8 @@ $(TestDependsOn);Compile $(TestDependsOn);TestProjects + $(BuildDependsOn);GenerateBuildAssetManifest + $(CodeSignDependsOn);RemoveSharedFrameworkOnlyRefsFromNuspec @@ -71,7 +73,7 @@ diff --git a/build/tasks/RepoTasks.csproj b/build/tasks/RepoTasks.csproj index 70aa9c651887..7f351493fbdb 100644 --- a/build/tasks/RepoTasks.csproj +++ b/build/tasks/RepoTasks.csproj @@ -4,7 +4,7 @@ netcoreapp2.2 net461 - $(DefineConstants);BUILD_MSI_TASKS + $(DefineConstants);BUILD_MSI_TASKS $(DefineConstants);BUILD_AZ_TASKS true @@ -16,7 +16,7 @@ - + diff --git a/docs/BuildFromSource.md b/docs/BuildFromSource.md index 65453f88ad08..ef3bf330a111 100644 --- a/docs/BuildFromSource.md +++ b/docs/BuildFromSource.md @@ -167,7 +167,8 @@ Property | Description -------------------------|------------------------------------------------------------------------------------------------------------- BuildNumberSuffix | (string). A specific build number, typically from a CI counter, which is appended to the pre-release label. Configuration | `Debug` or `Release`. Default = `Debug`. -SharedFxRID | The runtime identifier of the shared framework. +TargetArchitecture | The CPU architecture to build for (x64, x86, arm, arm64). +TargetOsName | The base runtime identifier to build for (win, linux, osx, linux-musl). ## Use the result of your build diff --git a/eng/ProjectReferences.props b/eng/ProjectReferences.props index 262dbf334044..cf82e398f3dc 100644 --- a/eng/ProjectReferences.props +++ b/eng/ProjectReferences.props @@ -1,5 +1,5 @@ @@ -125,7 +125,6 @@ - diff --git a/eng/Versions.props b/eng/Versions.props index fe0ceaa3904a..4c47762eff79 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -108,7 +108,7 @@ $(KoreBuildVersion) - 3.0.0-build-20190128.3 + 3.0.0-build-20190130.1 1.0.0-alpha-004 15.9.0 diff --git a/eng/scripts/CodeCheck.ps1 b/eng/scripts/CodeCheck.ps1 index 0d61970ecc96..029219284449 100644 --- a/eng/scripts/CodeCheck.ps1 +++ b/eng/scripts/CodeCheck.ps1 @@ -26,7 +26,7 @@ try { # if ($ci) { - & $repoRoot/build.cmd /t:InstallDotNet + & $repoRoot/build.ps1 -ci /t:InstallDotNet } Write-Host "Checking that solutions are up to date" @@ -56,13 +56,9 @@ try { Write-Host "Re-running code generation" - Write-Host "Re-generating ProjectReference.props" + Write-Host "Re-generating project lists" Invoke-Block { - [string[]] $generateArgs = @() - if ($ci) { - $generateArgs += '-ci' - } - & $repoRoot/build.cmd /t:GenerateProjectList @generateArgs + & $PSScriptRoot\GenerateProjectList.ps1 -ci:$ci } Write-Host "Re-generating package baselines" diff --git a/eng/scripts/GenerateProjectList.ps1 b/eng/scripts/GenerateProjectList.ps1 new file mode 100644 index 000000000000..53cbe5813843 --- /dev/null +++ b/eng/scripts/GenerateProjectList.ps1 @@ -0,0 +1,8 @@ +param( + [switch]$ci +) +$ErrorActionPreference = 'stop' + +$repoRoot = Resolve-Path "$PSScriptRoot/../.." + +& "$repoRoot\build.ps1" -ci:$ci -all /t:GenerateProjectList diff --git a/eng/scripts/cibuild.cmd b/eng/scripts/cibuild.cmd index b1048279a305..1e7d47b39e8b 100644 --- a/eng/scripts/cibuild.cmd +++ b/eng/scripts/cibuild.cmd @@ -1,3 +1,3 @@ @ECHO OFF SET RepoRoot=%~dp0..\.. -%RepoRoot%\build.cmd -ci -all -restore -build -pack -test -sign %* +%RepoRoot%\build.cmd -ci -all -pack -sign %* diff --git a/eng/scripts/cibuild.sh b/eng/scripts/cibuild.sh index 93c21befedde..d5837c0908e7 100755 --- a/eng/scripts/cibuild.sh +++ b/eng/scripts/cibuild.sh @@ -6,4 +6,4 @@ export PATH="$PATH:$HOME/nginxinstall/sbin/" DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" repo_root="$DIR/../.." -"$repo_root/build.sh" --ci --all --restore --build --pack --test "$@" +"$repo_root/build.sh" --ci --all --pack "$@" diff --git a/eng/signcheck.exclusions.txt b/eng/signcheck.exclusions.txt index 8438b153a187..93f17f63f593 100644 --- a/eng/signcheck.exclusions.txt +++ b/eng/signcheck.exclusions.txt @@ -1,4 +1,5 @@ -content/sdk/*/AppHostTemplate/apphost.exe;AspNetCoreRuntime.*.nupkg; Exclude the apphost because this is expected to be code-signed by customers after the SDK modifies it. +*/AppHostTemplate/apphost.exe;AspNetCoreRuntime.*.nupkg; Exclude the apphost because this is expected to be code-signed by customers after the SDK modifies it. +*/runtime.*.microsoft.netcore.dotnetapphost/*/apphost.exe;Microsoft.AspNetCore.AzureAppServices.SiteExtension.*.nupkg; Exclude the apphost because this is expected to be code-signed by customers after the SDK modifies it. *.js;; Exclude all JavaScript files from codesigning because we don't expect these to run on Windows Script Host *.binlog;; Exclude msbuild log files *.symbols.nupkg;; Exclude NuGet symbols packages. These are not shipped to customers and should not be code signed. diff --git a/eng/targets/ResolveIisReferences.targets b/eng/targets/ResolveIisReferences.targets index ba0ae8fc465a..76c17c8c80e8 100644 --- a/eng/targets/ResolveIisReferences.targets +++ b/eng/targets/ResolveIisReferences.targets @@ -13,6 +13,7 @@ with the right MSBuild incantations to get output copied to the right place. Platform=%(Platform) + Platform=Win32 %(Platform)\%(HandlerPath)\ diff --git a/eng/targets/RuntimeIdentifiers.props b/eng/targets/RuntimeIdentifiers.props deleted file mode 100644 index b38ec14b94e6..000000000000 --- a/eng/targets/RuntimeIdentifiers.props +++ /dev/null @@ -1,28 +0,0 @@ - - - - - win-x64 - osx-x64 - linux-x64 - - $(SharedFxRid.Substring($([MSBuild]::Add($(SharedFxRid.LastIndexOf('-')), 1)))) - - - win-x64 - osx-x64 - linux-x64 - - - - win-x64; - win-x86; - win-arm; - osx-x64; - linux-musl-x64; - linux-x64; - linux-arm; - linux-arm64 - - - diff --git a/eng/tools/XplatPackageSigner/sign-packages.cmd b/eng/tools/XplatPackageSigner/sign-packages.cmd index e5cdaf5b4806..a46d10192f80 100644 --- a/eng/tools/XplatPackageSigner/sign-packages.cmd +++ b/eng/tools/XplatPackageSigner/sign-packages.cmd @@ -12,4 +12,4 @@ IF "%DirToSign%"=="" ( SET RepoRoot=%~dp0..\..\.. SET Project=%~dp0\XplatPackageSigner.proj -%RepoRoot%\build.cmd "-restore:$false" -projects %project% /p:DirectoryToSign=%DirToSign% /bl:%RepoRoot%\artifacts\logs\XplatSign.binlog +%RepoRoot%\build.cmd -NoRestore -projects %project% /p:DirectoryToSign=%DirToSign% /bl:%RepoRoot%\artifacts\logs\XplatSign.binlog diff --git a/global.json b/global.json index db12eadd2576..ad876808c107 100644 --- a/global.json +++ b/global.json @@ -3,6 +3,6 @@ "version": "3.0.100-preview-009750" }, "msbuild-sdks": { - "Internal.AspNetCore.Sdk": "3.0.0-build-20190128.3" + "Internal.AspNetCore.Sdk": "3.0.0-build-20190130.1" } } diff --git a/korebuild-lock.txt b/korebuild-lock.txt index 15f7f6c03256..c5201be5e49f 100644 --- a/korebuild-lock.txt +++ b/korebuild-lock.txt @@ -1,2 +1,2 @@ -version:3.0.0-build-20190128.3 -commithash:59917974421fcb1511c1395fd8f4f114c792a635 +version:3.0.0-build-20190130.1 +commithash:3b24877488f6bbff779aa3bd66fcffb4a6c04daf diff --git a/restore.cmd b/restore.cmd index e6275ff5d1f8..45e272ec1f57 100644 --- a/restore.cmd +++ b/restore.cmd @@ -1,2 +1,2 @@ @ECHO OFF -PowerShell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command "[System.Threading.Thread]::CurrentThread.CurrentCulture = ''; [System.Threading.Thread]::CurrentThread.CurrentUICulture = '';& '%~dp0build.ps1' -all -restore:$true -build:$False %*; exit $LASTEXITCODE" +PowerShell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command "[System.Threading.Thread]::CurrentThread.CurrentCulture = ''; [System.Threading.Thread]::CurrentThread.CurrentUICulture = '';& '%~dp0build.ps1' -all -nobuild -restore %*; exit $LASTEXITCODE" diff --git a/src/Components/Blazor/Build/src/Microsoft.AspNetCore.Blazor.Build.csproj b/src/Components/Blazor/Build/src/Microsoft.AspNetCore.Blazor.Build.csproj index e1b38e5602b9..61c027e17553 100644 --- a/src/Components/Blazor/Build/src/Microsoft.AspNetCore.Blazor.Build.csproj +++ b/src/Components/Blazor/Build/src/Microsoft.AspNetCore.Blazor.Build.csproj @@ -10,6 +10,8 @@ + + false true Microsoft.AspNetCore.Blazor.Build.nuspec obj\publish\ @@ -35,7 +37,7 @@ - + diff --git a/src/Components/Browser.JS/src/Microsoft.AspNetCore.Components.Browser.JS.csproj b/src/Components/Browser.JS/src/Microsoft.AspNetCore.Components.Browser.JS.csproj deleted file mode 100644 index fcaead2e3470..000000000000 --- a/src/Components/Browser.JS/src/Microsoft.AspNetCore.Components.Browser.JS.csproj +++ /dev/null @@ -1,34 +0,0 @@ - - - - netstandard2.0 - JavaScript runtime files needed for ASP.NET Core Components browser rendering. - true - Latest - ${DefaultItemExcludes};node_modules\** - false - - - true - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Components/Browser.JS/src/Microsoft.AspNetCore.Components.Browser.JS.npmproj b/src/Components/Browser.JS/src/Microsoft.AspNetCore.Components.Browser.JS.npmproj new file mode 100644 index 000000000000..f2215281b4d5 --- /dev/null +++ b/src/Components/Browser.JS/src/Microsoft.AspNetCore.Components.Browser.JS.npmproj @@ -0,0 +1,24 @@ + + + + + false + false + + + + + + + + + + + + + + + + diff --git a/src/Components/Components.sln b/src/Components/Components.sln index ee94d6351b7e..28cff399d54f 100644 --- a/src/Components/Components.sln +++ b/src/Components/Components.sln @@ -43,10 +43,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Browser", "Browser", "{A27F EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Components.Browser", "Browser\src\Microsoft.AspNetCore.Components.Browser.csproj", "{3B1A56F8-B3E0-4F33-A717-50BDD4FBE12E}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Browser.JS", "Browser.JS", "{11F9B329-F22E-4AD3-AB38-98C55C2DC54C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Components.Browser.JS", "Browser.JS\src\Microsoft.AspNetCore.Components.Browser.JS.csproj", "{E52044BD-17D3-483D-8F1D-BE9C9F091CCD}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{2639736B-94BF-4A6C-AFAE-E9A44FF04CD0}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Components.Build", "Build\src\Microsoft.AspNetCore.Components.Build.csproj", "{74759A1D-159F-4B66-9FC1-7BE3F0DF2B2B}" @@ -415,18 +411,6 @@ Global {3B1A56F8-B3E0-4F33-A717-50BDD4FBE12E}.Release|x64.Build.0 = Release|Any CPU {3B1A56F8-B3E0-4F33-A717-50BDD4FBE12E}.Release|x86.ActiveCfg = Release|Any CPU {3B1A56F8-B3E0-4F33-A717-50BDD4FBE12E}.Release|x86.Build.0 = Release|Any CPU - {E52044BD-17D3-483D-8F1D-BE9C9F091CCD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E52044BD-17D3-483D-8F1D-BE9C9F091CCD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E52044BD-17D3-483D-8F1D-BE9C9F091CCD}.Debug|x64.ActiveCfg = Debug|Any CPU - {E52044BD-17D3-483D-8F1D-BE9C9F091CCD}.Debug|x64.Build.0 = Debug|Any CPU - {E52044BD-17D3-483D-8F1D-BE9C9F091CCD}.Debug|x86.ActiveCfg = Debug|Any CPU - {E52044BD-17D3-483D-8F1D-BE9C9F091CCD}.Debug|x86.Build.0 = Debug|Any CPU - {E52044BD-17D3-483D-8F1D-BE9C9F091CCD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E52044BD-17D3-483D-8F1D-BE9C9F091CCD}.Release|Any CPU.Build.0 = Release|Any CPU - {E52044BD-17D3-483D-8F1D-BE9C9F091CCD}.Release|x64.ActiveCfg = Release|Any CPU - {E52044BD-17D3-483D-8F1D-BE9C9F091CCD}.Release|x64.Build.0 = Release|Any CPU - {E52044BD-17D3-483D-8F1D-BE9C9F091CCD}.Release|x86.ActiveCfg = Release|Any CPU - {E52044BD-17D3-483D-8F1D-BE9C9F091CCD}.Release|x86.Build.0 = Release|Any CPU {74759A1D-159F-4B66-9FC1-7BE3F0DF2B2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {74759A1D-159F-4B66-9FC1-7BE3F0DF2B2B}.Debug|Any CPU.Build.0 = Debug|Any CPU {74759A1D-159F-4B66-9FC1-7BE3F0DF2B2B}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -1373,7 +1357,6 @@ Global {1C4BF2D3-44A8-4A71-B031-15B983663CB0} = {A7ABAC29-F73F-456D-AE54-46842CFC2E10} {C0FFB29E-4696-4875-9039-E5FA1AC5A42A} = {A7ABAC29-F73F-456D-AE54-46842CFC2E10} {3B1A56F8-B3E0-4F33-A717-50BDD4FBE12E} = {A27FF193-195B-4474-8E6C-840B2E339373} - {E52044BD-17D3-483D-8F1D-BE9C9F091CCD} = {11F9B329-F22E-4AD3-AB38-98C55C2DC54C} {74759A1D-159F-4B66-9FC1-7BE3F0DF2B2B} = {2639736B-94BF-4A6C-AFAE-E9A44FF04CD0} {35A8AE1D-ED82-485E-A8E6-A357B3CB31B3} = {3D9B9B2C-E379-41BD-83D4-2E099FBDA107} {8D49A92D-B4AA-4A5C-99C1-B4DCBD5491DD} = {3D9B9B2C-E379-41BD-83D4-2E099FBDA107} diff --git a/src/Components/Server/src/Microsoft.AspNetCore.Components.Server.csproj b/src/Components/Server/src/Microsoft.AspNetCore.Components.Server.csproj index d4d03b45bd85..7c8e8ad3e479 100644 --- a/src/Components/Server/src/Microsoft.AspNetCore.Components.Server.csproj +++ b/src/Components/Server/src/Microsoft.AspNetCore.Components.Server.csproj @@ -7,6 +7,12 @@ true + + + false + false + + @@ -21,9 +27,9 @@ - + - + diff --git a/src/Components/test/E2ETest/Microsoft.AspNetCore.Components.E2ETests.csproj b/src/Components/test/E2ETest/Microsoft.AspNetCore.Components.E2ETests.csproj index 1b2afdccaa67..da9688a6fbf0 100644 --- a/src/Components/test/E2ETest/Microsoft.AspNetCore.Components.E2ETests.csproj +++ b/src/Components/test/E2ETest/Microsoft.AspNetCore.Components.E2ETests.csproj @@ -2,7 +2,7 @@ netcoreapp3.0 - ${DefaultItemExcludes};node_modules\** + $(DefaultItemExcludes);node_modules\** false diff --git a/src/Framework/src/Microsoft.AspNetCore.App.shfxproj b/src/Framework/src/Microsoft.AspNetCore.App.shfxproj index 7d3c92d525b0..84ccd46700bb 100644 --- a/src/Framework/src/Microsoft.AspNetCore.App.shfxproj +++ b/src/Framework/src/Microsoft.AspNetCore.App.shfxproj @@ -1,25 +1,26 @@ - netcoreapp3.0 + $(RepositoryRoot)bin\fx\$(TargetOsName)\$(TargetArchitecture)\$(MSBuildProjectName)\ + $(RepositoryRoot)obj\fx\$(MSBuildProjectName)\ + + + + + + $(TargetRuntimeIdentifier) + netcoreapp$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion) Microsoft.NETCore.App $(MicrosoftNETCoreAppPackageVersion) - $(RepositoryRoot)bin\fx\$(SharedFxRid)\$(MSBuildProjectName)\ - $(RepositoryRoot)obj\fx\$(MSBuildProjectName)\ - true - $(SharedFxRID) - $(HostRid) - $(RuntimeIdentifier) - true true - false + false true @@ -35,13 +36,9 @@ false false false - - - - - runtime.$(SharedFxRid).$(MSBuildProjectName) + runtime.$(TargetRuntimeIdentifier).$(MSBuildProjectName) This package provides assets used for self-contained deployments of an ASP.NET Core application. It is an internal implementation package not meant for direct consumption. Please do not reference directly. $(MSBuildProjectName) provides a default set of APIs for building an ASP.NET Core application. diff --git a/src/Framework/src/SharedFx.targets b/src/Framework/src/SharedFx.targets index 59489cd7bfad..0de8d1dcdb49 100644 --- a/src/Framework/src/SharedFx.targets +++ b/src/Framework/src/SharedFx.targets @@ -49,26 +49,16 @@ This targets file should only be imported by .shfxproj files. $(MSBuildProjectName) - - win - osx - linux - linux-musl - unix - - lib + lib .so - .dll - .dylib - .exe + .dll + .dylib + .exe : - %3B + %3B - $(IntermediateOutputPath)$(SharedFxRid)\ + $(IntermediateOutputPath)$(TargetRuntimeIdentifier)\ $(IntermediateOutputPath)u\ @@ -85,13 +75,13 @@ This targets file should only be imported by .shfxproj files. $(IntermediateOutputPath)crossgen\ crossgen - $(CrossGenExecutable).exe + $(CrossGenExecutable).exe $(CrossGenExecutable) - x64_arm\$(CrossGenTool) - x64_arm64\$(CrossGenTool) - x86_arm\$(CrossGenTool) + x64_arm\$(CrossGenTool) + x64_arm64\$(CrossGenTool) + x86_arm\$(CrossGenTool) $(BaseSharedFrameworkName) @@ -150,18 +140,18 @@ This targets file should only be imported by .shfxproj files. - + <_UnknownRid Remove="@(_UnknownRid)" /> - <_UnknownRid Include="$(SharedFxRid)" Exclude="$(SupportedRuntimeIdentifiers)" /> + <_UnknownRid Include="$(TargetRuntimeIdentifier)" Exclude="$(SupportedRuntimeIdentifiers)" /> + Text=""$(TargetRuntimeIdentifier)" not acceptable runtime identifier. Please specify an acceptable value: {$(SupportedRuntimeIdentifiers)}." /> - + @@ -193,12 +183,12 @@ This targets file should only be imported by .shfxproj files. DepsFilePath="$(PublishDepsFilePath)" DepsFileOutputPath="$(SharedFxDepsFilePath)" PlatformManifestOutputPath="$(PlatformManifestOutputPath)" - BaseRuntimeIdentifier="$(BaseSharedFxRid)" /> + BaseRuntimeIdentifier="$(TargetOsName)" /> - + @@ -229,7 +219,7 @@ This targets file should only be imported by .shfxproj files. - + @@ -339,7 +329,7 @@ This targets file should only be imported by .shfxproj files. id=$(PackageId); version=$(PackageVersion); authors=$(Authors); - rid=$(SharedFxRid); + rid=$(TargetRuntimeIdentifier); description=$(PackageDescription); tags=$(PackageTags.Replace(';', ' ')); licenseUrl=$(PackageLicenseUrl); diff --git a/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj b/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj index 97389867334c..2062dcb31038 100644 --- a/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj +++ b/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj @@ -13,8 +13,8 @@ <_Parameter2>$(PackageVersion) - <_Parameter1>SharedFxRid - <_Parameter2>$(SharedFxRid) + <_Parameter1>TargetRuntimeIdentifier + <_Parameter2>$(TargetRuntimeIdentifier) <_Parameter1>RepositoryCommit diff --git a/src/Framework/test/TestData.cs b/src/Framework/test/TestData.cs index 1e86e1f809be..10d0f2839a30 100644 --- a/src/Framework/test/TestData.cs +++ b/src/Framework/test/TestData.cs @@ -14,7 +14,7 @@ public class TestData public static string GetRepositoryCommit() => GetTestDataValue("RepositoryCommit"); - public static string GetSharedFxRuntimeIdentifier() => GetTestDataValue("SharedFxRid"); + public static string GetSharedFxRuntimeIdentifier() => GetTestDataValue("TargetRuntimeIdentifier"); public static string GetSharedFxDependencies() => GetTestDataValue("SharedFxDependencies"); diff --git a/src/Hosting/Server.IntegrationTesting/src/ApplicationPublisher.cs b/src/Hosting/Server.IntegrationTesting/src/ApplicationPublisher.cs index d332797b95cd..90ba2cbf256c 100644 --- a/src/Hosting/Server.IntegrationTesting/src/ApplicationPublisher.cs +++ b/src/Hosting/Server.IntegrationTesting/src/ApplicationPublisher.cs @@ -35,9 +35,8 @@ public virtual Task Publish(DeploymentParameters deploymen + $" --output \"{publishDirectory.FullName}\"" + $" --framework {deploymentParameters.TargetFramework}" + $" --configuration {deploymentParameters.Configuration}" - + " --no-restore -p:VerifyMatchingImplicitPackageVersion=false"; - // Set VerifyMatchingImplicitPackageVersion to disable errors when Microsoft.NETCore.App's version is overridden externally - // This verification doesn't matter if we are skipping restore during tests. + + $" /p:TargetArchitecture={deploymentParameters.RuntimeArchitecture}" + + " --no-restore"; if (deploymentParameters.ApplicationType == ApplicationType.Standalone) { @@ -127,4 +126,4 @@ protected static DirectoryInfo CreateTempDirectory() return target; } } -} \ No newline at end of file +} diff --git a/src/Installers/Archive/Archive.Internal.zipproj b/src/Installers/Archive/Archive.Internal.zipproj index 9c0356ae82ec..4939325fd277 100644 --- a/src/Installers/Archive/Archive.Internal.zipproj +++ b/src/Installers/Archive/Archive.Internal.zipproj @@ -9,8 +9,8 @@ - $(RepositoryRoot)obj\ai\$(SharedFxRid)\ - $(InternalInstallerBaseName)-$(PackageVersion)-$(SharedFxRid)$(ArchiveExtension) + $(RepositoryRoot)obj\ai\$(TargetRuntimeIdentifier)\ + $(InternalInstallerBaseName)-$(PackageVersion)-$(TargetRuntimeIdentifier)$(ArchiveExtension) $(InstallersOutputPath) $(InstallersOutputPath)$(OutputFileName) diff --git a/src/Installers/Archive/Archive.Redist.zipproj b/src/Installers/Archive/Archive.Redist.zipproj index 04114c070670..5bd4b743733d 100644 --- a/src/Installers/Archive/Archive.Redist.zipproj +++ b/src/Installers/Archive/Archive.Redist.zipproj @@ -9,18 +9,18 @@ $(RepositoryRoot)obj\ar\ - $(BaseIntermediateOutputPath)$(SharedFxRid)\ - $(RuntimeInstallerBaseName)-$(PackageVersion)-$(SharedFxRid)$(ArchiveExtension) + $(BaseIntermediateOutputPath)$(TargetRuntimeIdentifier)\ + $(RuntimeInstallerBaseName)-$(PackageVersion)-$(TargetRuntimeIdentifier)$(ArchiveExtension) $(InstallersOutputPath) $(InstallersOutputPath)$(OutputFileName) - dotnet-runtime-$(MicrosoftNETCoreAppPackageVersion)-$(SharedFxRid)$(ArchiveExtension) + dotnet-runtime-$(MicrosoftNETCoreAppPackageVersion)-$(TargetRuntimeIdentifier)$(ArchiveExtension) $(DotNetAssetRootUrl)Runtime/$(MicrosoftNETCoreAppPackageVersion)/$(DotNetRuntimeArchiveFileName) $(BaseIntermediateOutputPath)$(DotNetRuntimeArchiveFileName) aspnetcore_base_runtime.version $(OutputPath)$(BaseRuntimeVersionFileName) - aspnetcore-runtime-$(SharedFxRid)-version-badge.svg + aspnetcore-runtime-$(TargetRuntimeIdentifier)-version-badge.svg $(OutputPath)$(SvgBadgeFileName) diff --git a/src/Installers/Debian/Runtime.debproj b/src/Installers/Debian/Runtime.debproj index 7895bcd64535..c1b4cbf9070d 100644 --- a/src/Installers/Debian/Runtime.debproj +++ b/src/Installers/Debian/Runtime.debproj @@ -10,7 +10,7 @@ $(RepositoryRoot)obj\Debian\$(MSBuildProjectName)\ - $(BaseIntermediateOutputPath)$(SharedFxRid)\ + $(BaseIntermediateOutputPath)$(TargetRuntimeIdentifier)\ $(IntermediateOutputPath)package_root\ $(RuntimeInstallerBaseName)-$(SharedFxVersion)-x64.deb @@ -51,7 +51,7 @@ - + @@ -96,8 +96,7 @@ - - amd64 + amd64 $(PackageId)_$(PackageVersion)-$(PackageRevision)_$(DebArch).deb diff --git a/src/Installers/Directory.Build.props b/src/Installers/Directory.Build.props index 489a37b2c871..b31d8964770f 100644 --- a/src/Installers/Directory.Build.props +++ b/src/Installers/Directory.Build.props @@ -8,7 +8,7 @@ $(RuntimeInstallerBaseName)-internal .tar.gz - .zip + .zip diff --git a/src/Installers/Rpm/Rpm.props b/src/Installers/Rpm/Rpm.props index f002b65eba92..607f5ae374e9 100644 --- a/src/Installers/Rpm/Rpm.props +++ b/src/Installers/Rpm/Rpm.props @@ -8,7 +8,7 @@ $(RepositoryRoot)obj\Rpm\$(MSBuildProjectName)\ - $(BaseIntermediateOutputPath)$(SharedFxRid)\ + $(BaseIntermediateOutputPath)$(TargetRuntimeIdentifier)\ $([MSBuild]::NormalizeDirectory('$(IntermediateOutputPath)content/')) $(InstallersOutputPath) diff --git a/src/Installers/Rpm/Rpm.targets b/src/Installers/Rpm/Rpm.targets index ea8470f2872f..da8010bbd357 100644 --- a/src/Installers/Rpm/Rpm.targets +++ b/src/Installers/Rpm/Rpm.targets @@ -18,7 +18,7 @@ - + @@ -49,7 +49,7 @@ - amd64 + amd64 diff --git a/src/Installers/Windows/SharedFramework/SharedFramework.wixproj b/src/Installers/Windows/SharedFramework/SharedFramework.wixproj index 0d351e670285..242de9fcad42 100644 --- a/src/Installers/Windows/SharedFramework/SharedFramework.wixproj +++ b/src/Installers/Windows/SharedFramework/SharedFramework.wixproj @@ -14,7 +14,7 @@ true 5150;5151 true - $(SharedFrameworkHarvestRootPath)\$(Platform)\ + $(IntermediateOutputPath)fx\ $(DefineConstants);AspNetCoreSharedFrameworkSource=$(HarvestSource) $(SharedFrameworkNamespaceGuid) 2.0 @@ -54,5 +54,20 @@ + + + + $(InstallersOutputPath) + $(InstallersOutputPath) + $(SharedFrameworkX64HarvestRootPath)aspnetcore-runtime-internal-$(PackageVersion)-win-x64.zip + $(SharedFrameworkX86HarvestRootPath)aspnetcore-runtime-internal-$(PackageVersion)-win-x86.zip + + + + + + diff --git a/src/Installers/Windows/SharedFrameworkLib/SharedFrameworkLib.wixproj b/src/Installers/Windows/SharedFrameworkLib/SharedFrameworkLib.wixproj index e08fb8c29df1..2d87dc86c9d7 100644 --- a/src/Installers/Windows/SharedFrameworkLib/SharedFrameworkLib.wixproj +++ b/src/Installers/Windows/SharedFrameworkLib/SharedFrameworkLib.wixproj @@ -5,7 +5,7 @@ AspNetCoreSharedFrameworkLib$(Platform) - $(InternalInstallerBaseName)-$(PackageVersion)-win-$(Platform) + $(InternalInstallerBaseName)-$(PackageVersion)-$(TargetRuntimeIdentifier) true Library diff --git a/src/Installers/Windows/build.ps1 b/src/Installers/Windows/build.ps1 index 252e850d375e..0f41b2b0b0b0 100644 --- a/src/Installers/Windows/build.ps1 +++ b/src/Installers/Windows/build.ps1 @@ -1,16 +1,11 @@ #requires -version 5 [cmdletbinding()] param( - [string]$Configuration = 'Debug', - [Parameter(Mandatory = $true)] + [switch]$ci, [Alias("x86")] - [string]$Runtime86Zip, - [Parameter(Mandatory = $true)] + [string]$sharedfx86harvestroot, [Alias("x64")] - [string]$Runtime64Zip, - [string]$BuildNumber = 't000', - [switch]$IsFinalBuild, - [string]$SignType = '' + [string]$sharedfx64harvestroot ) $ErrorActionPreference = 'Stop' @@ -26,24 +21,23 @@ if ($clean) { New-Item "$harvestRoot/x86", "$harvestRoot/x64" -ItemType Directory -ErrorAction Ignore | Out-Null -if (-not (Test-Path "$harvestRoot/x86/shared/")) { - Expand-Archive $Runtime86Zip -DestinationPath "$harvestRoot/x86" +[string[]] $msbuildargs = @() +if (-not $sharedfx86harvestroot) { + $msbuildargs += "-p:SharedFrameworkX86HarvestRootPath=$sharedfx86harvestroot" } -if (-not (Test-Path "$harvestRoot/x64/shared/")) { - Expand-Archive $Runtime64Zip -DestinationPath "$harvestRoot/x64" +if (-not $sharedfx64harvestroot) { + $msbuildargs += "-p:SharedFrameworkX64HarvestRootPath=$sharedfx64harvestroot" } Push-Location $PSScriptRoot try { & $repoRoot/build.ps1 ` - -Installers ` - "-p:SharedFrameworkHarvestRootPath=$repoRoot/obj/sfx/" ` - "-p:Configuration=$Configuration" ` - "-p:BuildNumberSuffix=$BuildNumber" ` - "-p:SignType=$SignType" ` - "-p:IsFinalBuild=$IsFinalBuild" ` - "-bl:$repoRoot/artifacts/logs/installers.msbuild.binlog" + -ci:$ci ` + -sign ` + -BuildInstallers ` + "-bl:$repoRoot/artifacts/logs/installers.msbuild.binlog" ` + @msbuildargs } finally { Pop-Location diff --git a/src/Middleware/CORS/test/FunctionalTests/FunctionalTests.csproj b/src/Middleware/CORS/test/FunctionalTests/FunctionalTests.csproj index c5eb365ed6ba..d59d1ff4cd78 100644 --- a/src/Middleware/CORS/test/FunctionalTests/FunctionalTests.csproj +++ b/src/Middleware/CORS/test/FunctionalTests/FunctionalTests.csproj @@ -3,14 +3,9 @@ netcoreapp3.0 Cors.FunctionalTests + $(DefaultItemExcludes);node_modules\**\* - - - - - - diff --git a/src/Servers/IIS/IIS/benchmarks/IIS.Performance/IIS.Performance.csproj b/src/Servers/IIS/IIS/benchmarks/IIS.Performance/IIS.Performance.csproj index d068560ccd9e..603951868a1d 100644 --- a/src/Servers/IIS/IIS/benchmarks/IIS.Performance/IIS.Performance.csproj +++ b/src/Servers/IIS/IIS/benchmarks/IIS.Performance/IIS.Performance.csproj @@ -15,7 +15,7 @@ - + diff --git a/src/Servers/IIS/IIS/src/Microsoft.AspNetCore.Server.IIS.csproj b/src/Servers/IIS/IIS/src/Microsoft.AspNetCore.Server.IIS.csproj index 6794e767a38b..f2ceee919c89 100644 --- a/src/Servers/IIS/IIS/src/Microsoft.AspNetCore.Server.IIS.csproj +++ b/src/Servers/IIS/IIS/src/Microsoft.AspNetCore.Server.IIS.csproj @@ -8,7 +8,6 @@ true aspnetcore;iis true - true netcoreapp3.0 True @@ -20,10 +19,10 @@ + Condition="'$(BuildIisNativeProjects)' == 'true' AND !Exists('$(AspNetCoreModuleV2InProcessHandlerDll)')" /> - + diff --git a/src/Servers/IIS/IntegrationTesting.IIS/src/Microsoft.AspNetCore.Server.IntegrationTesting.IIS.csproj b/src/Servers/IIS/IntegrationTesting.IIS/src/Microsoft.AspNetCore.Server.IntegrationTesting.IIS.csproj index 2e536e21b96c..29acb7107afd 100644 --- a/src/Servers/IIS/IntegrationTesting.IIS/src/Microsoft.AspNetCore.Server.IntegrationTesting.IIS.csproj +++ b/src/Servers/IIS/IntegrationTesting.IIS/src/Microsoft.AspNetCore.Server.IntegrationTesting.IIS.csproj @@ -21,12 +21,12 @@ - + - + @@ -34,16 +34,15 @@ - + - + - diff --git a/src/Servers/IIS/build/Build.Settings b/src/Servers/IIS/build/Build.Settings index d2e897434c11..e68136bb2b10 100644 --- a/src/Servers/IIS/build/Build.Settings +++ b/src/Servers/IIS/build/Build.Settings @@ -93,4 +93,4 @@ $(_TwoDigitYear)$(_ThreeDigitDayOfYear) - \ No newline at end of file + diff --git a/src/Servers/IIS/build/assets.props b/src/Servers/IIS/build/assets.props index caf77d416e60..e6c366f29515 100644 --- a/src/Servers/IIS/build/assets.props +++ b/src/Servers/IIS/build/assets.props @@ -1,7 +1,7 @@ - true + true x64 $(Platform) Win32 diff --git a/src/Servers/IIS/build/testsite.props b/src/Servers/IIS/build/testsite.props index 8d11b921b0ef..3afdd22f2571 100644 --- a/src/Servers/IIS/build/testsite.props +++ b/src/Servers/IIS/build/testsite.props @@ -66,14 +66,14 @@ diff --git a/src/Servers/IIS/tools/GenerateNativeAssets.ps1 b/src/Servers/IIS/tools/GenerateNativeAssets.ps1 index 891203aa3a4f..c1fb0637150c 100644 --- a/src/Servers/IIS/tools/GenerateNativeAssets.ps1 +++ b/src/Servers/IIS/tools/GenerateNativeAssets.ps1 @@ -121,7 +121,7 @@ $content = @" - true + true x64 `$(Platform) Win32 diff --git a/src/SiteExtensions/LoggingAggregate/Directory.Build.props b/src/SiteExtensions/LoggingAggregate/Directory.Build.props index a52045a3163a..54d0fcaec244 100644 --- a/src/SiteExtensions/LoggingAggregate/Directory.Build.props +++ b/src/SiteExtensions/LoggingAggregate/Directory.Build.props @@ -7,7 +7,7 @@ - $(MSBuildThisFileDirectory)..\..\..\artifacts\packages\$(Configuration)\shipping + $(MSBuildThisFileDirectory)..\..\..\artifacts\packages\$(Configuration)\Shipping diff --git a/src/SiteExtensions/LoggingAggregate/SiteExtensions.sln b/src/SiteExtensions/LoggingAggregate/SiteExtensions.sln index 39b0b63e476d..eb24ce39925c 100644 --- a/src/SiteExtensions/LoggingAggregate/SiteExtensions.sln +++ b/src/SiteExtensions/LoggingAggregate/SiteExtensions.sln @@ -7,7 +7,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{0ED05384-4F6 EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.AzureAppServices.SiteExtension", "src\Microsoft.AspNetCore.AzureAppServices.SiteExtension\Microsoft.AspNetCore.AzureAppServices.SiteExtension.csproj", "{69E22952-302D-4C56-B2BE-7C086EB05C79}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Web.Xdt.Extensions", "src\Microsoft.Web.Xdt.Extensions\Microsoft.Web.Xdt.Extensions.csproj", "{637E1D65-7F1C-476B-AD0A-30B295DF5414}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Web.Xdt.Extensions", "..\Microsoft.Web.Xdt.Extensions\src\Microsoft.Web.Xdt.Extensions.csproj", "{637E1D65-7F1C-476B-AD0A-30B295DF5414}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{6C71D9CD-271C-41CB-ACCD-9EABED6C9E80}" EndProject diff --git a/src/SiteExtensions/LoggingBranch/LoggingBranch.csproj b/src/SiteExtensions/LoggingBranch/LoggingBranch.csproj index f905ee1b1c73..b0ad58a7cfef 100644 --- a/src/SiteExtensions/LoggingBranch/LoggingBranch.csproj +++ b/src/SiteExtensions/LoggingBranch/LoggingBranch.csproj @@ -8,7 +8,7 @@ false aspnet;logging;aspnetcore;AzureSiteExtension;keyvault;configuration;dataprotection content - Microsoft.AspNetCore.AzureAppServices.SiteExtension.$(TrimmedVersion).$(SharedFxArchitecture) + Microsoft.AspNetCore.AzureAppServices.SiteExtension.$(TrimmedVersion).$(TargetArchitecture) $(PackageVersion) $(MicrosoftNETCoreAppPackageVersion) @@ -24,7 +24,7 @@ - + diff --git a/src/SiteExtensions/Runtime/Microsoft.AspNetCore.Runtime.SiteExtension.pkgproj b/src/SiteExtensions/Runtime/Microsoft.AspNetCore.Runtime.SiteExtension.pkgproj index 4b0c31060cb2..810c8e58741e 100644 --- a/src/SiteExtensions/Runtime/Microsoft.AspNetCore.Runtime.SiteExtension.pkgproj +++ b/src/SiteExtensions/Runtime/Microsoft.AspNetCore.Runtime.SiteExtension.pkgproj @@ -6,12 +6,12 @@ content $(VersionPrefix.Substring(0, $(VersionPrefix.LastIndexOf('.')))) - ASP.NET Core $(TrimmedVersion) ($(SharedFxArchitecture)) Runtime + ASP.NET Core $(TrimmedVersion) ($(TargetArchitecture)) Runtime This site extension installs Microsoft.AspNetCore.All, Microsoft.AspNetCore.App and Microsoft.NetCore.App shared runtimes. aspnetcore;AzureSiteExtension - AspNetCoreRuntime.$(TrimmedVersion).$(SharedFxArchitecture) + AspNetCoreRuntime.$(TrimmedVersion).$(TargetArchitecture) true - $(RepositoryRoot)obj\ar\$(SharedFxRid)\ + $(RepositoryRoot)obj\ar\$(TargetRuntimeIdentifier)\ true @@ -27,8 +27,8 @@ - - + +