diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml new file mode 100644 index 0000000000..631302d722 --- /dev/null +++ b/.github/workflows/pre-release.yml @@ -0,0 +1,104 @@ +# +# Copyright (c) 2023 ZettaScale Technology +# +# This program and the accompanying materials are made available under the +# terms of the Eclipse Public License 2.0 which is available at +# http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 +# which is available at https://www.apache.org/licenses/LICENSE-2.0. +# +# SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 +# +# Contributors: +# ZettaScale Zenoh Team, +# +name: Pre-Release + +on: + schedule: + - cron: "0 0 * * 1-5" + workflow_dispatch: + inputs: + features: + description: Build with specified features (comma separated, no space) + type: string + workflow_call: + inputs: + features: + description: Build with specified features (comma separated, no space) + type: string + +jobs: + checks: + name: Code checks + runs-on: ubuntu-latest + steps: + - name: Clone this repository + uses: actions/checkout@v4 + + - name: Install Rust toolchain + run: | + rustup show + rustup component add rustfmt clippy + + - name: Code format check + run: cargo fmt --check + env: + CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse + + - name: Clippy check + run: cargo +stable clippy --all-targets --features=${{ inputs.features }} -- --deny warnings + + - name: Clippy unstable check + run: cargo +stable clippy --all-targets -- --deny warnings + + - name: Clippy all features + run: cargo +stable clippy --all-targets --all-features -- --deny warnings + + tests: + name: Tests + needs: checks + runs-on: ubuntu-latest + steps: + - name: Clone this repository + uses: actions/checkout@v4 + + - name: Install Rust toolchain + run: rustup show + + - name: Install nextest + run: cargo install --locked cargo-nextest + env: + CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse + + - name: Run tests + run: cargo nextest run --release --features=${{ inputs.features }} --verbose + env: + CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse + ASYNC_STD_THREAD_COUNT: 4 + + - name: Run doctests + run: cargo test --release --features=${{ inputs.features }} --doc + env: + CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse + ASYNC_STD_THREAD_COUNT: 4 + + doc: + name: Doc generation + needs: checks + runs-on: ubuntu-latest + steps: + - name: Clone this repository + uses: actions/checkout@v4 + + # Use a similar command than docs.rs build: rustdoc with nightly toolchain + - name: Install Rust toolchain nightly for docs gen + run: rustup toolchain install nightly + + - name: generate doc + # NOTE: force 'unstable' feature for doc generation, as forced for docs.rs build in zenoh/Cargo.toml + run: > + cargo +nightly rustdoc --manifest-path ./zenoh/Cargo.toml --lib --features unstable -j3 + -Z rustdoc-map -Z unstable-options -Z rustdoc-scrape-examples + --config build.rustdocflags='["-Z", "unstable-options", "--emit=invocation-specific", "--cap-lints", "warn", "--disable-per-crate-search", "--extern-html-root-takes-precedence"]' + env: + RUSTDOCFLAGS: -Dwarnings