Add Linux & macOS leg to CI, add code coverage (#264)

This commit is contained in:
Frederik Carlier
2019-03-26 00:29:12 +01:00
committed by Brendan Burns
parent a58f908685
commit 7b8a36c99e
3 changed files with 78 additions and 29 deletions

View File

@@ -1,6 +1,6 @@
jobs:
- job: build_xamarin
- job: xamarin_build
pool:
vmImage: 'VS2017-Win2016'
steps:
@@ -21,11 +21,10 @@ jobs:
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/nupkg/'
- job: Build
- job: windows_build
pool:
vmImage: 'VS2017-Win2016'
steps:
- task: DotNetCoreCLI@2
displayName: 'dotnet restore'
@@ -37,22 +36,6 @@ jobs:
inputs:
projects: '**/*.sln'
# - task: MSBuild@1
# displayName: 'Build solution **/*.sln'
# inputs:
# msbuildArchitecture: x64
# configuration: Release
# - task: VSTest@2
# displayName: 'VsTest - testAssemblies'
# inputs:
# testAssemblyVer2: |
# tests\**\*Tests*.dll
# !**\obj\**
# codeCoverageEnabled: true
- task: DotNetCoreCLI@2
displayName: 'dotnet test'
inputs:
@@ -64,15 +47,13 @@ jobs:
displayName: 'publish coverage results'
inputs:
codeCoverageTool: 'cobertura'
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.cobertura.xml'
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.cobertura.xml'
- task: alanwales.resharper-code-analysis.custom-build-task.ResharperCli@1
displayName: 'Automated code quality checks'
inputs:
SolutionOrProjectPath: 'kubernetes-client.sln'
FailBuildOnCodeIssues: false
continueOnError: true
- task: DotNetCoreCLI@2
@@ -81,15 +62,60 @@ jobs:
command: pack
packagesToPack: src/KubernetesClient/KubernetesClient.csproj
packDirectory: '$(Build.ArtifactStagingDirectory)/nupkg'
majorVersion: 1
minorVersion: 4
versioningScheme: byPrereleaseNumber
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)/nupkg'
PathtoPublish: '$(Build.ArtifactStagingDirectory)/nupkg'
- job: macos_build
pool:
vmImage: 'xcode9-macos10.13'
steps:
- script: |
brew install coreutils
which realpath
./ci.sh
displayName: 'Build & Test'
- task: PublishTestResults@1
displayName: 'Publish Test Results'
inputs:
testRunner: VSTest
testResultsFiles: '$(Build.SourcesDirectory)/tests/**/*.xunit.trx'
condition: succeededOrFailed()
- task: PublishCodeCoverageResults@1
displayName: 'publish coverage results'
inputs:
codeCoverageTool: 'cobertura'
summaryFileLocation: '$(Build.SourcesDirectory)/tests/coveragereport/Cobertura.xml'
reportDirectory: '$(Build.SourcesDirectory)/tests/coveragereport/'
condition: succeededOrFailed()
- job: ubuntu_build
pool:
vmImage: 'ubuntu-16.04'
steps:
- script: |
./install-linux.sh
displayName: 'Install .NET & set up minikube'
- script: |
./ci.sh
displayName: 'Build & Test'
- task: PublishTestResults@1
displayName: 'Publish Test Results'
inputs:
testRunner: VSTest
testResultsFiles: '$(Build.SourcesDirectory)/tests/**/*.xunit.trx'
condition: succeededOrFailed()
- task: PublishCodeCoverageResults@1
displayName: 'publish coverage results'
inputs:
codeCoverageTool: 'cobertura'
summaryFileLocation: '$(Build.SourcesDirectory)/tests/coveragereport/Cobertura.xml'
reportDirectory: '$(Build.SourcesDirectory)/tests/coveragereport/'
condition: succeededOrFailed()

24
ci.sh
View File

@@ -14,6 +14,26 @@ cd ../..
# Execute Unit tests
cd tests/KubernetesClient.Tests
dotnet restore
dotnet test
# Save the test results to a file
# Collect code coverage of the KuberetsClient assembly, but exclude the
# auto-generated models from the coverage reports.
dotnet test \
-l "trx;LogFileName=KubernetesClient.Tests.xunit.trx" \
/p:CollectCoverage=true \
/p:Include="[KubernetesClient]*" \
/p:Exclude="[KubernetesClient]k8s.Models.*" \
/p:Exclude="[KubernetesClient]k8s.Internal.*" \
/p:CoverletOutputFormat="opencover" \
/p:CoverletOutput="KubernetesClient.Tests.opencover.xml"
cd ../..
cd ..
echo Generating Code Coverage reports
export PATH="$PATH:$HOME/.dotnet/tools"
export DOTNET_ROOT=$(dirname $(realpath $(which dotnet))) # https://github.com/dotnet/cli/issues/9114#issuecomment-401670622
dotnet tool install --global dotnet-reportgenerator-globaltool --version 4.0.15
reportgenerator "-reports:**/*.opencover.xml" "-targetdir:coveragereport" "-reporttypes:HTMLInline;Cobertura"
ls coveragereport
ls coveragereport/Cobertura.xml
cd ..

View File

@@ -21,6 +21,9 @@ echo 'Creating the minikube cluster'
sudo minikube start --vm-driver=none --kubernetes-version=v1.13.4 --extra-config=apiserver.authorization-mode=RBAC
sudo chown -R $USER $HOME/.minikube
sudo chgrp -R $USER $HOME/.minikube
sudo chown -R $USER $HOME/.kube
sudo chgrp -R $USER $HOME/.kube
minikube update-context
echo 'Waiting for the cluster nodes to be ready'