在 Azure DevOps 中设置 Go 的代码覆盖率
Setup code coverage for Go in Azure DevOps
我不清楚我的 Golang 项目在 Azure DevOps 中的代码覆盖率是如何工作的。
我的专业是看到这样的东西:
缺失代码覆盖率
我很困惑,因为我看到了这个提示 "Setup code coverage":
但在选项卡 "Code Coverage" 中是生成的 html 报告:
任务中出现警告 "Publish code coverage results"
我在任务中收到这个警告 "Publish code coverage results"
##[warning]Ignoring coverage report directory with Html content as we are auto-generating Html content
但是当我使用 disable.coverage.autogenerate: 'false'
禁用 html 生成时,选项卡 "Code Coverage" 下不会显示任何报告,只有消息 "Code coverage report cannot be rendered as report HTML was not found. Please verify that "Report Directory" 包含 HTML 发布代码覆盖率时指定了报告。"
Azure 管道
这是我的管道:
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
variables:
GOBIN: '$(GOPATH)/bin'
GOPATH: '$(system.defaultWorkingDirectory)/gopath'
disable.coverage.autogenerate: 'false'
steps:
- script: |
echo '##vso[task.prependpath]$(GOBIN)'
echo '##vso[task.prependpath]$(GOROOT)/bin'
- task: GoTool@0
inputs:
version: '1.14.2'
- task: Go@0
inputs:
command: 'get'
arguments: '-d ./...'
workingDirectory: '$(System.DefaultWorkingDirectory)'
- script: |
go get github.com/jstemmer/go-junit-report
go get github.com/axw/gocov/gocov
go get github.com/AlekSi/gocov-xml
go test -v -coverprofile=coverage.txt -covermode count ./... 2>&1 | go-junit-report > report.xml
gocov convert coverage.txt > coverage.json
gocov-xml < coverage.json > coverage.xml
mkdir coverage
workingDirectory: '$(System.DefaultWorkingDirectory)'
displayName: 'Run unit test'
- task: PublishTestResults@2
inputs:
testRunner: JUnit
testResultsFiles: $(System.DefaultWorkingDirectory)/**/report.xml
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: Cobertura
pathToSources: '$(System.DefaultWorkingDirectory)'
summaryFileLocation: $(System.DefaultWorkingDirectory)/**/coverage.xml
reportDirectory: $(System.DefaultWorkingDirectory)/**/coverage
failIfCoverageEmpty: true
您希望在构建摘要中看到的代码覆盖率报告是旧构建管道 UI 页面。
现在 Azure devops 服务已经实现了新的 multi-stage pipelines UI 页面。代码覆盖率报告已移至 代码覆盖率 选项卡,如您现在所见。
您希望在上面的屏幕截图中看到的构建摘要页面不再可用,因为允许切换回旧构建管道的此功能切换 UI 页面已被删除。参见 here。
但是,您仍然可以在 Azure DevOps Server 2019/TFS 2018 /TFS 2017 中看到旧管道 UI 页面。
我不清楚我的 Golang 项目在 Azure DevOps 中的代码覆盖率是如何工作的。 我的专业是看到这样的东西:
缺失代码覆盖率
我很困惑,因为我看到了这个提示 "Setup code coverage":
但在选项卡 "Code Coverage" 中是生成的 html 报告:
任务中出现警告 "Publish code coverage results"
我在任务中收到这个警告 "Publish code coverage results"
##[warning]Ignoring coverage report directory with Html content as we are auto-generating Html content
但是当我使用 disable.coverage.autogenerate: 'false'
禁用 html 生成时,选项卡 "Code Coverage" 下不会显示任何报告,只有消息 "Code coverage report cannot be rendered as report HTML was not found. Please verify that "Report Directory" 包含 HTML 发布代码覆盖率时指定了报告。"
Azure 管道
这是我的管道:
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
variables:
GOBIN: '$(GOPATH)/bin'
GOPATH: '$(system.defaultWorkingDirectory)/gopath'
disable.coverage.autogenerate: 'false'
steps:
- script: |
echo '##vso[task.prependpath]$(GOBIN)'
echo '##vso[task.prependpath]$(GOROOT)/bin'
- task: GoTool@0
inputs:
version: '1.14.2'
- task: Go@0
inputs:
command: 'get'
arguments: '-d ./...'
workingDirectory: '$(System.DefaultWorkingDirectory)'
- script: |
go get github.com/jstemmer/go-junit-report
go get github.com/axw/gocov/gocov
go get github.com/AlekSi/gocov-xml
go test -v -coverprofile=coverage.txt -covermode count ./... 2>&1 | go-junit-report > report.xml
gocov convert coverage.txt > coverage.json
gocov-xml < coverage.json > coverage.xml
mkdir coverage
workingDirectory: '$(System.DefaultWorkingDirectory)'
displayName: 'Run unit test'
- task: PublishTestResults@2
inputs:
testRunner: JUnit
testResultsFiles: $(System.DefaultWorkingDirectory)/**/report.xml
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: Cobertura
pathToSources: '$(System.DefaultWorkingDirectory)'
summaryFileLocation: $(System.DefaultWorkingDirectory)/**/coverage.xml
reportDirectory: $(System.DefaultWorkingDirectory)/**/coverage
failIfCoverageEmpty: true
您希望在构建摘要中看到的代码覆盖率报告是旧构建管道 UI 页面。
现在 Azure devops 服务已经实现了新的 multi-stage pipelines UI 页面。代码覆盖率报告已移至 代码覆盖率 选项卡,如您现在所见。
您希望在上面的屏幕截图中看到的构建摘要页面不再可用,因为允许切换回旧构建管道的此功能切换 UI 页面已被删除。参见 here。
但是,您仍然可以在 Azure DevOps Server 2019/TFS 2018 /TFS 2017 中看到旧管道 UI 页面。