163 lines
6.6 KiB
YAML
163 lines
6.6 KiB
YAML
resources:
|
|
repositories:
|
|
- repository: self
|
|
checkoutOptions:
|
|
submodules: true
|
|
lfs: true
|
|
trigger:
|
|
batch: true
|
|
branches:
|
|
include:
|
|
- master
|
|
- develop
|
|
- feature/*
|
|
- bugfix/*
|
|
- release/*
|
|
paths:
|
|
include:
|
|
- azure-pipelines.yml
|
|
- src/*
|
|
- tests/*
|
|
variables:
|
|
- group: Environment
|
|
- group: ApiKeys
|
|
- name: SONAR_PROJECT
|
|
value: REPLACE_ME
|
|
jobs:
|
|
- job: Version
|
|
pool:
|
|
vmImage: ubuntu-latest
|
|
steps:
|
|
- pwsh: dotnet tool install --tool-path .. gitversion.tool
|
|
displayName: Install GitVersion
|
|
- pwsh: |
|
|
echo "##vso[task.setvariable variable=gitVersion;isOutput=true]$(../dotnet-gitversion /output json /showvariable SemVer)"
|
|
"Current version: $(../dotnet-gitversion /output json /showvariable SemVer)"
|
|
displayName: Sets SemVer
|
|
name: versioning
|
|
- job: Build
|
|
pool:
|
|
vmImage: ubuntu-latest
|
|
dependsOn:
|
|
- Version
|
|
variables:
|
|
Version: $[ dependencies.Version.outputs['versioning.gitVersion'] ]
|
|
steps:
|
|
- checkout: self
|
|
fetchDepth: 1
|
|
- task: DotNetCoreCLI@2
|
|
displayName: Build Solution
|
|
inputs:
|
|
command: 'build'
|
|
configuration: $(BuildConfiguration)
|
|
arguments: '-o $(build.artifactStagingDirectory)/build'
|
|
versioningScheme: byEnvVar
|
|
versionEnvVar: Version
|
|
verbosityRestore: Minimal
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: Publish Build
|
|
inputs:
|
|
PathtoPublish: $(build.artifactStagingDirectory)/build
|
|
ArtifactName: 'drop'
|
|
publishLocation: 'Container'
|
|
- task: DotNetCoreCLI@2
|
|
displayName: Pack Nugets
|
|
inputs:
|
|
command: 'pack'
|
|
packagesToPack: 'src/*/*.csproj'
|
|
packDirectory: '$(build.artifactStagingDirectory)/nuget'
|
|
configuration: $(BuildConfiguration)
|
|
versioningScheme: byEnvVar
|
|
versionEnvVar: Version
|
|
verbosityRestore: Minimal
|
|
verbosityPack: Minimal
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: Publish Nugets
|
|
inputs:
|
|
PathtoPublish: '$(build.artifactStagingDirectory)/nuget'
|
|
ArtifactName: 'nuget'
|
|
publishLocation: 'Container'
|
|
- job: Test
|
|
pool:
|
|
vmImage: ubuntu-latest
|
|
dependsOn:
|
|
- Version
|
|
variables:
|
|
Version: $[ dependencies.Version.outputs['versioning.gitVersion'] ]
|
|
GITHUB_KEY: $(GitHubApiKey)
|
|
SONAR_ORG: $(SonarCloudOrganization)
|
|
SONAR_KEY: $(SonarCloudApiKey)
|
|
SONAR_URL: $(SonarCloudHost)
|
|
CODECOV_KEY: $(CodeCovApiKey)
|
|
COVERALLS_KEY: $(CoverallsApiKey)
|
|
steps:
|
|
- checkout: self
|
|
- pwsh: |
|
|
dotnet tool install --tool-path .. dotnet-sonarscanner
|
|
dotnet tool install --tool-path .. coveralls.net
|
|
dotnet tool install --tool-path .. Codecov.Tool
|
|
displayName: Install Tools
|
|
- pwsh: |
|
|
../dotnet-sonarscanner begin /k:"$(SONAR_PROJECT)" /v:"$(Version)" /o:"$(SONAR_ORG)" /d:sonar.host.url="$(SONAR_URL)" /d:sonar.login="$(SONAR_KEY)" /d:sonar.cs.opencover.reportsPaths="$(build.artifactStagingDirectory)/coverage/coverage.opencover.xml" /d:sonar.branch.name="$(Build.SourceBranchName)" /d:sonar.github.repository="$(Build.Repository.Name)" /d:sonar.github.oauth=$(GITHUB_KEY)
|
|
condition: ne(variables['Build.Reason'], 'PullRequest')
|
|
displayName: SonarCloud (commit)
|
|
- pwsh: |
|
|
../dotnet-sonarscanner begin /k:"$(SONAR_PROJECT)" /v:"$(Version)" /o:"$(SONAR_ORG)" /d:sonar.host.url="$(SONAR_URL)" /d:sonar.login="$(SONAR_KEY)" /d:sonar.cs.opencover.reportsPaths="$(build.artifactStagingDirectory)/coverage/coverage.opencover.xml" /d:sonar.github.repository="$(Build.Repository.Name)" /d:sonar.github.oauth=$(GITHUB_KEY) /d:sonar.pullrequest.key="$(System.PullRequest.PullRequestNumber)" /d:sonar.pullrequest.branch="$(Build.SourceBranchName)" /d:sonar.pullrequest.provider="github"
|
|
condition: eq(variables['Build.Reason'], 'PullRequest')
|
|
displayName: SonarCloud (PR)
|
|
- task: DotNetCoreCLI@2
|
|
displayName: Test Solution
|
|
inputs:
|
|
command: 'test'
|
|
configuration: 'Debug'
|
|
arguments: '--logger trx /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:CoverletOutput=$(build.artifactStagingDirectory)/coverage/ /p:MergeWith=$(build.artifactStagingDirectory)/coverage/coverage.json'
|
|
publishTestResults: true
|
|
verbosityPack: Minimal
|
|
verbosityRestore: Minimal
|
|
testRunTitle: 'Unit Tests'
|
|
- pwsh: |
|
|
../dotnet-sonarscanner end /d:sonar.login="$(SONAR_KEY)"
|
|
displayName: Publish SonarCloud
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: Publish Test Coverage
|
|
inputs:
|
|
PathtoPublish: $(build.artifactStagingDirectory)/coverage
|
|
ArtifactName: 'coverage'
|
|
publishLocation: 'Container'
|
|
- pwsh: |
|
|
../csmacnz.Coveralls --repoToken "$(COVERALLS_KEY)" --opencover -i $(build.artifactStagingDirectory)/coverage/coverage.opencover.xml --useRelativePaths --commitId "$(Build.SourceVersion)" --commitBranch "$(Build.SourceBranchName)" --commitAuthor "$(Build.RequestedFor)" --commitEmail "$(Build.RequestedForEmail)" --commitMessage "$(Build.SourceVersionMessage)" --jobId "$(Build.BuildId)"
|
|
../codecov --token "$(CodeCovApiKey)" --file $(build.artifactStagingDirectory)/coverage/coverage.opencover.xml --branch "$(Build.SourceBranchName)" --sha "$(Build.SourceVersion)"
|
|
condition: ne(variables['Build.Reason'], 'PullRequest')
|
|
displayName: Push Coverage (commit)
|
|
- pwsh: |
|
|
../csmacnz.Coveralls --repoToken "$(COVERALLS_KEY)" --opencover -i $(build.artifactStagingDirectory)/coverage/coverage.opencover.xml --useRelativePaths --commitId "$(Build.SourceVersion)" --commitBranch "$(Build.SourceBranchName)" --commitAuthor "$(Build.RequestedFor)" --commitEmail "$(Build.RequestedForEmail)" --commitMessage "$(Build.SourceVersionMessage)" --jobId "$(Build.BuildId)" --pullRequest "$(System.PullRequest.PullRequestNumber)"
|
|
../codecov --token "$(CodeCovApiKey)" --file $(build.artifactStagingDirectory)/coverage/coverage.opencover.xml --branch "$(Build.SourceBranchName)" --sha "$(Build.SourceVersion)" --pr "$(System.PullRequest.PullRequestNumber)"
|
|
condition: eq(variables['Build.Reason'], 'PullRequest')
|
|
displayName: Push Coverage (PR)
|
|
- job: Publish
|
|
pool:
|
|
vmImage: ubuntu-latest
|
|
dependsOn:
|
|
- Version
|
|
- Build
|
|
- Test
|
|
steps:
|
|
- checkout: none
|
|
- task: DownloadPipelineArtifact@2
|
|
displayName: Fetch nugets
|
|
inputs:
|
|
buildType: 'current'
|
|
artifactName: 'nuget'
|
|
targetPath: $(build.artifactStagingDirectory)/nuget
|
|
- task: DotNetCoreCLI@2
|
|
condition: ne(variables['Build.Reason'], 'PullRequest')
|
|
displayName: Push Nugets
|
|
inputs:
|
|
workingDirectory: $(build.artifactStagingDirectory)/nuget
|
|
command: 'custom'
|
|
custom: 'nuget'
|
|
arguments: >
|
|
push *.nupkg
|
|
-s $(KritikosNuget)
|
|
-k $(KritikosApiKey)
|