💚 Updates CI configuration
This commit is contained in:
		@@ -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
 | 
				
			||||||
    displayName: Setting version from git
 | 
					- job: Build
 | 
				
			||||||
 | 
					 | 
				
			||||||
  - 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)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user