diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 710fce4b49..0448bcdc0e 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -42,10 +42,10 @@ variables: stages: -- stage: build - displayName: Build +# Stage 1: Build and Unit Tests (3 parallel jobs) +- stage: BuildAndUnitTests + displayName: Build and Unit Tests jobs: - - template: /eng/common/templates/jobs/jobs.yml parameters: enableMicrobuild: true @@ -56,240 +56,379 @@ stages: enablePublishUsingPipelines: true enableTelemetry: true jobs: - - job: Windows + # Windows: Full build + unit tests + pack and stage artifacts + - job: Windows_BuildPackAndUnitTests + displayName: Windows Build, Pack, and Unit Tests timeoutInMinutes: 90 + condition: ne('${{ parameters.SkipTests }}', 'True') pool: name: NetCore-Public demands: ImageOverride -equals windows.vs2022preview.amd64.open strategy: matrix: - Release: - _BuildConfig: Release Debug: _BuildConfig: Debug + Release: + _BuildConfig: Release steps: - - task: PowerShell@2 - displayName: 'Install Windows SDK' - inputs: - targetType: filePath - filePath: './eng/install-windows-sdk.ps1' - failOnStderr: true - showWarnings: true + - template: /eng/windows-setup-steps.yml - - task: PowerShell@2 - displayName: 'Install procdump' - inputs: - targetType: filePath - filePath: ./eng/install-procdump.ps1 - failOnStderr: true - showWarnings: true - - task: PowerShell@2 - displayName: 'Enable local dumps' + # Build all products and run unit tests + - script: eng\common\CIBuild.cmd + -configuration $(_BuildConfig) + -prepareMachine + /p:Publish=false + /p:ProductsToBuild=all + /p:Test=false + /p:FastAcceptanceTest=true + name: BuildAll + displayName: Build All Products + + # Run unit tests for both MSTest and Testing Platform + - script: dotnet test test/UnitTests -c $(_BuildConfig) --no-build -bl:$(BUILD.SOURCESDIRECTORY)\artifacts\TestResults\$(_BuildConfig)\UnitTests.binlog --no-progress + name: UnitTests + displayName: Run Unit Tests + env: + DOTNET_ROOT: $(Build.SourcesDirectory)/.dotnet + NUGET_PACKAGES: $(Build.SourcesDirectory)/.packages + DOTNET_CLI_CONTEXT_VERBOSE: 1 + + # Pack only in Release configuration + - script: eng\common\CIBuild.cmd + -configuration Release + -prepareMachine + /p:Publish=false + /p:ProductsToBuild=all + /p:Test=false + /p:Pack=true + name: Pack + displayName: Pack NuGet Packages + condition: eq(variables._BuildConfig, 'Release') + + - task: PublishBuildArtifacts@1 + displayName: 'Publish NuGet packages for integration testing' inputs: - targetType: 'inline' - script: | - New-Item -Path $(Build.SourcesDirectory)\artifacts\CrashDumps -ItemType Directory -Force - Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" - New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" -Name "DumpFolder" -Value "$(Build.SourcesDirectory)\artifacts\CrashDumps" -PropertyType ExpandString -Force - New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" -Name "DumpCount" -Value 10 -PropertyType DWord -Force - - task: PowerShell@2 - displayName: 'Install Access Database Engine' + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/packages/Release' + ArtifactName: 'NuGetPackages' + condition: and(always(), eq(variables._BuildConfig, 'Release')) + + - task: PublishBuildArtifacts@1 + displayName: 'Publish Unit Test Results' inputs: - targetType: filePath - filePath: ./eng/install-access-database-engine.ps1 - failOnStderr: true - showWarnings: true + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)' + ArtifactName: UnitTestResults_Windows_$(_BuildConfig)_Attempt$(System.JobAttempt) + condition: always() - - script: eng\common\CIBuild.cmd + # Linux: Unit tests only (parallel) + - job: Linux_UnitTests + displayName: Linux Unit Tests + timeoutInMinutes: 90 + condition: ne('${{ parameters.SkipTests }}', 'True') + pool: + name: NetCore-Public + demands: ImageOverride -equals build.ubuntu.2004.amd64.open + strategy: + matrix: + Debug: + _BuildConfig: Debug + Release: + _BuildConfig: Release + steps: + # Build and run MSTest unit tests + - script: eng/common/cibuild.sh -configuration $(_BuildConfig) -prepareMachine + /p:ProductsToBuild=mstest-unit-tests + /p:Test=true /p:Publish=false - /p:Test=false + /p:NonWindowsBuild=true + /p:FastAcceptanceTest=true + displayName: Build and Test MSTest Unit Tests + + # Build and run Testing Platform unit tests + - script: eng/common/cibuild.sh + -configuration $(_BuildConfig) + -prepareMachine + /p:ProductsToBuild=testing-platform-unit-tests + /p:Test=true + /p:Publish=false + /p:NonWindowsBuild=true /p:FastAcceptanceTest=true - name: Build - displayName: Build + displayName: Build and Test Testing Platform Unit Tests - task: PublishBuildArtifacts@1 - displayName: 'Publish NuGet packages' + displayName: 'Publish Unit Test Results' inputs: - PathtoPublish: '$(Build.SourcesDirectory)/artifacts/packages/$(_BuildConfig)/Shipping' - ArtifactName: '$(Agent.Os)_$(Agent.JobName)_Attempt$(System.JobAttempt)' + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)' + ArtifactName: UnitTestResults_Linux_$(_BuildConfig)_Attempt$(System.JobAttempt) condition: always() - - ${{ if eq(parameters.SkipTests, False) }}: + # macOS: Unit tests only (parallel) + - job: MacOS_UnitTests + displayName: macOS Unit Tests + timeoutInMinutes: 90 + condition: ne('${{ parameters.SkipTests }}', 'True') + pool: + name: Azure Pipelines + vmImage: macos-latest + os: macOS + strategy: + matrix: + Debug: + _BuildConfig: Debug + Release: + _BuildConfig: Release + steps: + # Build and run MSTest unit tests + - script: eng/common/cibuild.sh + -configuration $(_BuildConfig) + -prepareMachine + /p:ProductsToBuild=mstest-unit-tests + /p:Test=true + /p:Publish=false + /p:NonWindowsBuild=true + /p:FastAcceptanceTest=true + displayName: Build and Test MSTest Unit Tests - # Because the build step is using -ci flag, restore is done in a local .packages directory. - # We need to pass NUGET_PACKAGES so that when dotnet test is doing evaluation phase on the projects, it can resolve .props/.targets from packages and import them. - # Otherwise, props/targets are not imported. It's important that they are imported so that IsTestingPlatformApplication ends up being set. - - script: dotnet test -c $(_BuildConfig) --no-build -bl:$(BUILD.SOURCESDIRECTORY)\artifacts\TestResults\$(_BuildConfig)\TestStep.binlog --no-progress - name: Test - displayName: Test - env: - DOTNET_ROOT: $(Build.SourcesDirectory)/.dotnet - NUGET_PACKAGES: $(Build.SourcesDirectory)/.packages - DOTNET_CLI_CONTEXT_VERBOSE: 1 + # Build and run Testing Platform unit tests + - script: eng/common/cibuild.sh + -configuration $(_BuildConfig) + -prepareMachine + /p:ProductsToBuild=testing-platform-unit-tests + /p:Test=true + /p:Publish=false + /p:NonWindowsBuild=true + /p:FastAcceptanceTest=true + displayName: Build and Test Testing Platform Unit Tests - - task: PublishBuildArtifacts@1 - displayName: 'Publish Test Results folders' - inputs: - PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)' - ArtifactName: TestResults_Windows_$(_BuildConfig)_Attempt$(System.JobAttempt) - condition: always() + - task: PublishBuildArtifacts@1 + displayName: 'Publish Unit Test Results' + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)' + ArtifactName: UnitTestResults_macOS_$(_BuildConfig)_Attempt$(System.JobAttempt) + condition: always() - - task: CopyFiles@2 - displayName: 'Copy binlogs' - inputs: - SourceFolder: '$(Build.SourcesDirectory)/artifacts/tmp/$(_BuildConfig)/testsuite' - Contents: | - **/*.binlog - TargetFolder: '$(Build.ArtifactStagingDirectory)/binlogs' - condition: always() +# Stage 2: Integration Tests (depends on Stage 1 completion) +- stage: IntegrationTests + displayName: Integration Tests + dependsOn: BuildAndUnitTests + jobs: + - template: /eng/common/templates/jobs/jobs.yml + parameters: + enableMicrobuild: true + enablePublishBuildArtifacts: true + enablePublishTestResults: true + testResultsFormat: 'vstest' + enablePublishBuildAssets: false + enablePublishUsingPipelines: false + enableTelemetry: true + jobs: + # Windows Integration Tests + - job: Windows_IntegrationTests + displayName: Windows Integration Tests + timeoutInMinutes: 90 + condition: ne('${{ parameters.SkipTests }}', 'True') + pool: + name: NetCore-Public + demands: ImageOverride -equals windows.vs2022preview.amd64.open + strategy: + matrix: + Debug: + _BuildConfig: Debug + Release: + _BuildConfig: Release + steps: + - task: DownloadBuildArtifacts@0 + displayName: 'Download NuGet packages' + inputs: + buildType: 'current' + downloadType: 'single' + artifactName: 'NuGetPackages' + downloadPath: '$(System.DefaultWorkingDirectory)' + - task: CopyFiles@2 + displayName: 'Copy packages to expected location' + inputs: + SourceFolder: '$(System.DefaultWorkingDirectory)/NuGetPackages' + Contents: '**' + TargetFolder: '$(Build.SourcesDirectory)/artifacts/packages/Release' + - template: /eng/windows-setup-steps.yml - - task: PublishBuildArtifacts@1 - displayName: 'Publish integration tests binlogs' - inputs: - PathtoPublish: '$(Build.ArtifactStagingDirectory)/binlogs' - ArtifactName: Integration_Tests_Windows_Binlogs_$(_BuildConfig) - condition: always() + # Build and run MSTest integration tests + - script: eng\common\CIBuild.cmd + -configuration $(_BuildConfig) + -prepareMachine + /p:Publish=false + /p:ProductsToBuild=mstest-integration-tests + /p:Test=false + /p:FastAcceptanceTest=true + displayName: Build MSTest Integration Tests + - script: dotnet test test/IntegrationTests/MSTest.Acceptance.IntegrationTests test/IntegrationTests/MSTest.IntegrationTests test/IntegrationTests/PlatformServices.Desktop.IntegrationTests test/IntegrationTests/MSTest.VstestConsoleWrapper.IntegrationTests -c $(_BuildConfig) --no-build -bl:$(BUILD.SOURCESDIRECTORY)\artifacts\TestResults\$(_BuildConfig)\MSTestIntegrationTests.binlog --no-progress + displayName: Run MSTest Integration Tests + env: + DOTNET_ROOT: $(Build.SourcesDirectory)/.dotnet + NUGET_PACKAGES: $(Build.SourcesDirectory)/.packages + DOTNET_CLI_CONTEXT_VERBOSE: 1 - # Upload code coverage to codecov.io - - script: dotnet msbuild -restore - eng/CodeCoverage.proj - /p:Configuration=$(_BuildConfig) - /bl:$(BUILD.SOURCESDIRECTORY)\artifacts\log\$(_BuildConfig)\CodeCoverage.binlog - displayName: Upload coverage to codecov.io - condition: and(succeeded(), eq(variables._BuildConfig, 'Debug')) + # Build and run Testing Platform integration tests + - script: eng\common\CIBuild.cmd + -configuration $(_BuildConfig) + -prepareMachine + /p:Publish=false + /p:ProductsToBuild=testing-platform-integration-tests + /p:Test=false + /p:FastAcceptanceTest=true + displayName: Build Testing Platform Integration Tests + - script: dotnet test test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests -c $(_BuildConfig) --no-build -bl:$(BUILD.SOURCESDIRECTORY)\artifacts\TestResults\$(_BuildConfig)\MTPIntegrationTests.binlog --no-progress + displayName: Run Testing Platform Integration Tests + env: + DOTNET_ROOT: $(Build.SourcesDirectory)/.dotnet + NUGET_PACKAGES: $(Build.SourcesDirectory)/.packages + DOTNET_CLI_CONTEXT_VERBOSE: 1 - - task: PublishBuildArtifacts@1 - displayName: 'Publish local dumps' - inputs: - PathtoPublish: '$(Build.SourcesDirectory)/artifacts/CrashDumps' - ArtifactName: TestResults_Windows_$(_BuildConfig) - condition: failed() + - task: PublishBuildArtifacts@1 + displayName: 'Publish Integration Test Results' + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)' + ArtifactName: IntegrationTestResults_Windows_$(_BuildConfig)_Attempt$(System.JobAttempt) + condition: always() - - job: Linux + # Linux Integration Tests + - job: Linux_IntegrationTests + displayName: Linux Integration Tests timeoutInMinutes: 90 + condition: ne('${{ parameters.SkipTests }}', 'True') pool: name: NetCore-Public demands: ImageOverride -equals build.ubuntu.2004.amd64.open strategy: matrix: - Release: - _BuildConfig: Release Debug: _BuildConfig: Debug + Release: + _BuildConfig: Release steps: + - task: DownloadBuildArtifacts@0 + displayName: 'Download NuGet packages' + inputs: + buildType: 'current' + downloadType: 'single' + artifactName: 'NuGetPackages' + downloadPath: '$(System.DefaultWorkingDirectory)' + - task: CopyFiles@2 + displayName: 'Copy packages to expected location' + inputs: + SourceFolder: '$(System.DefaultWorkingDirectory)/NuGetPackages' + Contents: '**' + TargetFolder: '$(Build.SourcesDirectory)/artifacts/packages/Release' + + # Build and run MSTest integration tests - script: eng/common/cibuild.sh -configuration $(_BuildConfig) -prepareMachine + /p:ProductsToBuild=mstest-integration-tests /p:Test=false /p:Publish=false /p:NonWindowsBuild=true /p:FastAcceptanceTest=true - displayName: Build + displayName: Build MSTest Integration Tests + - script: dotnet test test/IntegrationTests/MSTest.Acceptance.IntegrationTests test/IntegrationTests/MSTest.IntegrationTests test/IntegrationTests/PlatformServices.Desktop.IntegrationTests test/IntegrationTests/MSTest.VstestConsoleWrapper.IntegrationTests -c $(_BuildConfig) --no-build -bl:$(BUILD.SOURCESDIRECTORY)\artifacts\TestResults\$(_BuildConfig)\MSTestIntegrationTests.binlog --no-progress + displayName: Run MSTest Integration Tests + env: + DOTNET_ROOT: $(Build.SourcesDirectory)/.dotnet + NUGET_PACKAGES: $(Build.SourcesDirectory)/.packages + DOTNET_CLI_CONTEXT_VERBOSE: 1 + + # Build and run Testing Platform integration tests + - script: eng/common/cibuild.sh + -configuration $(_BuildConfig) + -prepareMachine + /p:ProductsToBuild=testing-platform-integration-tests + /p:Test=false + /p:Publish=false + /p:NonWindowsBuild=true + /p:FastAcceptanceTest=true + displayName: Build Testing Platform Integration Tests + - script: dotnet test test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests -c $(_BuildConfig) --no-build -bl:$(BUILD.SOURCESDIRECTORY)\artifacts\TestResults\$(_BuildConfig)\MTPIntegrationTests.binlog --no-progress + displayName: Run Testing Platform Integration Tests + env: + DOTNET_ROOT: $(Build.SourcesDirectory)/.dotnet + NUGET_PACKAGES: $(Build.SourcesDirectory)/.packages + DOTNET_CLI_CONTEXT_VERBOSE: 1 - task: PublishBuildArtifacts@1 - displayName: 'Publish NuGet packages' + displayName: 'Publish Integration Test Results' inputs: - PathtoPublish: '$(Build.SourcesDirectory)/artifacts/packages/$(_BuildConfig)/Shipping' - ArtifactName: '$(Agent.Os)_$(Agent.JobName)_Attempt$(System.JobAttempt)' + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)' + ArtifactName: IntegrationTestResults_Linux_$(_BuildConfig)_Attempt$(System.JobAttempt) condition: always() - - ${{ if eq(parameters.SkipTests, False) }}: - # Because the build step is using -ci flag, restore is done in a local .packages directory. - # We need to pass NUGET_PACKAGES so that when dotnet test is doing evaluation phase on the projects, it can resolve .props/.targets from packages and import them. - # Otherwise, props/targets are not imported. It's important that they are imported so that IsTestingPlatformApplication ends up being set. - - script: dotnet test --solution NonWindowsTests.slnf -c $(_BuildConfig) --no-build -bl:$(BUILD.SOURCESDIRECTORY)\artifacts\TestResults\$(_BuildConfig)\TestStep.binlog --no-progress - name: Test - displayName: Test - env: - DOTNET_ROOT: $(Build.SourcesDirectory)/.dotnet - NUGET_PACKAGES: $(Build.SourcesDirectory)/.packages - DOTNET_CLI_CONTEXT_VERBOSE: 1 - - - task: PublishBuildArtifacts@1 - displayName: 'Publish Test Results folders' - inputs: - PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)' - ArtifactName: TestResults_Linux_$(_BuildConfig)_Attempt$(System.JobAttempt) - condition: always() - - - task: CopyFiles@2 - displayName: 'Copy binlogs' - inputs: - SourceFolder: '$(Build.SourcesDirectory)/artifacts/tmp/$(_BuildConfig)/testsuite' - Contents: | - **/*.binlog - TargetFolder: '$(Build.ArtifactStagingDirectory)/binlogs' - condition: always() - - - task: PublishBuildArtifacts@1 - displayName: 'Publish integration tests binlogs' - inputs: - PathtoPublish: '$(Build.ArtifactStagingDirectory)/binlogs' - ArtifactName: Integration_Tests_Linux_Binlogs_$(_BuildConfig) - condition: always() - - - job: MacOS + # macOS Integration Tests + - job: MacOS_IntegrationTests + displayName: macOS Integration Tests timeoutInMinutes: 90 + condition: ne('${{ parameters.SkipTests }}', 'True') pool: name: Azure Pipelines vmImage: macos-latest os: macOS strategy: matrix: - Release: - _BuildConfig: Release Debug: _BuildConfig: Debug + Release: + _BuildConfig: Release steps: + - task: DownloadBuildArtifacts@0 + displayName: 'Download NuGet packages' + inputs: + buildType: 'current' + downloadType: 'single' + artifactName: 'NuGetPackages' + downloadPath: '$(System.DefaultWorkingDirectory)' + - task: CopyFiles@2 + displayName: 'Copy packages to expected location' + inputs: + SourceFolder: '$(System.DefaultWorkingDirectory)/NuGetPackages' + Contents: '**' + TargetFolder: '$(Build.SourcesDirectory)/artifacts/packages/Release' + + # Build and run MSTest integration tests + - script: eng/common/cibuild.sh + -configuration $(_BuildConfig) + -prepareMachine + /p:ProductsToBuild=mstest-integration-tests + /p:Test=false + /p:Publish=false + /p:NonWindowsBuild=true + /p:FastAcceptanceTest=true + displayName: Build MSTest Integration Tests + - script: dotnet test test/IntegrationTests/MSTest.Acceptance.IntegrationTests test/IntegrationTests/MSTest.IntegrationTests test/IntegrationTests/PlatformServices.Desktop.IntegrationTests test/IntegrationTests/MSTest.VstestConsoleWrapper.IntegrationTests -c $(_BuildConfig) --no-build -bl:$(BUILD.SOURCESDIRECTORY)\artifacts\TestResults\$(_BuildConfig)\MSTestIntegrationTests.binlog --no-progress + displayName: Run MSTest Integration Tests + env: + DOTNET_ROOT: $(Build.SourcesDirectory)/.dotnet + NUGET_PACKAGES: $(Build.SourcesDirectory)/.packages + DOTNET_CLI_CONTEXT_VERBOSE: 1 + + # Build and run Testing Platform integration tests - script: eng/common/cibuild.sh -configuration $(_BuildConfig) -prepareMachine + /p:ProductsToBuild=testing-platform-integration-tests /p:Test=false /p:Publish=false /p:NonWindowsBuild=true /p:FastAcceptanceTest=true - displayName: Build + displayName: Build Testing Platform Integration Tests + - script: dotnet test test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests -c $(_BuildConfig) --no-build -bl:$(BUILD.SOURCESDIRECTORY)\artifacts\TestResults\$(_BuildConfig)\MTPIntegrationTests.binlog --no-progress + displayName: Run Testing Platform Integration Tests + env: + DOTNET_ROOT: $(Build.SourcesDirectory)/.dotnet + NUGET_PACKAGES: $(Build.SourcesDirectory)/.packages + DOTNET_CLI_CONTEXT_VERBOSE: 1 - task: PublishBuildArtifacts@1 - displayName: 'Publish NuGet packages' + displayName: 'Publish Integration Test Results' inputs: - PathtoPublish: '$(Build.SourcesDirectory)/artifacts/packages/$(_BuildConfig)/Shipping' - ArtifactName: '$(Agent.Os)_$(Agent.JobName)_Attempt$(System.JobAttempt)' + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)' + ArtifactName: IntegrationTestResults_macOS_$(_BuildConfig)_Attempt$(System.JobAttempt) condition: always() - - - ${{ if eq(parameters.SkipTests, False) }}: - # Because the build step is using -ci flag, restore is done in a local .packages directory. - # We need to pass NUGET_PACKAGES so that when dotnet test is doing evaluation phase on the projects, it can resolve .props/.targets from packages and import them. - # Otherwise, props/targets are not imported. It's important that they are imported so that IsTestingPlatformApplication ends up being set. - - script: dotnet test --solution NonWindowsTests.slnf -c $(_BuildConfig) --no-build -bl:$(BUILD.SOURCESDIRECTORY)\artifacts\TestResults\$(_BuildConfig)\TestStep.binlog --no-progress - name: Test - displayName: Test - env: - DOTNET_ROOT: $(Build.SourcesDirectory)/.dotnet - NUGET_PACKAGES: $(Build.SourcesDirectory)/.packages - DOTNET_CLI_CONTEXT_VERBOSE: 1 - - - task: PublishBuildArtifacts@1 - displayName: 'Publish Test Results folders' - inputs: - PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)' - ArtifactName: TestResults_MacOs_$(_BuildConfig)_Attempt$(System.JobAttempt) - condition: always() - - - task: CopyFiles@2 - displayName: 'Copy binlogs' - inputs: - SourceFolder: '$(Build.SourcesDirectory)/artifacts/tmp/$(_BuildConfig)/testsuite' - Contents: | - **/*.binlog - TargetFolder: '$(Build.ArtifactStagingDirectory)/binlogs' - condition: always() - - - task: PublishBuildArtifacts@1 - displayName: 'Publish integration tests binlogs' - inputs: - PathtoPublish: '$(Build.ArtifactStagingDirectory)/binlogs' - ArtifactName: Integration_Tests_MacOS_Binlogs_$(_BuildConfig) - condition: always() diff --git a/eng/Build.props b/eng/Build.props index 559d7f3749..a6089cd1a8 100644 --- a/eng/Build.props +++ b/eng/Build.props @@ -34,4 +34,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eng/windows-setup-steps.yml b/eng/windows-setup-steps.yml new file mode 100644 index 0000000000..167028199e --- /dev/null +++ b/eng/windows-setup-steps.yml @@ -0,0 +1,35 @@ +# Template for Windows-specific setup steps +steps: +- task: PowerShell@2 + displayName: 'Install Windows SDK' + inputs: + targetType: filePath + filePath: './eng/install-windows-sdk.ps1' + failOnStderr: true + showWarnings: true + +- task: PowerShell@2 + displayName: 'Install procdump' + inputs: + targetType: filePath + filePath: ./eng/install-procdump.ps1 + failOnStderr: true + showWarnings: true + +- task: PowerShell@2 + displayName: 'Enable local dumps' + inputs: + targetType: 'inline' + script: | + New-Item -Path $(Build.SourcesDirectory)\artifacts\CrashDumps -ItemType Directory -Force + Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" + New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" -Name "DumpFolder" -Value "$(Build.SourcesDirectory)\artifacts\CrashDumps" -PropertyType ExpandString -Force + New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" -Name "DumpCount" -Value 10 -PropertyType DWord -Force + +- task: PowerShell@2 + displayName: 'Install Access Database Engine' + inputs: + targetType: filePath + filePath: ./eng/install-access-database-engine.ps1 + failOnStderr: true + showWarnings: true \ No newline at end of file diff --git a/restore.cmd b/restore.cmd old mode 100644 new mode 100755