ci: split cargo-clippy into stable and nightly (#34566)
* ci: split cargo-clippy into stable and nightly * ci: update mergify
This commit is contained in:
parent
531d69fd10
commit
5247be17a9
|
@ -26,7 +26,7 @@ env:
|
||||||
RUSTC_WRAPPER: "sccache"
|
RUSTC_WRAPPER: "sccache"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
clippy:
|
clippy-stable:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
|
@ -44,7 +44,28 @@ jobs:
|
||||||
|
|
||||||
- shell: bash
|
- shell: bash
|
||||||
run: |
|
run: |
|
||||||
source ci/rust-version.sh all
|
source ci/rust-version.sh stable
|
||||||
rustup component add clippy --toolchain "$rust_stable"
|
rustup component add clippy --toolchain "$rust_stable"
|
||||||
|
scripts/cargo-clippy-stable.sh
|
||||||
|
|
||||||
|
clippy-nightly:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- macos-latest
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- uses: mozilla-actions/sccache-action@v0.0.3
|
||||||
|
with:
|
||||||
|
version: "v0.5.4"
|
||||||
|
|
||||||
|
- shell: bash
|
||||||
|
run: .github/scripts/cargo-clippy-before-script.sh ${{ runner.os }}
|
||||||
|
|
||||||
|
- shell: bash
|
||||||
|
run: |
|
||||||
|
source ci/rust-version.sh nightly
|
||||||
rustup component add clippy --toolchain "$rust_nightly"
|
rustup component add clippy --toolchain "$rust_nightly"
|
||||||
scripts/cargo-clippy.sh
|
scripts/cargo-clippy-nightly.sh
|
||||||
|
|
|
@ -60,7 +60,9 @@ pull_request_rules:
|
||||||
- status-success=build & deploy docs
|
- status-success=build & deploy docs
|
||||||
- or:
|
- or:
|
||||||
- -files~=(\.rs|Cargo\.toml|Cargo\.lock|\.github/scripts/cargo-clippy-before-script\.sh|\.github/workflows/cargo\.yml)$
|
- -files~=(\.rs|Cargo\.toml|Cargo\.lock|\.github/scripts/cargo-clippy-before-script\.sh|\.github/workflows/cargo\.yml)$
|
||||||
- check-success=clippy (macos-latest)
|
- and:
|
||||||
|
- check-success=clippy-stable (macos-latest)
|
||||||
|
- check-success=clippy-nightly (macos-latest)
|
||||||
- or:
|
- or:
|
||||||
- -files~=(\.rs|Cargo\.toml|Cargo\.lock|cargo-build-bpf|cargo-test-bpf|cargo-build-sbf|cargo-test-sbf|ci/downstream-projects/run-spl\.sh|\.github/workflows/downstream-project-spl\.yml)$
|
- -files~=(\.rs|Cargo\.toml|Cargo\.lock|cargo-build-bpf|cargo-test-bpf|cargo-build-sbf|cargo-test-sbf|ci/downstream-projects/run-spl\.sh|\.github/workflows/downstream-project-spl\.yml)$
|
||||||
- and:
|
- and:
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
|
||||||
|
here="$(dirname "$0")"
|
||||||
|
cargo="$(readlink -f "${here}/../cargo")"
|
||||||
|
|
||||||
|
if [[ -z $cargo ]]; then
|
||||||
|
echo >&2 "Failed to find cargo. Mac readlink doesn't support -f. Consider switching
|
||||||
|
to gnu readlink with 'brew install coreutils' and then symlink greadlink as
|
||||||
|
/usr/local/bin/readlink."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# shellcheck source=ci/rust-version.sh
|
||||||
|
source "$here/../ci/rust-version.sh" nightly
|
||||||
|
|
||||||
|
# Use nightly clippy, as frozen-abi proc-macro generates a lot of code across
|
||||||
|
# various crates in this whole monorepo (frozen-abi is enabled only under nightly
|
||||||
|
# due to the use of unstable rust feature). Likewise, frozen-abi(-macro) crates'
|
||||||
|
# unit tests are only compiled under nightly.
|
||||||
|
# Similarly, nightly is desired to run clippy over all of bench files because
|
||||||
|
# the bench itself isn't stabilized yet...
|
||||||
|
# ref: https://github.com/rust-lang/rust/issues/66287
|
||||||
|
"$here/cargo-for-all-lock-files.sh" -- \
|
||||||
|
"+${rust_nightly}" clippy \
|
||||||
|
--workspace --all-targets --features dummy-for-ci-check -- \
|
||||||
|
--deny=warnings \
|
||||||
|
--deny=clippy::default_trait_access \
|
||||||
|
--deny=clippy::arithmetic_side_effects \
|
||||||
|
--deny=clippy::manual_let_else \
|
||||||
|
--deny=clippy::used_underscore_binding \
|
||||||
|
--allow=clippy::redundant_clone
|
|
@ -0,0 +1,31 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
|
||||||
|
here="$(dirname "$0")"
|
||||||
|
cargo="$(readlink -f "${here}/../cargo")"
|
||||||
|
|
||||||
|
if [[ -z $cargo ]]; then
|
||||||
|
>&2 echo "Failed to find cargo. Mac readlink doesn't support -f. Consider switching
|
||||||
|
to gnu readlink with 'brew install coreutils' and then symlink greadlink as
|
||||||
|
/usr/local/bin/readlink."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# shellcheck source=ci/rust-version.sh
|
||||||
|
source "$here/../ci/rust-version.sh" stable
|
||||||
|
|
||||||
|
# temporarily run stable clippy as well to scan the codebase for
|
||||||
|
# `redundant_clone`s, which is disabled as nightly clippy is buggy:
|
||||||
|
# https://github.com/solana-labs/solana/issues/31834
|
||||||
|
#
|
||||||
|
# can't use --all-targets:
|
||||||
|
# error[E0554]: `#![feature]` may not be used on the stable release channel
|
||||||
|
"$here/cargo-for-all-lock-files.sh" -- \
|
||||||
|
clippy \
|
||||||
|
--workspace --tests --bins --examples --features dummy-for-ci-check -- \
|
||||||
|
--deny=warnings \
|
||||||
|
--deny=clippy::default_trait_access \
|
||||||
|
--deny=clippy::arithmetic_side_effects \
|
||||||
|
--deny=clippy::manual_let_else \
|
||||||
|
--deny=clippy::used_underscore_binding
|
|
@ -14,48 +14,9 @@
|
||||||
set -o errexit
|
set -o errexit
|
||||||
|
|
||||||
here="$(dirname "$0")"
|
here="$(dirname "$0")"
|
||||||
cargo="$(readlink -f "${here}/../cargo")"
|
|
||||||
|
|
||||||
if [[ -z $cargo ]]; then
|
# stable
|
||||||
>&2 echo "Failed to find cargo. Mac readlink doesn't support -f. Consider switching
|
"$here/cargo-clippy-stable.sh"
|
||||||
to gnu readlink with 'brew install coreutils' and then symlink greadlink as
|
|
||||||
/usr/local/bin/readlink."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# shellcheck source=ci/rust-version.sh
|
# nightly
|
||||||
source "$here/../ci/rust-version.sh"
|
"$here/cargo-clippy-nightly.sh"
|
||||||
|
|
||||||
nightly_clippy_allows=(--allow=clippy::redundant_clone)
|
|
||||||
|
|
||||||
# Use nightly clippy, as frozen-abi proc-macro generates a lot of code across
|
|
||||||
# various crates in this whole monorepo (frozen-abi is enabled only under nightly
|
|
||||||
# due to the use of unstable rust feature). Likewise, frozen-abi(-macro) crates'
|
|
||||||
# unit tests are only compiled under nightly.
|
|
||||||
# Similarly, nightly is desired to run clippy over all of bench files because
|
|
||||||
# the bench itself isn't stabilized yet...
|
|
||||||
# ref: https://github.com/rust-lang/rust/issues/66287
|
|
||||||
"$here/cargo-for-all-lock-files.sh" -- \
|
|
||||||
"+${rust_nightly}" clippy \
|
|
||||||
--workspace --all-targets --features dummy-for-ci-check -- \
|
|
||||||
--deny=warnings \
|
|
||||||
--deny=clippy::default_trait_access \
|
|
||||||
--deny=clippy::arithmetic_side_effects \
|
|
||||||
--deny=clippy::manual_let_else \
|
|
||||||
--deny=clippy::used_underscore_binding \
|
|
||||||
"${nightly_clippy_allows[@]}"
|
|
||||||
|
|
||||||
# temporarily run stable clippy as well to scan the codebase for
|
|
||||||
# `redundant_clone`s, which is disabled as nightly clippy is buggy:
|
|
||||||
# https://github.com/solana-labs/solana/issues/31834
|
|
||||||
#
|
|
||||||
# can't use --all-targets:
|
|
||||||
# error[E0554]: `#![feature]` may not be used on the stable release channel
|
|
||||||
"$here/cargo-for-all-lock-files.sh" -- \
|
|
||||||
clippy \
|
|
||||||
--workspace --tests --bins --examples --features dummy-for-ci-check -- \
|
|
||||||
--deny=warnings \
|
|
||||||
--deny=clippy::default_trait_access \
|
|
||||||
--deny=clippy::arithmetic_side_effects \
|
|
||||||
--deny=clippy::manual_let_else \
|
|
||||||
--deny=clippy::used_underscore_binding
|
|
||||||
|
|
Loading…
Reference in New Issue