Initial reference template: paths: include: - Redacted/src/Redacted.API/* - Redacted/tests/Redacted.API.Tests/* jobs: - template: ../templates/CI.Template.yml # Template reference parameters: buildScript: './Redacted/build-api-agent.sh' solutionPath : './Redacted/Redacted.API.sln' projectPath : './Redacted/src/Redacted.API/Redacted.API.csproj' projectName : 'Redacted.Api' projectKey : 'keynumber' ------ # Template for CI build parameters: name: 'Package_Build' # defaults for any parameters that aren't specified buildScript: '' buildScriptArgs: '' solutionPath : '' projectPath : '' projectName : '' projectKey : '' workingDir : 'Redacted' nugetBuildProperties : 'VersionSuffix=-preview.$(Build.BuildNumber)' jobs: - job: ${{ parameters.name }} pool: name: Hosted Ubuntu 1604 variables: solution: '**/*.sln' buildPlatform: 'Any CPU' buildConfiguration: 'Release' steps: - task: UseDotNet@0 displayName: 'DotNet install SDK' inputs: packageType: 'sdk' version: '2.2.401' - task: SonarCloudPrepare@1 inputs: SonarCloud: 'Project_SonarCloud' organization: 'Redacted' scannerMode: 'MSBuild' projectKey: '${{ parameters.projectKey }}' projectName: '${{ parameters.projectName }}' projectVersion: '1.3' extraProperties: | # Additional properties that will be passed to the scanner, # Put one key=value per line, example: # sonar.exclusions=**/*.bin sonar.exclusions=**/*test* sonar.cs.opencover.reportsPaths=$(Agent.BuildDirectory)/results/coverage.opencover.xml sonar.cs.vstest.reportsPaths=$(Agent.BuildDirectory)/results/coverage.opencover.xml sonar.coverage.exclusions="**Tests*.cs" # sonar.projectBaseDir="$(Build.SourcesDirectory)" - task: Bash@3 displayName: 'Tests' condition: ne('${{ parameters.buildScript }}', '') inputs: targetType: filePath filePath: ${{ parameters.buildScript }} arguments: ${{ parameters.buildScriptArgs }} workingDirectory: ${{ parameters.workingDir }} - task: DotNetCoreCLI@2 displayName: 'DotNet build' inputs: command: 'build' projects: ${{ parameters.solutionPath }} feedsToUse: 'select' versioningScheme: 'off' - script: | mkdir $(Agent.BuildDirectory)/results sed 's|/src/src|${{ parameters.workingDir }}/src|g' ${{ parameters.workingDir }}/builds/.test-results/coverage.opencover.xml > $(Agent.BuildDirectory)/results/coverage.opencover.xml sed 's|/src/src|${{ parameters.workingDir }}/src|g' ${{ parameters.workingDir }}/builds/.test-results/coverage.cobertura.xml > $(Agent.BuildDirectory)/results/coverage.cobertura.xml dotnet tool install dotnet-reportgenerator-globaltool --tool-path . --version 4.1.10 ./reportgenerator "-reports:$(Agent.BuildDirectory)/results/coverage.cobertura.xml" "-targetdir:results" "-reporttypes:Cobertura;HTML;HTMLSummary" cat $(Agent.BuildDirectory)/results/coverage.opencover.xml displayName: 'Coverage' - task: PublishTestResults@2 displayName: 'Publish Test Results **/*.trx' inputs: testResultsFormat: VSTest testResultsFiles: '**/*.trx' - task: PublishCodeCoverageResults@1 inputs: summaryFileLocation: $(Agent.BuildDirectory)/results/coverage.cobertura.xml reportDirectory: $(Agent.BuildDirectory)/results codecoverageTool: cobertura pathToSources: $(Agent.BuildDirectory) - task: SonarCloudAnalyze@1 - task: DotNetCoreCLI@2 displayName: 'DotNet pack' inputs: command: 'pack' feedsToUse: 'select' packagesToPack: ${{ parameters.projectPath }} packDirectory: '$(Build.ArtifactStagingDirectory)' versioningScheme: 'off' buildProperties: ${{ parameters.nugetBuildProperties }} - task: PublishBuildArtifacts@1 displayName: 'Publish Artifacts' inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: 'packages' publishLocation: 'Container' - task: SonarCloudPublish@1 inputs: pollingTimeoutSec: '300'