feat(ci): lint debug fields in tracing events #1646
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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@2.5.0 dylint-link@2.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') }} |