builds/template-steps-build-test.yaml (48 lines of code) (raw):
parameters:
configuration: ''
steps:
# - task: UseDotNet@2
# displayName: 'Install .NET Core SDK 3.1 LTS'
# inputs:
# version: '3.1.x'
# - task: UseDotNet@2
# displayName: 'Install .NET SDK 5'
# inputs:
# version: '5.x'
- task: UseDotNet@2
displayName: 'Install .NET Core SDK 6 LTS'
inputs:
version: '6.x'
- task: UseDotNet@2
displayName: 'Install .NET Core SDK 7 STS'
inputs:
version: '7.x'
- task: DotNetCoreCLI@2
displayName: '.NET Restore'
inputs:
command: restore
projects: '$(System.DefaultWorkingDirectory)/*.sln'
verbosityRestore: Quiet
- task: DotNetCoreCLI@2
displayName: '.NET Build'
inputs:
projects: '$(System.DefaultWorkingDirectory)/*.sln'
arguments: '-c ${{ parameters.configuration }}'
- task: DotNetCoreCLI@2
displayName: '.NET Test'
inputs:
command: test
projects: '$(System.DefaultWorkingDirectory)/test/**/*.csproj'
arguments: '-c ${{ parameters.configuration }} /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=$(System.DefaultWorkingDirectory)\TestResults\coverage'
publishTestResult: true
- task: PowerShell@2
displayName: 'Save Test Run Status'
inputs:
targetType: Inline
script: 'Write-Host "##vso[task.setvariable variable=TestRunStatus]$(Agent.JobStatus)"'
- task: PublishCodeCoverageResults@1
displayName: 'Publish Code Coverage Results'
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)\TestResults\*.xml'
failIfCoverageEmpty: false
- task: PowerShell@2
displayName: 'Cancel Pipeline on Test Run Failure'
condition: and(succeeded(), or(eq(variables['TestRunStatus'], 'Failed'), eq(variables['TestRunStatus'], 'SucceededWithIssues')))
inputs:
targetType: Inline
script: |
Write-Host "##vso[task.setvariable variable=Agent.JobStatus]Failed"
Write-Host "##vso[task.complete result=Failed]DONE"