Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update CI Rust checks #57

Merged
merged 4 commits into from
Nov 16, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 37 additions & 67 deletions .github/workflows/rust-checks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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