diff --git a/.github/workflows/rust-checks.yaml b/.github/workflows/rust-checks.yaml index 62e7ec1f794..6c36abec0bb 100644 --- a/.github/workflows/rust-checks.yaml +++ b/.github/workflows/rust-checks.yaml @@ -10,91 +10,61 @@ concurrency: group: ${{ github.ref }}-${{ github.workflow }} cancel-in-progress: true -jobs: - rust-fmt: - runs-on: ubuntu-20.04 - steps: - - name: Checkout source code - uses: actions/checkout@v4 - - uses: actions-rust-lang/setup-rust-toolchain@v1 - with: - toolchain: nightly - components: rustfmt - - uses: actions-rust-lang/rustfmt@v1 +env: + RUST_BACKTRACE: 1 + # pin nightly to avoid constantly throwing out cache + TOOLCHAIN_LINT: nightly-2023-11-13 - clippy-lint: - runs-on: ubuntu-20.04 +jobs: + lint: + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions-rust-lang/setup-rust-toolchain@v1 + - name: Install Rust ${{ env.TOOLCHAIN_LINT }} + uses: dtolnay/rust-toolchain@stable + with: + toolchain: ${{ env.TOOLCHAIN_LINT }} + targets: wasm32-unknown-unknown + components: rustfmt, clippy + - uses: Swatinem/rust-cache@v2 with: - toolchain: stable - components: clippy + key: lint-v0 + - name: cargo fmt + run: cargo +${{ env.TOOLCHAIN_LINT }} fmt --all -- --check - name: Install deps for musl build run: | sudo apt-get update sudo apt-get install -y protobuf-compiler musl-tools clang build-essential curl llvm-dev libclang-dev linux-headers-generic libsnappy-dev liblz4-dev libzstd-dev libgflags-dev zlib1g-dev libbz2-dev - sudo ln -s /usr/bin/g++ /usr/bin/musl-g++ - - name: Clippy + sudo ln -s /usr/bin/g++ /usr/bin/musl-g++ + - name: cargo clippy uses: actions-rs-plus/clippy-check@v2 with: - toolchain: stable - args: --all-targets --all-features + toolchain: ${{ env.TOOLCHAIN_LINT }} + args: --all-targets --all-features --locked --no-deps -- --deny warnings - rust-tests: - runs-on: ubuntu-20.04 + test: + strategy: + matrix: + os: [ubuntu-latest] + toolchain: [stable] + runs-on: ${{ matrix.os }} steps: - - uses: actions-rust-lang/setup-rust-toolchain@v1 + - uses: actions/checkout@v4 + - name: Install Rust ${{ matrix.toolchain }} + uses: dtolnay/rust-toolchain@stable with: - toolchain: stable - - name: Checkout source code - uses: actions/checkout@v4 - + toolchain: ${{ matrix.toolchain }} + targets: wasm32-unknown-unknown + - uses: Swatinem/rust-cache@v2 - name: Install Protoc uses: arduino/setup-protoc@v1 with: version: "3.6.1" - - - name: Add wasm32-unknown-unknown target - run: rustup target add wasm32-unknown-unknown - - - name: Check disk space - run: df . -h - - - name: Free disk space - run: | - sudo docker rmi $(docker image ls -aq) >/dev/null 2>&1 || true - sudo rm -rf \ - /usr/share/dotnet /usr/local/lib/android /opt/ghc \ - /usr/local/share/powershell /usr/share/swift /usr/local/.ghcup \ - /usr/lib/jvm || true - sudo apt install aptitude -y >/dev/null 2>&1 - sudo aptitude purge aria2 ansible azure-cli shellcheck rpm xorriso zsync \ - esl-erlang firefox gfortran-8 gfortran-9 google-chrome-stable \ - google-cloud-sdk imagemagick \ - libmagickcore-dev libmagickwand-dev libmagic-dev ant ant-optional kubectl \ - mercurial apt-transport-https mono-complete libmysqlclient \ - unixodbc-dev yarn chrpath libssl-dev libxft-dev \ - libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev \ - snmp pollinate libpq-dev postgresql-client powershell ruby-full \ - sphinxsearch subversion mongodb-org azure-cli microsoft-edge-stable \ - -y -f >/dev/null 2>&1 - sudo aptitude purge google-cloud-sdk -f -y >/dev/null 2>&1 - sudo aptitude purge microsoft-edge-stable -f -y >/dev/null 2>&1 || true - sudo apt purge microsoft-edge-stable -f -y >/dev/null 2>&1 || true - sudo aptitude purge '~n ^mysql' -f -y >/dev/null 2>&1 - sudo aptitude purge '~n ^php' -f -y >/dev/null 2>&1 - sudo aptitude purge '~n ^dotnet' -f -y >/dev/null 2>&1 - sudo apt-get autoremove -y >/dev/null 2>&1 - sudo apt-get autoclean -y >/dev/null 2>&1 - - - name: Check disk space - run: df . -h - - - name: cargo build binary required for test + - name: build try-runtime-cli + # this is required for testing # build --release or the execution time of the test is too long run: cargo build --release -p try-runtime-cli - - name: cargo test - # build --release or the execution time of the test is too long run: cargo test --release + - name: Check disk space + run: df . -h