-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathazure-pipelines-1.yml
110 lines (91 loc) · 3.75 KB
/
azure-pipelines-1.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
105
106
107
108
109
110
# Process setup per JM
# https://montemagno.com/continuous-integration-delivery-for-net-libraries-with-vsts/
# Testing and coverage from
# https://docs.microsoft.com/en-us/learn/modules/run-quality-tests-build-pipeline/4-add-unit-tests
# https://docs.microsoft.com/en-us/learn/modules/run-quality-tests-build-pipeline/6-perform-code-coverage
# Set buildnumber here and add versioningScheme: byBuildNumber to NugetCommand@2
name: 4.1$(rev:.r)
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
steps:
# Needed for when install reportgenerator and use it immediately
- task: UseDotNet@2
displayName: 'Use .NET Core SDK 3.x'
inputs:
packageType: 'sdk'
version: '3.x'
# JM specified version 4.5.1 but can use latest default
- task: NuGetToolInstaller@1
displayName: 'Load Nuget Tool'
inputs:
versionSpec: '4.5.1'
- task: NuGetCommand@2
displayName: 'Restore packages for XamarinFormsMvvmAdaptor'
inputs:
command: 'restore'
restoreSolution: '**/XamarinFormsMvvmAdaptor.csproj'
feedsToUse: 'select'
vstsFeed: '86153590-b7da-4504-b416-f06a4b16a355'
versioningScheme: byBuildNumber
- task: MSBuild@1
displayName: 'Beta - Build & Package XamarinFormsMvvmAdaptor'
inputs:
solution: '**/XamarinFormsMvvmAdaptor.csproj'
configuration: 'Release'
msbuildArguments: '/t:restore;build;pack /p:PackageVersion=$(Build.BuildNumber)-beta /p:PackageOutputPath=$(build.artifactstagingdirectory)/beta /p:AssemblyFileVersion=$(Build.BuildNumber)'
- task: NuGetCommand@2
displayName: 'Restore packages for Unit Tests'
inputs:
command: 'restore'
restoreSolution: '**/XamarinFormsMvvmAdaptor.Tests.csproj'
feedsToUse: 'select'
vstsFeed: '86153590-b7da-4504-b416-f06a4b16a355'
versioningScheme: byBuildNumber
- task: MSBuild@1
displayName: 'Build Unit Tests project'
inputs:
solution: '**/XamarinFormsMvvmAdaptor.Tests.csproj'
configuration: 'Debug'
msbuildArguments: '/t:restore;clean;build'
#NB - For some reason coverage only runs on Debug configuration
- task: DotNetCoreCLI@2
displayName: 'Run unit tests with code coverage'
inputs:
command: 'test'
projects: '**/XamarinFormsMvvmAdaptor.Tests.csproj'
arguments: '--no-build --configuration Debug /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=$(Build.SourcesDirectory)/TestResults/Coverage/'
publishTestResults: true
- task: DotNetCoreCLI@2
displayName: 'Install ReportGenerator'
inputs:
command: custom
custom: tool
arguments: 'install --global dotnet-reportgenerator-globaltool'
- script: |
reportgenerator -reports:$(Build.SourcesDirectory)/**/coverage.cobertura.xml -targetdir:$(Build.SourcesDirectory)/CodeCoverage -reporttypes:HtmlInline_AzurePipelines -reporttypes:Badges
displayName: 'Create code coverage report'
- task: PublishCodeCoverageResults@1
displayName: 'Publish code coverage report'
inputs:
codeCoverageTool: 'cobertura'
summaryFileLocation: '$(Build.SourcesDirectory)/**/coverage.cobertura.xml'
- task: MSBuild@1
displayName: 'Public - Build & Package XamarinFormsMvvmAdaptor'
inputs:
solution: '**/XamarinFormsMvvmAdaptor.csproj'
configuration: 'Release'
msbuildArguments: '/t:restore;build;pack /p:PackageVersion=$(Build.BuildNumber) /p:PackageOutputPath=$(build.artifactstagingdirectory)/public /p:AssemblyFileVersion=$(Build.BuildNumber)'
#Maybe you want to add unit test runners here
- task: CopyFiles@2
displayName: 'Copy nuget packages to artifacts directory'
inputs:
SourceFolder: '$(build.sourcesdirectory)'
Contents: '**\bin\Release\**\*.nupkg'
TargetFolder: '$(build.artifactstagingdirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'