Skip to content

Commit 8b2227d

Browse files
[CI] Sum up Azp unit test code coverage (#209)
#### Description 1. Azp code coverage result is one of the six components by random. This PR summarized all six components test coverage. 2. Use one container to improve time efficiency. 3. Parameterize download artifacts. #### Motivation and Context Fix code coverage display error in azp. Build in multiple containers didn't improve time efficiency. #### How Has This Been Tested? Check code coverage result in Checks/azure pipeline
1 parent b880c48 commit 8b2227d

File tree

1 file changed

+90
-76
lines changed

1 file changed

+90
-76
lines changed

azure-pipelines.yml

+90-76
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ trigger:
77
branches:
88
include:
99
- '*'
10+
pr:
11+
branches:
12+
include:
13+
- '*'
1014

1115
pool:
1216
vmImage: 'ubuntu-20.04'
@@ -48,116 +52,126 @@ parameters:
4852
root_dir: sonic-xcvrd
4953
python2: true
5054
python3: true
55+
- name: artifactBranch
56+
type: string
57+
default: 'refs/heads/master'
5158

5259
jobs:
53-
- ${{ each project in parameters.project_list }}:
54-
- job: ${{ project.name }}
55-
container: sonic-slave-buster
56-
steps:
57-
- task: DownloadPipelineArtifact@2
58-
inputs:
59-
source: specific
60-
project: build
61-
pipeline: 1
62-
artifact: sonic-buildimage.vs
63-
runVersion: 'latestFromBranch'
64-
runBranch: 'refs/heads/master'
65-
displayName: "Download artifacts from latest sonic-buildimage build"
66-
67-
- script: |
68-
set -xe
69-
sudo apt-get -y purge libhiredis-dev libnl-3-dev libnl-route-3-dev
70-
sudo dpkg -i libnl-3-200_*.deb
71-
sudo dpkg -i libnl-genl-3-200_*.deb
72-
sudo dpkg -i libnl-route-3-200_*.deb
73-
sudo dpkg -i libnl-nf-3-200_*.deb
74-
sudo dpkg -i libhiredis0.14_*.deb
75-
sudo dpkg -i libswsscommon_1.0.0_amd64.deb
76-
sudo dpkg -i python-swsscommon_1.0.0_amd64.deb
77-
sudo dpkg -i python3-swsscommon_1.0.0_amd64.deb
78-
workingDirectory: $(Pipeline.Workspace)/target/debs/buster/
79-
displayName: 'Install Debian dependencies'
80-
81-
- script: |
82-
set -xe
83-
sudo pip2 install swsssdk-2.0.1-py2-none-any.whl
84-
sudo pip2 install sonic_py_common-1.0-py2-none-any.whl
85-
sudo pip2 install sonic_config_engine-1.0-py2-none-any.whl
86-
sudo pip2 install sonic_platform_common-1.0-py2-none-any.whl
87-
sudo pip3 install swsssdk-2.0.1-py3-none-any.whl
88-
sudo pip3 install sonic_py_common-1.0-py3-none-any.whl
89-
sudo pip3 install sonic_yang_mgmt-1.0-py3-none-any.whl
90-
sudo pip3 install sonic_yang_models-1.0-py3-none-any.whl
91-
sudo pip3 install sonic_config_engine-1.0-py3-none-any.whl
92-
sudo pip3 install sonic_platform_common-1.0-py3-none-any.whl
93-
workingDirectory: $(Pipeline.Workspace)/target/python-wheels/
94-
displayName: 'Install Python dependencies'
95-
96-
- script: |
97-
set -ex
98-
# Install .NET CORE
99-
curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
100-
sudo apt-add-repository https://packages.microsoft.com/debian/10/prod
101-
sudo apt-get update
102-
sudo apt-get install -y dotnet-sdk-5.0
103-
displayName: "Install .NET CORE"
104-
60+
- job: build_test
61+
container: sonic-slave-buster
62+
variables:
63+
sourceBranch: "$(Build.SourceBranch)"
64+
steps:
65+
- checkout: self
66+
clean: true
67+
- script: |
68+
if [[ $(Build.Reason) == "Manual" ]];then
69+
echo "##vso[task.setvariable variable=sourceBranch]${{ parameters.artifactBranch }}"
70+
fi
71+
if [[ $(Build.Reason) == "PullRequest" ]];then
72+
echo "##vso[task.setvariable variable=sourceBranch]refs/heads/$(System.PullRequest.TargetBranch)"
73+
fi
74+
displayName: Setup artifacts download branch
75+
- task: DownloadPipelineArtifact@2
76+
inputs:
77+
source: 'specific'
78+
project: 'build'
79+
pipeline: 142
80+
artifact: 'sonic-buildimage.vs'
81+
runVersion: 'latestFromBranch'
82+
runBranch: "$(sourceBranch)"
83+
displayName: "Download artifacts from latest sonic-buildimage build"
84+
85+
- script: |
86+
set -xe
87+
sudo apt-get -y purge libhiredis-dev libnl-3-dev libnl-route-3-dev
88+
sudo dpkg -i libnl-3-200_*.deb
89+
sudo dpkg -i libnl-genl-3-200_*.deb
90+
sudo dpkg -i libnl-route-3-200_*.deb
91+
sudo dpkg -i libnl-nf-3-200_*.deb
92+
sudo dpkg -i libhiredis0.14_*.deb
93+
sudo dpkg -i libswsscommon_1.0.0_amd64.deb
94+
sudo dpkg -i python-swsscommon_1.0.0_amd64.deb
95+
sudo dpkg -i python3-swsscommon_1.0.0_amd64.deb
96+
workingDirectory: $(Pipeline.Workspace)/target/debs/buster/
97+
displayName: 'Install Debian dependencies'
98+
99+
- script: |
100+
set -xe
101+
sudo pip2 install swsssdk-2.0.1-py2-none-any.whl
102+
sudo pip2 install sonic_py_common-1.0-py2-none-any.whl
103+
sudo pip2 install sonic_config_engine-1.0-py2-none-any.whl
104+
sudo pip2 install sonic_platform_common-1.0-py2-none-any.whl
105+
sudo pip3 install swsssdk-2.0.1-py3-none-any.whl
106+
sudo pip3 install sonic_py_common-1.0-py3-none-any.whl
107+
sudo pip3 install sonic_yang_mgmt-1.0-py3-none-any.whl
108+
sudo pip3 install sonic_yang_models-1.0-py3-none-any.whl
109+
sudo pip3 install sonic_config_engine-1.0-py3-none-any.whl
110+
sudo pip3 install sonic_platform_common-1.0-py3-none-any.whl
111+
workingDirectory: $(Pipeline.Workspace)/target/python-wheels/
112+
displayName: 'Install Python dependencies'
113+
114+
- script: |
115+
set -ex
116+
# Install .NET CORE
117+
curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
118+
sudo apt-add-repository https://packages.microsoft.com/debian/10/prod
119+
sudo apt-get update
120+
sudo apt-get install -y dotnet-sdk-5.0
121+
displayName: "Install .NET CORE"
122+
123+
- ${{ each project in parameters.project_list }}:
105124
# Python 2
106125
- ${{ if eq(project.python2, true) }}:
107126
- script: |
108127
python2 setup.py test
109128
workingDirectory: ${{ project.root_dir }}
110-
displayName: 'Test ${{ project.name }} (Python 2)'
129+
displayName: '${{ project.name }}(Py2) Test'
111130
112131
- task: PublishTestResults@2
113132
inputs:
114133
testResultsFiles: '$(System.DefaultWorkingDirectory)/${{ project.root_dir }}/test-results.xml'
115134
testRunTitle: ${{ project.name }} (Python 2)
116135
failTaskOnFailedTests: true
117136
condition: succeededOrFailed()
118-
displayName: 'Publish ${{ project.name }} (Python 2) test results'
119-
120-
- task: PublishCodeCoverageResults@1
121-
inputs:
122-
codeCoverageTool: Cobertura
123-
summaryFileLocation: '$(System.DefaultWorkingDirectory)/${{ project.root_dir }}/coverage.xml'
124-
reportDirectory: '$(System.DefaultWorkingDirectory)/${{ project.root_dir }}/htmlcov/'
125-
displayName: 'Publish ${{ project.name }} (Python 2) test coverage'
137+
displayName: '${{ project.name }}(Py2) Publish test results'
126138

127139
- script: |
128140
set -e
129141
python2 setup.py bdist_wheel
130142
workingDirectory: ${{ project.root_dir }}
131-
displayName: 'Build ${{ project.name }} (Python 2)'
143+
displayName: '${{ project.name }}(Py2) Build'
132144
133145
# Python 3
134146
- ${{ if eq(project.python3, true) }}:
135147
- script: |
136148
python3 setup.py test
137149
workingDirectory: ${{ project.root_dir }}
138-
displayName: 'Test ${{ project.name }} (Python 3)'
150+
displayName: '${{ project.name }}(Py3) Test'
139151
140152
- task: PublishTestResults@2
141153
inputs:
142154
testResultsFiles: '$(System.DefaultWorkingDirectory)/${{ project.root_dir }}/test-results.xml'
143155
testRunTitle: ${{ project.name }} (Python 3)
144156
failTaskOnFailedTests: true
145157
condition: succeededOrFailed()
146-
displayName: 'Publish ${{ project.name }} (Python 3) test results'
147-
148-
- task: PublishCodeCoverageResults@1
149-
inputs:
150-
codeCoverageTool: Cobertura
151-
summaryFileLocation: '$(System.DefaultWorkingDirectory)/${{ project.root_dir }}/coverage.xml'
152-
reportDirectory: '$(System.DefaultWorkingDirectory)/${{ project.root_dir }}/htmlcov/'
153-
displayName: 'Publish ${{ project.name }} (Python 3) test coverage'
158+
displayName: '${{ project.name }}(Py3) Publish test results'
154159

155160
- script: |
156161
set -e
157162
python3 setup.py bdist_wheel
158163
workingDirectory: ${{ project.root_dir }}
159-
displayName: 'Build ${{ project.name }} (Python 3)'
160-
161-
- publish: '$(System.DefaultWorkingDirectory)/${{ project.root_dir }}/dist/'
162-
artifact: ${{ project.root_dir }}
163-
displayName: "Publish ${{ project.name }} wheels"
164+
displayName: '${{ project.name }}(Py3) Build'
165+
166+
- publish: '$(System.DefaultWorkingDirectory)/${{ project.root_dir }}/dist/'
167+
artifact: ${{ project.root_dir }}
168+
displayName: "${{ project.name }}(Py3) Publish wheels"
169+
- task: reportgenerator@4
170+
inputs:
171+
reports: '$(Build.SourcesDirectory)/**/coverage.xml'
172+
targetdir: '$(Build.SourcesDirectory)/'
173+
- task: PublishCodeCoverageResults@1
174+
inputs:
175+
codeCoverageTool: 'Cobertura'
176+
summaryFileLocation: '$(Build.SourcesDirectory)/Cobertura.xml'
177+
pathToSources: $(System.DefaultWorkingDirectory)/

0 commit comments

Comments
 (0)