/
build.yml
88 lines (80 loc) · 3.55 KB
/
build.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
parameters:
# Default values
unitTest: true
codeCoverage: false
componentGovernance: false
packageArtifacts: false
packageIntegrationTests: false
targetBuildFramework: ''
steps:
- task: UseDotNet@2
displayName: 'Use .NET SDK'
inputs:
useGlobalJson: true
- ${{ if eq(parameters.targetBuildFramework, '') }}:
- task: DotNetCoreCLI@2
displayName: 'dotnet build $(buildConfiguration)'
inputs:
command: build
arguments: '--configuration $(buildConfiguration) -p:ContinuousIntegrationBuild=true -p:AssemblyVersion="$(assemblySemVer)" -p:FileVersion="$(assemblySemFileVer)" -p:InformationalVersion="$(informationalVersion)" -p:Version="$(majorMinorPatch)" -warnaserror'
workingDirectory: $(System.DefaultWorkingDirectory)
- ${{ if ne(parameters.targetBuildFramework, '') }}:
- task: DotNetCoreCLI@2
displayName: 'dotnet build $(buildConfiguration)'
inputs:
command: build
arguments: '--configuration $(buildConfiguration) -p:ContinuousIntegrationBuild=true -p:AssemblyVersion="$(assemblySemVer)" -p:FileVersion="$(assemblySemFileVer)" -p:InformationalVersion="$(informationalVersion)" -p:Version="$(majorMinorPatch)" -warnaserror -f ${{parameters.targetBuildFramework}}'
workingDirectory: $(System.DefaultWorkingDirectory)
- ${{ if eq(parameters.unitTest, 'true') }}:
- task: DotNetCoreCLI@2
displayName: 'dotnet test'
inputs:
command: test
projects: '**/*UnitTests/*.csproj'
arguments: '--configuration $(buildConfiguration) --no-build -f ${{parameters.targetBuildFramework}}'
testRunTitle: 'Unit Tests'
- ${{ if eq(parameters.codeCoverage, 'true') }}:
- task: DotNetCoreCLI@2
displayName: 'dotnet test with coverage'
inputs:
command: test
projects: '**/*UnitTests/*.csproj'
arguments: '--configuration $(buildConfiguration) --no-build --collect "XPlat Code Coverage" -s "$(build.sourcesDirectory)/CodeCoverage.runsettings" -v normal -f ${{parameters.targetBuildFramework}}'
testRunTitle: 'Unit Tests'
- task: reportgenerator@5
displayName: 'aggregate code coverage'
condition: succeededOrFailed()
inputs:
reports: '$(Agent.TempDirectory)/*/coverage.cobertura.xml'
reporttypes: 'Cobertura'
targetdir: '$(Agent.TempDirectory)/coverage'
- task: PublishCodeCoverageResults@1
displayName: 'publish code coverage'
condition: succeededOrFailed()
inputs:
codeCoverageTool: 'Cobertura'
failIfCoverageEmpty: true
summaryFileLocation: '$(Agent.TempDirectory)/coverage/Cobertura.xml'
- task: PublishBuildArtifacts@1
displayName: 'publish Cobertura.xml'
inputs:
pathToPublish: '$(Agent.TempDirectory)/coverage/Cobertura.xml'
artifactName: 'IntegrationTests'
artifactType: 'container'
- ${{ if eq(parameters.packageArtifacts, 'true') }}:
# https://eng.ms/docs/cloud-ai-platform/devdiv/one-engineering-system-1es/1es-docs/secure-supply-chain/ado-sbom-generator
- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
displayName: 'SBOM Generation Task'
inputs:
BuildDropPath: '$(build.artifactStagingDirectory)'
BuildComponentPath: '$(Build.SourcesDirectory)'
- task: PublishBuildArtifacts@1
displayName: 'Publish SBOM Artifacts'
inputs:
pathToPublish: '$(build.artifactStagingDirectory)'
artifactName: 'deploy'
artifactType: 'container'
- ${{ if eq(parameters.packageArtifacts, 'true') }}:
- template: package.yml
- ${{ if eq(parameters.packageIntegrationTests, 'true') }}:
- template: package-integration-tests.yml