Skip to content

Commit 3c99da6

Browse files
committed
ci: generate coverage for both UT and smoke tests
Introduce a new nydus-build-debug job to build debug binaries with coverage enabled, upload profraw files for build, smoke, unit test, and takeover stages. Add a nydus-coverage job to aggregate coverage data from various test jobs, generate combined codecov report, and upload coverage artifacts. Update existing jobs to enable debug mode and upload corresponding coverage files, improving code coverage tracking and analysis in CI workflows. Signed-off-by: Peng Tao <bergwolf@hyper.sh>
1 parent 80311f7 commit 3c99da6

File tree

1 file changed

+107
-17
lines changed

1 file changed

+107
-17
lines changed

.github/workflows/smoke.yml

Lines changed: 107 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,44 @@ jobs:
6161
working-directory: ${{ matrix.path }}
6262
args: --timeout=10m --verbose
6363

64+
nydus-build-debug:
65+
runs-on: ubuntu-latest
66+
steps:
67+
- name: Checkout
68+
uses: actions/checkout@v6
69+
- name: Rust Cache
70+
uses: Swatinem/rust-cache@v2
71+
with:
72+
cache-on-failure: true
73+
shared-key: ${{ runner.os }}-cargo-amd64-debug
74+
save-if: ${{ github.ref == 'refs/heads/master' }}
75+
- uses: dsherret/rust-toolchain-file@v1
76+
- name: Read Rust toolchain version
77+
id: set_toolchain_version
78+
run: |
79+
RUST_TOOLCHAIN_VERSION=$(grep -oP '(?<=channel = ")[^"]*' rust-toolchain.toml)
80+
echo "Rust toolchain version: $RUST_TOOLCHAIN_VERSION"
81+
echo "rust-version=$RUST_TOOLCHAIN_VERSION" >> $GITHUB_OUTPUT
82+
shell: bash
83+
- name: Build Nydus Debug Version
84+
run: |
85+
make -e ENABLE_DEBUG=1 build
86+
mv target/$RUST_TARGET/debug/nydusd .
87+
mv target/$RUST_TARGET/debug/nydus-image .
88+
- name: Upload Nydus Binaries
89+
uses: actions/upload-artifact@v6
90+
with:
91+
name: nydus-artifact-debug
92+
path: |
93+
nydus-image
94+
nydusd
95+
- name: Upload Nydus Build profraw
96+
uses: actions/upload-artifact@v6
97+
with:
98+
name: nydus-profraw-build
99+
path: |
100+
coverage/*.profraw
101+
64102
nydus-build:
65103
runs-on: ubuntu-latest
66104
strategy:
@@ -122,7 +160,7 @@ jobs:
122160
if: matrix.arch == 'amd64'
123161
uses: actions/upload-artifact@v6
124162
with:
125-
name: nydus-artifact
163+
name: nydus-artifact-release
126164
path: |
127165
nydus-image
128166
nydusd
@@ -153,7 +191,7 @@ jobs:
153191
154192
nydus-integration-test:
155193
runs-on: ubuntu-latest
156-
needs: [contrib-build, nydus-build]
194+
needs: [contrib-build, nydus-build-debug]
157195
steps:
158196
- name: Checkout
159197
uses: actions/checkout@v6
@@ -163,9 +201,8 @@ jobs:
163201
- name: Download Nydus
164202
uses: actions/download-artifact@v7
165203
with:
166-
name: nydus-artifact
167-
path: |
168-
target/release
204+
name: nydus-artifact-debug
205+
path: target/debug
169206
- name: Download Nydusify
170207
uses: actions/download-artifact@v7
171208
with:
@@ -228,7 +265,13 @@ jobs:
228265
done
229266
230267
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sudo sh -s -- -b /usr/bin v2.1.6
231-
sudo -E make smoke-only
268+
sudo -E ENABLE_DEBUG=1 make smoke-only
269+
- name: Upload Nydus Smoke profraw
270+
uses: actions/upload-artifact@v6
271+
with:
272+
name: nydus-profraw-smoke
273+
path: |
274+
coverage/*.profraw
232275
233276
nydus-unit-test:
234277
runs-on: ubuntu-latest
@@ -248,13 +291,13 @@ jobs:
248291
- name: Unit Test
249292
run: |
250293
sudo -E ENABLE_DEBUG=1 "PATH=$PATH" make ut-nextest
251-
sudo -E "PATH=$PATH" make generate-codecov
252-
- name: Upload nydus coverage file
294+
#sudo -E "PATH=$PATH" make generate-codecov
295+
- name: Upload Nydus UT profraw
253296
uses: actions/upload-artifact@v6
254297
with:
255-
name: nydus-test-coverage-artifact
298+
name: nydus-profraw-ut
256299
path: |
257-
coverage/coverage.info
300+
coverage/*.profraw
258301
259302
contrib-unit-test:
260303
runs-on: ubuntu-latest
@@ -278,7 +321,7 @@ jobs:
278321
279322
upload-coverage-to-codecov:
280323
runs-on: ubuntu-latest
281-
needs: [contrib-unit-test, nydus-unit-test]
324+
needs: [contrib-unit-test, nydus-coverage]
282325
steps:
283326
- uses: actions/checkout@v6
284327
- name: Download nydus coverage file
@@ -307,7 +350,7 @@ jobs:
307350

308351
performance-test:
309352
runs-on: ubuntu-latest
310-
needs: [contrib-build, nydus-build]
353+
needs: [contrib-build, nydus-build-debug]
311354
strategy:
312355
matrix:
313356
include:
@@ -320,7 +363,7 @@ jobs:
320363
- name: Download Nydus
321364
uses: actions/download-artifact@v7
322365
with:
323-
name: nydus-artifact
366+
name: nydus-artifact-release
324367
path: target/release
325368
- name: Download Nydusify
326369
uses: actions/download-artifact@v7
@@ -337,15 +380,15 @@ jobs:
337380
338381
takeover-test:
339382
runs-on: ubuntu-latest
340-
needs: [contrib-build, nydus-build]
383+
needs: [contrib-build, nydus-build-debug]
341384
steps:
342385
- name: Checkout
343386
uses: actions/checkout@v6
344387
- name: Download Nydus
345388
uses: actions/download-artifact@v7
346389
with:
347-
name: nydus-artifact
348-
path: target/release
390+
name: nydus-artifact-debug
391+
path: target/debug
349392
- name: Download Nydusify
350393
uses: actions/download-artifact@v7
351394
with:
@@ -357,4 +400,51 @@ jobs:
357400
- name: Takeover Test
358401
run: |
359402
export NEW_NYDUSD_BINARY_PATH=target/release/nydusd
360-
sudo -E make smoke-takeover
403+
sudo -E ENABLE_DEBUG=1 make smoke-takeover
404+
- name: Upload Nydus Takeover
405+
uses: actions/upload-artifact@v6
406+
with:
407+
name: nydus-profraw-takeover
408+
path: |
409+
coverage/*.profraw
410+
411+
nydus-coverage:
412+
runs-on: ubuntu-latest
413+
needs: [takeover-test,nydus-integration-test,nydus-unit-test]
414+
steps:
415+
- name: Checkout
416+
uses: actions/checkout@v6
417+
- name: Download Nydus
418+
uses: actions/download-artifact@v7
419+
with:
420+
name: nydus-artifact-debug
421+
path: target/debug
422+
- name: Download Nydus Build profraw
423+
uses: actions/download-artifact@v7
424+
with:
425+
name: nydus-profraw-build
426+
path: coverage/
427+
- name: Download Nydus Smoke profraw
428+
uses: actions/download-artifact@v7
429+
with:
430+
name: nydus-profraw-smoke
431+
path: coverage/
432+
- name: Download Nydus UT profraw
433+
uses: actions/download-artifact@v7
434+
with:
435+
name: nydus-profraw-ut
436+
path: coverage/
437+
- name: Download Nydus Takeover profraw
438+
uses: actions/download-artifact@v7
439+
with:
440+
name: nydus-profraw-takeover
441+
path: coverage/
442+
- name: Generate Nydus Codecov
443+
run: |
444+
ls coverage | wc -l
445+
sudo -E "PATH=$PATH" make generate-codecov
446+
- name: Upload Nydus Codecov
447+
uses: actions/upload-artifact@v6
448+
with:
449+
name: nydus-test-coverage-artifact
450+
path: coverage/coverage.info

0 commit comments

Comments
 (0)