/
build.yml
104 lines (91 loc) · 3.47 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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# Copyright (C) Microsoft Corporation. All rights reserved.
# Licensed under the MIT license. See LICENSE.txt in the project root for license information.
parameters:
BuildConfiguration: Release
BuildPlatform: x86
Docker: false
Sign: false
steps:
- powershell: |
dotnet tool install --tool-path "${env:AGENT_TOOLSDIRECTORY}\nbgv" nbgv
$version = & "${env:AGENT_TOOLSDIRECTORY}\nbgv\nbgv.exe" get-version --variable SemVer1
& "${env:AGENT_TOOLSDIRECTORY}\nbgv\nbgv.exe" cloud --version $version
displayName: Set cloud build version
- task: NuGetToolInstaller@0
displayName: Install nuget
inputs:
versionSpec: '4.1.0'
- task: NuGetCommand@2
displayName: Restore packages
- task: VSBuild@1
displayName: Build
inputs:
configuration: ${{ parameters.BuildConfiguration }}
platform: ${{ parameters.BuildPlatform }}
maximumCpuCount: true
env:
TreatWarningsAsErrors: true
- task: VSTest@2
displayName: Functional tests
inputs:
configuration: ${{ parameters.BuildConfiguration }}
platform: ${{ parameters.BuildPlatform }}
testAssemblyVer2: |
bin\${{ parameters.BuildConfiguration }}\*.test.dll
runInParallel: true
codeCoverageEnabled: true
testRunTitle: Functional tests (${{ parameters.BuildConfiguration }}|${{ parameters.BuildPlatform }})
- ${{ if eq(parameters.Docker, 'true') }}:
# Make sure service images are rebuilt if Dockerfiles changed.
- task: DockerCompose@0
displayName: Build images
inputs:
dockerComposeFile: docker/docker-compose.yml
action: Build services
env:
CONFIGURATION: ${{ parameters.BuildConfiguration }}
- task: DockerCompose@0
displayName: Runtime tests
inputs:
dockerComposeFile: docker/docker-compose.yml
action: Run a specific service
serviceName: test
containerCommand: -Command Invoke-Pester C:\Tests -EnableExit -OutputFile C:\Tests\Results.xml -OutputFormat NUnitXml
detached: false
env:
CONFIGURATION: ${{ parameters.BuildConfiguration }}
- task: PublishTestResults@2
displayName: Publish test results
inputs:
buildConfiguration: ${{ parameters.BuildConfiguration }}
buildPlatform: ${{ parameters.BuildPlatform }}
testRunTitle: Runtime tests (${{ parameters.BuildConfiguration }}|${{ parameters.BuildPlatform }})
testResultsFormat: NUnit
testResultsFiles: '**\*Results.xml'
searchFolder: $(Build.SourcesDirectory)\docker\Tests
mergeTestResults: true
condition: succeededOrFailed()
- script: |
choco pack pkg\vswhere\vswhere.nuspec --out "bin\${{ parameters.BuildConfiguration }}" --version "%NBGV_NuGetPackageVersion%" "Configuration=${{ parameters.BuildConfiguration }}" "CommitId=$(Build.SourceVersion)" "Tag=$(Build.BuildNumber)"
displayName: Package
workingDirectory: $(Build.SourcesDirectory)
- ${{ if eq(parameters.Sign, 'true') }}:
- task: VSBuild@1
displayName: Sign package
inputs:
solution: pkg\vswhere\vswhere.signproj
configuration: ${{ parameters.BuildConfiguration }}
platform: ${{ parameters.BuildPlatform }}
- task: CopyFiles@2
displayName: Copy build artifacts
inputs:
SourceFolder: $(Build.SourcesDirectory)
Contents: |
bin\${{ parameters.BuildConfiguration }}\**
TargetFolder: $(Build.ArtifactStagingDirectory)\out
- task: PublishBuildArtifacts@1
displayName: Publish build artifacts
inputs:
PathtoPublish: $(Build.ArtifactStagingDirectory)\out
ArtifactName: drop
publishLocation: Container