💚 Updates CI configuration

This commit is contained in:
2019-12-07 23:56:25 +02:00
parent c79860e1a9
commit 4a640e4ec6

View File

@ -5,152 +5,157 @@ resources:
submodules: true submodules: true
lfs: true lfs: true
trigger: trigger:
batch: true
branches: branches:
include: include:
- master - master
- develop - develop
- feature/* - feature/*
- bugfix/* - bugfix/*
- release/*
paths: paths:
include: include:
- azure-pipelines.yml
- src/* - src/*
- tests/* - tests/*
variables: variables:
- group: Environment - group: Environment
- group: ApiKeys
- name: SONAR_PROJECT
value: REPLACE_ME
jobs: jobs:
- job: Setup - job: Version
pool: pool:
vmImage: windows-latest vmImage: ubuntu-latest
steps: steps:
- powershell: | - pwsh: dotnet tool install --tool-path .. gitversion.tool
dotnet tool install --tool-path .. gitversion.tool displayName: Install GitVersion
displayName: Installing Dotnet Tools - pwsh: |
echo "##vso[task.setvariable variable=gitVersion;isOutput=true]$(../dotnet-gitversion /output json /showvariable SemVer)"
- powershell: | "Current version: $(../dotnet-gitversion /output json /showvariable SemVer)"
$git = $(../dotnet-gitversion /output json /showvariable NugetVersion) displayName: Sets SemVer
echo "##vso[task.setvariable variable=gitVersion;isOutput=true]$(../dotnet-gitversion /output json /showvariable NugetVersion)" name: versioning
name: versioning - job: Build
displayName: Setting version from git
- powershell: |
echo "Current version: $(versioning.gitVersion)"
displayName: Shows currently compiling version
- job: Building
pool: pool:
vmImage: ubuntu-latest vmImage: ubuntu-latest
dependsOn: dependsOn:
- Setup - Version
variables: variables:
Version: $[ dependencies.Setup.outputs['versioning.gitVersion'] ] Version: $[ dependencies.Version.outputs['versioning.gitVersion'] ]
steps: steps:
- checkout: self - checkout: self
fetchDepth: 1 fetchDepth: 1
- task: DotNetCoreCLI@2 - task: DotNetCoreCLI@2
displayName: Restoring nugets displayName: Build Solution
inputs: inputs:
command: 'restore' command: 'build'
arguments: -Project2ProjectTimeOut 20
verbosityRestore: Normal
- task: DotNetCoreCLI@2
displayName: Building Projects
inputs:
command: build
projects: src/*/*.csproj
configuration: $(BuildConfiguration) configuration: $(BuildConfiguration)
arguments: -o $(build.artifactStagingDirectory)/build arguments: '-o $(build.artifactStagingDirectory)/build'
versioningScheme: byEnvVar versioningScheme: byEnvVar
versionEnvVar: Version versionEnvVar: Version
verbosityRestore: Minimal
- task: PublishBuildArtifacts@1 - task: PublishBuildArtifacts@1
displayName: Publish build artifacts displayName: Publish Build
inputs: inputs:
PathtoPublish: $(build.artifactStagingDirectory)/build PathtoPublish: $(build.artifactStagingDirectory)/build
ArtifactName: 'drop' ArtifactName: 'drop'
publishLocation: 'Container'
- task: DotNetCoreCLI@2 - task: DotNetCoreCLI@2
displayName: Packing as Nugets displayName: Pack Nugets
inputs: inputs:
command: pack command: 'pack'
searchPatternPack: 'src/*/*.csproj' packagesToPack: 'src/*/*.csproj'
packDirectory: '$(build.artifactStagingDirectory)/nuget'
configuration: $(BuildConfiguration) configuration: $(BuildConfiguration)
versioningScheme: byEnvVar versioningScheme: byEnvVar
versionEnvVar: Version versionEnvVar: Version
verbosityPack: normal verbosityRestore: Minimal
packDirectory: $(build.artifactStagingDirectory)/nuget verbosityPack: Minimal
- task: PublishBuildArtifacts@1 - task: PublishBuildArtifacts@1
name: publishNuget displayName: Publish Nugets
displayName: Publish nugets
inputs: inputs:
PathtoPublish: $(build.artifactStagingDirectory)/nuget PathtoPublish: '$(build.artifactStagingDirectory)/nuget'
ArtifactName: 'nuget' ArtifactName: 'nuget'
publishLocation: 'Container'
- job: Testing - job: Test
pool: pool:
vmImage: ubuntu-latest vmImage: ubuntu-latest
dependsOn: dependsOn:
- Setup - Version
variables: variables:
Version: $[ dependencies.Setup.outputs['versioning.gitVersion'] ] 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: steps:
- checkout: self - checkout: self
fetchDepth: 1 - 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 - task: DotNetCoreCLI@2
name: dotnetRestore displayName: Test Solution
displayName: Restoring nugets
inputs: inputs:
command: 'restore' command: 'test'
arguments: -Project2ProjectTimeOut 20 --packages "$(Build.BinariesDirectory)/.nuget)
verbosityRestore: Normal
- task: DotNetCoreCLI@2
name: dotnetBuild
displayName: Building Projects
inputs:
command: build
projects: src/*/*.*proj
configuration: $(BuildConfiguration)
versioningScheme: byEnvVar
versionEnvVar: Version
- task: DotNetCoreCLI@2
name: dotnetTest
displayName: Testing implementations
inputs:
command: test
projects: 'tests/*/*.*proj'
configuration: 'Debug' configuration: 'Debug'
testRunTitle: 'Running tests' arguments: '--logger trx /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:CoverletOutput=$(build.artifactStagingDirectory)/coverage/ /p:MergeWith=$(build.artifactStagingDirectory)/coverage/coverage.json'
publishTestResults: true
- job: Publishing 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: pool:
vmImage: ubuntu-latest vmImage: ubuntu-latest
dependsOn: dependsOn:
- Setup - Version
- Building - Build
- Testing - Test
variables:
Version: $[ dependencies.Setup.outputs['versioning.gitVersion'] ]
steps: steps:
- checkout: none - checkout: none
- task: DownloadPipelineArtifact@2 - task: DownloadPipelineArtifact@2
displayName: Downloading artifact displayName: Fetch nugets
inputs: inputs:
buildType: 'current'
artifactName: 'nuget' artifactName: 'nuget'
targetPath: $(build.artifactStagingDirectory)/nuget targetPath: $(build.artifactStagingDirectory)/nuget
- task: DotNetCoreCLI@2 - task: DotNetCoreCLI@2
displayName: Pushing to nuget server condition: ne(variables['Build.Reason'], 'PullRequest')
displayName: Push Nugets
inputs: inputs:
workingDirectory: $(build.artifactStagingDirectory)/nuget workingDirectory: $(build.artifactStagingDirectory)/nuget
command: 'custom' command: 'custom'
custom: nuget custom: 'nuget'
arguments: > arguments: >
push *.nupkg push *.nupkg
-s $(KritikosNuget) -s $(KritikosNuget)