@@ -116,7 +116,9 @@ jobs:
116116 run : rustup update stable
117117
118118 - name : Make sure necessary tools are installed
119- run : rustup component add clippy rustfmt
119+ run : |
120+ rustup component add clippy --toolchain stable
121+ rustup component add rustfmt --toolchain nightly
120122
121123 - name : Setup rust-cache
122124 uses : Swatinem/rust-cache@v2
@@ -134,9 +136,9 @@ jobs:
134136
135137 - name : Install latest taplo
136138 uses : taiki-e/install-action@taplo
137-
139+
138140 - name : Code format check
139- run : rustfmt --check --config "unstable_features=true,imports_granularity=Crate,group_imports=StdExternalCrate,skip_children=true" $(git ls-files '*.rs')
141+ run : rustfmt +nightly --check --config "unstable_features=true,imports_granularity=Crate,group_imports=StdExternalCrate,skip_children=true" $(git ls-files '*.rs')
140142
141143 - name : Clippy zenoh no-default-features
142144 run : cargo +stable clippy -p zenoh --all-targets --no-default-features -- --deny warnings
@@ -268,7 +270,9 @@ jobs:
268270
269271 - name : Run tests with SHM + unixpipe
270272 if : ${{ matrix.os == 'ubuntu-latest' }}
271- run : cargo nextest run -F test -F shared-memory -F unstable -F internal_config -F transport_unixpipe -E 'not (test(test_default_features))' --exclude zenoh-examples --exclude zenoh-plugin-example --workspace
273+ run : |
274+ sudo prlimit --memlock=unlimited --pid=$$
275+ cargo nextest run -F test -F shared-memory -F unstable -F internal_config -F transport_unixpipe -E 'not (test(test_default_features))' --exclude zenoh-examples --exclude zenoh-plugin-example --workspace
272276
273277 - name : Rename junit test report
274278 if : ${{ matrix.os == 'ubuntu-latest' }}
@@ -329,6 +333,24 @@ jobs:
329333 config : ' .markdownlint.yaml'
330334 globs : ' **/README.md'
331335
336+ doc :
337+ name : Generate documentation
338+ runs-on : ubuntu-latest
339+ steps :
340+ - name : Clone this repository
341+ uses : actions/checkout@v4
342+
343+ # Use a similar command than docs.rs build: rustdoc with nightly toolchain
344+ - name : Install Rust toolchain nightly for docs gen
345+ run : rustup toolchain install nightly
346+
347+ - name : Run rustdoc using Nightly Rust and Zenoh unstable
348+ # NOTE: force 'unstable' feature for doc generation, as forced for docs.rs build in zenoh/Cargo.toml
349+ run : |
350+ cargo +nightly rustdoc --manifest-path ./zenoh/Cargo.toml --lib --features "shared-memory unstable" -j3 \
351+ -Z rustdoc-map -Z unstable-options -Z rustdoc-scrape-examples \
352+ --config build.rustdocflags='["--cfg", "docsrs", "-Z", "unstable-options", "--emit=invocation-specific", "--cap-lints", "warn", "--extern-html-root-takes-precedence"]'
353+
332354 coverage :
333355 name : Coverage
334356 strategy :
@@ -338,8 +360,22 @@ jobs:
338360 rust : [nightly]
339361 runs-on : ${{ matrix.os }}
340362 steps :
341- - name : Uninstall pre-installed packages
342- run : sudo apt remove dotnet* azure-cli google-cloud-cli microsoft-edge-stable google-chrome-stable firefox temurin-8-jdk powershell mysql-server-core-8.0 mono-devel -y
363+ - name : Free Disk Space (Ubuntu)
364+ uses : jlumbroso/free-disk-space@main
365+ with :
366+ tool-cache : false
367+ android : true
368+ dotnet : true
369+ haskell : true
370+ large-packages : true
371+ docker-images : true
372+ swap-storage : true
373+
374+ - name : Install build-essential (Ubuntu)
375+ if : ${{ matrix.os == 'ubuntu-latest' }}
376+ run : |
377+ sudo apt-get update
378+ sudo apt-get install -y build-essential clang libc6-dev
343379
344380 - name : Checkout sources
345381 uses : actions/checkout@v4
@@ -359,6 +395,7 @@ jobs:
359395
360396 - name : Generate code coverage
361397 run : |
398+ sudo prlimit --memlock=unlimited --pid=$$
362399 cargo +${{ matrix.rust }} llvm-cov test --features unstable --features test --features shared-memory \
363400 ${{ matrix.rust == 'nightly' && '--doctests' || '' }} --lcov --output-path lcov.info \
364401 --no-cfg-coverage --no-cfg-coverage-nightly --ignore-run-fail -- \
@@ -367,7 +404,10 @@ jobs:
367404 --skip three_node_combination \
368405 --skip three_node_combination_multicast \
369406 --skip two_node_combination \
370- --skip test_gossip
407+ --skip test_gossip \
408+ --skip metadata_alloc_concurrent \
409+ --skip metadata_link_concurrent \
410+ --skip metadata_link_failure_concurrent
371411 env :
372412 RUST_LOG : None
373413
@@ -392,7 +432,7 @@ jobs:
392432 ci :
393433 name : CI status checks
394434 runs-on : ubuntu-latest
395- needs : [check_rust, check, test, valgrind, typos, markdown_lint, coverage]
435+ needs : [check_rust, check, test, valgrind, typos, markdown_lint, doc, coverage]
396436 if : always()
397437 steps :
398438 - name : Check whether all jobs pass
0 commit comments