Skip to content

feat(ci): lint debug fields in tracing events #1645

feat(ci): lint debug fields in tracing events

feat(ci): lint debug fields in tracing events #1645

Workflow file for this run

name: Test
env:
CI: true
RUSTFLAGS: "-D warnings -D unreachable-pub --cfg tokio_unstable"
on:
pull_request:
push:
branches:
- "main"
workflow_dispatch:
jobs:
run_checker:
uses: ./.github/workflows/reusable-run-checker.yml
protos-compiled:
runs-on: ubuntu-22.04
needs: run_checker
if: needs.run_checker.outputs.run_tests == 'true'
steps:
- uses: actions/checkout@v3
- name: Install `buf` protobuf manager
uses: bufbuild/buf-setup-action@v1
with:
version: "1.17.0"
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@1.73.0
- uses: Swatinem/rust-cache@v2.6.1
with:
cache-provider: "buildjet"
- name: Install `just` command runner
uses: taiki-e/install-action@just
- name: Check if protobuf specs compile to commited Rust sources
run: |
just compile-protos
modified=$(git status --porcelain)
if [[ -n "$modified" ]]; then
echo "ERROR: protobuf specs are out of sync with the commited Rust sources"
echo "Recompile locally with `just compile-protos` and commit to the repository." exit 1
echo "Files that reported differences:"
echo "$modified"
exit 1
fi
compiles:
runs-on: buildjet-4vcpu-ubuntu-2204
needs: run_checker
if: needs.run_checker.outputs.run_tests == 'true'
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@1.73.0
- uses: taiki-e/install-action@v2.15.2
with:
tool: cargo-hack@0.5.29
- uses: Swatinem/rust-cache@v2.6.1
with:
cache-provider: "buildjet"
- uses: arduino/setup-protoc@v2
with:
version: "24.4"
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Check that each crate compiles individually (circumventing workspace wide dependency resolution)
run: |
cargo hack check --all-features \
# Explicitly exclude tracing_debug_field because cargo hack operates on all
# workspace members ignoring the default-members field
--exclude tracing_debug_field
lockfile:
runs-on: ubuntu-22.04
needs: run_checker
if: needs.run_checker.outputs.run_tests == 'true'
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@1.73.0
- uses: Swatinem/rust-cache@v2.6.1
with:
cache-provider: "github"
- name: Check that the lockfile is updated
run: cargo fetch --locked
rust:
runs-on: buildjet-8vcpu-ubuntu-2204
needs: run_checker
if: needs.run_checker.outputs.run_tests == 'true'
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install solc-select for smart contract tests
run: |
pip3 install solc-select
solc-select install 0.8.15
solc-select use 0.8.15
- uses: dtolnay/rust-toolchain@1.73.0
- uses: Swatinem/rust-cache@v2.6.1
with:
cache-provider: "buildjet"
- uses: arduino/setup-protoc@v2
with:
version: "24.4"
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: "nightly-60ec00296f00754bc21ed68fd05ab6b54b50e024"
- name: Build tests
run: |
cargo test --no-run --release \
--all-features \
--all-targets
- name: Run tests
timeout-minutes: 20
run: |
cargo test --release \
--all-features \
--all-targets \
-- --include-ignored
doctest:
runs-on: buildjet-8vcpu-ubuntu-2204
needs: run_checker
if: needs.run_checker.outputs.run_tests == 'true'
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@1.73.0
- uses: Swatinem/rust-cache@v2.6.1
with:
cache-provider: "buildjet"
- uses: arduino/setup-protoc@v2
with:
version: "24.4"
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: run doctests
run: cargo test --doc --all-features
clippy:
runs-on: buildjet-8vcpu-ubuntu-2204
needs: run_checker
if: needs.run_checker.outputs.run_tests == 'true' && needs.run_checker.outputs.run_lint_rust == 'true'
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@1.73.0
with:
components: clippy
- uses: Swatinem/rust-cache@v2.6.1
with:
cache-provider: "buildjet"
- uses: arduino/setup-protoc@v2
with:
version: "24.4"
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: run pedantic clippy on workspace crates
run: |
cargo clippy --all-targets --all-features \
-- --warn clippy::pedantic --deny warnings
- name: run pedantic clippy on tools/protobuf-compiler
run: |
cargo clippy --manifest-path tools/protobuf-compiler/Cargo.toml \
--all-targets --all-features \
-- --warn clippy::pedantic --deny warnings
custom-lints:
runs-on: buildjet-8vcpu-ubuntu-2204
needs: run_checker
if: needs.run_checker.outputs.run_tests == 'true' && needs.run_checker.outputs.run_lint_rust == 'true'
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@v1
with:
# This has to match `rust-toolchain` in the rust-toolchain file of the dylint lints
toolchain: nightly-2023-10-06
components: "clippy, llvm-tools-preview, rustc-dev"
- uses: Swatinem/rust-cache@v2.6.1
with:
cache-provider: "buildjet"
- name: install cargo-dylink and dylint-link
run: cargo install cargo-dylink@v2.5.0 dylint-link@v2.5.0 --locked
- name: run clippy against custom lints
run: |
cargo clippy --all-targets --all-features \
# Explicitly list all lints here
-p tracing_debug_field \
-- --warn clippy::pedantic --deny warnings
- name: run dylint clippy on workspace crates
run: cargo dylint --all --workspace --all-features -- --deny warnings
test:
if: ${{ always() && !cancelled() }}
needs: [compiles, protos-compiled, rust, doctest, clippy, lockfile]
uses: ./.github/workflows/reusable-success.yml
with:
success: ${{ !contains(needs.*.result, 'failure') }}