-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathazure-pipelines.yml
133 lines (116 loc) · 4.21 KB
/
azure-pipelines.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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# ASP.NET Core (.NET Framework)
# Build and test ASP.NET Core projects targeting the full .NET Framework.
# Add steps that publish symbols, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
isMaster: $[eq(variables['Build.SourceBranch'], 'refs/heads/master')]
stages:
- stage: BuildAndTest
jobs:
- job: BuildAndTest
steps:
- task: UseDotNet@2
inputs:
displayName: 'Use .NET core 2.x for sonarqube'
packageType: sdk
version: 2.2.203
condition: eq(variables.isMaster, true)
- task: SonarQubePrepare@4
inputs:
displayName: 'Prepare analysis on SonarQube'
SonarQube: SonarQube
projectKey: '$(SonarQubeToken)'
projectName: 'SpeakerMeet.Api'
extraProperties: sonar.cs.opencover.reportsPaths=**/coverage.opencover.xml
condition: eq(variables.isMaster, true)
- task: UseDotNet@2
displayName: 'Use .NET sdk'
inputs:
packageType: sdk
version: 5.x
installationPath: $(Agent.ToolsDirectory)/dotnet
- task: DotNetCoreCLI@2
displayName: dotnet restore
inputs:
command: 'restore'
projects: '**/*.csproj'
feedsToUse: 'select'
verbosityRestore: 'quiet'
- task: DotNetCoreCLI@2
displayName: dotnet build
inputs:
command: 'build'
projects: '**/*.csproj'
arguments: '--no-restore --configuration $(BuildConfiguration)'
- task: DotNetCoreCLI@2
displayName: 'Run unit tests - $(buildConfiguration)'
inputs:
command: 'test'
arguments: '--configuration $(buildConfiguration) --filter "FullyQualifiedName!~SpeakerMeet.Tests.Integration.DB" /p:CollectCoverage=true --collect:"XPlat Code Coverage" /p:CoverletOutputFormat=opencover'
projects: '**/*.csproj'
nobuild: true
continueOnError: true
- task: SonarQubeAnalyze@4
displayName: 'Run Code Analysis'
condition: eq(variables.isMaster, true)
- task: SonarQubePublish@4
displayName: 'Publish Quality Gate Result'
inputs:
pollingTimeoutSec: '300'
condition: eq(variables.isMaster, true)
- script: |
dotnet tool install -g dotnet-reportgenerator-globaltool --ignore-failed-sources
reportgenerator -reports:$(Agent.TempDirectory)/**/coverage.cobertura.xml -targetdir:$(Build.SourcesDirectory)/CodeCoverage -reporttypes:Cobertura
displayName: Create Code coverage report
- task: PublishCodeCoverageResults@1
displayName: 'Publish code coverage'
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(Build.SourcesDirectory)/CodeCoverage/Cobertura.xml'
pathToSources: '$(Build.SourcesDirectory)'
- task: PublishTestResults@2
inputs:
testResultsFormat: 'VSTest'
testResultsFiles: '**/*.trx'
searchFolder: '$(Agent.TempDirectory)'
mergeTestResults: true
failTaskOnFailedTests: true
- task: DotNetCoreCLI@2
displayName: Build Artifact
inputs:
command: publish
projects: '**/SpeakerMeet.Api.csproj'
publishWebProjects: false
arguments: '--no-build --configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True
- task: PublishBuildArtifacts@1
displayName: Publish Artifact
inputs:
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: 'SpeakerMeet.Api'
condition: succeeded()
- stage: DeployToQA
jobs:
- deployment: Playground
environment: Playground
strategy:
runOnce:
deploy:
steps:
- bash: ls
- bash: ls $(Pipeline.Workspace)
- bash: ls $(Pipeline.Workspace)/SpeakerMeet.Api
- task: AzureWebApp@1
displayName: Azure Web App Deploy
inputs:
azureSubscription: Playground
appName: speakermeetdemo
package: $(Pipeline.Workspace)/SpeakerMeet.Api/*.zip