name: PR-$(System.PullRequest.PullRequestNumber)-$(Date:yyyyMMdd)$(Rev:.rr) trigger: # Batch merge builds together while a merge build is running batch: true branches: include: - master - release* - feature* paths: include: - '*' exclude: - /.vsts-ci/misc-analysis.yml - /.github/ISSUE_TEMPLATE/* - /.dependabot/config.yml pr: branches: include: - master - release* - feature* paths: include: - '*' exclude: - tools/releaseBuild/* - tools/releaseBuild/azureDevOps/templates/* - /.vsts-ci/misc-analysis.yml - /.github/ISSUE_TEMPLATE/* - /.dependabot/config.yml variables: DOTNET_CLI_TELEMETRY_OPTOUT: 1 POWERSHELL_TELEMETRY_OPTOUT: 1 # Avoid expensive initialization of dotnet cli, see: https://donovanbrown.com/post/Stop-wasting-time-during-NET-Core-builds DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 __SuppressAnsiEscapeSequences: 1 resources: - repo: self clean: true stages: - stage: BuildLinux displayName: Build for Linux jobs: - template: templates/ci-build.yml parameters: pool: ubuntu-20.04 jobName: linux_build displayName: linux Build - stage: TestLinux displayName: Test for Linux jobs: - job: linux_test pool: vmImage: ubuntu-20.04 displayName: Linux Test steps: - pwsh: | Get-ChildItem -Path env: displayName: Capture Environment condition: succeededOrFailed() - task: DownloadBuildArtifacts@0 displayName: 'Download Build Artifacts' inputs: downloadType: specific itemPattern: | build/**/* xunit/**/* downloadPath: '$(System.ArtifactsDirectory)' - pwsh: | Get-ChildItem "$(System.ArtifactsDirectory)\*" -Recurse displayName: 'Capture Artifacts Directory' continueOnError: true - pwsh: | Import-Module .\tools\ci.psm1 Invoke-CIInstall -SkipUser displayName: Bootstrap condition: succeededOrFailed() - pwsh: | Import-Module .\build.psm1 Restore-PSOptions -PSOptionsPath '$(System.ArtifactsDirectory)\build\psoptions.json' $output = (Get-PSOptions).Output $rootPath = Split-Path (Split-Path $output) Expand-Archive -Path '$(System.ArtifactsDirectory)\build\build.zip' -DestinationPath $rootPath -Force ## Fix permissions Get-ChildItem $rootPath -Recurse | ForEach-Object { if ($_ -is [System.IO.DirectoryInfo]) { chmod +rwx $_.FullName } else { chmod +rw $_.FullName } } chmod a+x $output Write-Host "=== Capture Unzipped Directory ===" Get-ChildItem $rootPath -Recurse displayName: 'Unzip Build and Fix Permissions' condition: succeeded() - pwsh: | Import-Module .\tools\ci.psm1 Restore-PSOptions -PSOptionsPath '$(System.ArtifactsDirectory)\build\psoptions.json' Invoke-CITest -Purpose UnelevatedPesterTests -TagSet CI displayName: Test - UnelevatedPesterTests - CI condition: succeeded() - pwsh: | Import-Module .\tools\ci.psm1 Restore-PSOptions -PSOptionsPath '$(System.ArtifactsDirectory)\build\psoptions.json' Invoke-CITest -Purpose ElevatedPesterTests -TagSet CI displayName: Test - ElevatedPesterTests - CI condition: succeededOrFailed() - pwsh: | Import-Module .\tools\ci.psm1 Restore-PSOptions -PSOptionsPath '$(System.ArtifactsDirectory)\build\psoptions.json' Invoke-CITest -Purpose UnelevatedPesterTests -TagSet Others displayName: Test - UnelevatedPesterTests - Others condition: succeededOrFailed() - pwsh: | Import-Module .\tools\ci.psm1 Restore-PSOptions -PSOptionsPath '$(System.ArtifactsDirectory)\build\psoptions.json' Invoke-CITest -Purpose ElevatedPesterTests -TagSet Others displayName: Test - ElevatedPesterTests - Others condition: succeededOrFailed() - pwsh: | Import-Module .\build.psm1 $xUnitTestResultsFile = "$(System.ArtifactsDirectory)\xunit\xUnitTestResults.xml" Test-XUnitTestResults -TestResultsFile $xUnitTestResultsFile displayName: Verify xUnit Test Results condition: succeededOrFailed() - stage: CodeCovTestPackage displayName: CodeCoverage and Test Packages dependsOn: [] # by specifying an empty array, this stage doesn't depend on the stage before it jobs: - job: CodeCovTestPackage displayName: CodeCoverage and Test Packages pool: vmImage: ubuntu-20.04 steps: - pwsh: | Import-Module .\tools\ci.psm1 New-CodeCoverageAndTestPackage displayName: CodeCoverage and Test Package