# Clippy, coverage and documentation for the Rust crates in crates/. Each runs # as an independent job on a GitHub-hosted runner, but inside the same container # image used to build the crates in the C++/Corrosion path, so the toolchain # (and therefore the lints, coverage instrumentation and the cargo cache) matches # what production builds use. # # Rust unit tests are deliberately NOT run here. They run as part of the C++ # build (reusable-build-test-config.yml), which already compiles the crates on a # self-hosted runner, so there is no need to provision a toolchain again. name: Rust on: workflow_call: secrets: CODECOV_TOKEN: description: "The Codecov token to use for uploading coverage reports." required: false defaults: run: shell: bash working-directory: crates permissions: contents: read jobs: clippy: runs-on: ubuntu-latest container: ghcr.io/xrplf/xrpld/nix-debian:sha-fe4c8ae steps: - name: Checkout repository uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Cache cargo artifacts uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1 with: workspaces: crates - name: Run clippy run: cargo clippy --workspace --all-targets --all-features --locked -- -D warnings coverage: runs-on: ubuntu-latest container: ghcr.io/xrplf/xrpld/nix-debian:sha-fe4c8ae steps: - name: Checkout repository uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Cache cargo artifacts uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1 with: workspaces: crates - name: Generate coverage report run: cargo llvm-cov nextest --workspace --all-features --locked --no-tests=warn --lcov --output-path lcov.info - name: Upload coverage report if: ${{ github.repository == 'XRPLF/rippled' }} uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 with: disable_search: true disable_telem: true fail_ci_if_error: true files: crates/lcov.info flags: rust plugins: noop token: ${{ secrets.CODECOV_TOKEN }} verbose: true doc: runs-on: ubuntu-latest container: ghcr.io/xrplf/xrpld/nix-debian:sha-fe4c8ae steps: - name: Checkout repository uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Cache cargo artifacts uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1 with: workspaces: crates - name: Build documentation env: RUSTDOCFLAGS: "-D warnings" run: cargo doc --workspace --no-deps --all-features --locked