ci: use official action to setup rust toolchain #2325
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: build | |
on: [push, pull_request] | |
env: | |
CARGO_TERM_COLOR: always | |
RUST_BACKTRACE: 1 | |
jobs: | |
format: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install minimal stable with clippy and rustfmt | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
with: | |
components: rustfmt | |
- name: format | |
run: cargo fmt -- --check | |
msrv: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install minimal stable and cargo msrv | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- name: Install cargo-msrv | |
shell: bash | |
run: | | |
cargo install cargo-msrv --locked | |
- name: verify-msrv | |
run: | | |
cargo msrv --path kernel/ verify --all-features | |
cargo msrv --path derive-macros/ verify --all-features | |
cargo msrv --path ffi/ verify --all-features | |
cargo msrv --path ffi-proc-macros/ verify --all-features | |
docs: | |
runs-on: ubuntu-latest | |
env: | |
RUSTDOCFLAGS: -D warnings | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install minimal stable | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- name: build docs | |
run: cargo doc | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: | |
- macOS-latest | |
- ubuntu-latest | |
- windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install minimal stable with clippy and rustfmt | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
with: | |
components: clippy | |
- name: build and lint with clippy | |
run: cargo clippy --benches --tests --all-features -- -D warnings | |
- name: lint without default features | |
run: cargo clippy --no-default-features -- -D warnings | |
test: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: | |
- macOS-latest | |
- ubuntu-latest | |
- windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install minimal stable with clippy and rustfmt | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- name: test | |
run: cargo test --workspace --verbose --all-features -- --skip read_table_version_hdfs | |
ffi_test: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: | |
- macOS-latest | |
- ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup cmake | |
uses: jwlawson/actions-setup-cmake@v2 | |
with: | |
cmake-version: "3.30.x" | |
- name: Install arrow-glib | |
run: | | |
if [ "$RUNNER_OS" == "Linux" ]; then | |
sudo apt update | |
sudo apt install -y -V ca-certificates lsb-release wget | |
wget https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb | |
wget https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb.sha512 | |
sha512sum -c apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb.sha512 || exit 1 | |
sudo apt install -y -V ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb | |
sudo apt update | |
sudo apt install -y -V libarrow-dev # For C++ | |
sudo apt install -y -V libarrow-glib-dev # For GLib (C) | |
sudo apt install -y -V valgrind # For memory leak test | |
elif [ "$RUNNER_OS" == "macOS" ]; then | |
brew install apache-arrow | |
brew install apache-arrow-glib | |
else | |
echo "$RUNNER_OS not supported" | |
exit 1 | |
fi | |
- name: Install minimal stable with clippy and rustfmt | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: default | |
toolchain: stable | |
override: true | |
- uses: Swatinem/rust-cache@v2 | |
- name: Set output on fail | |
run: echo "CTEST_OUTPUT_ON_FAILURE=1" >> "$GITHUB_ENV" | |
- name: Build kernel | |
run: | | |
pushd acceptance | |
cargo build | |
popd | |
pushd ffi | |
cargo b --features default-engine,sync-engine,test-ffi,tracing | |
popd | |
- name: build and run read-table test | |
run: | | |
pushd ffi/examples/read-table | |
mkdir build | |
pushd build | |
cmake .. | |
make | |
make test | |
- name: build and run visit-expression test | |
run: | | |
pushd ffi/examples/visit-expression | |
mkdir build | |
pushd build | |
cmake .. | |
make | |
make test | |
miri: | |
name: "Miri" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Miri | |
run: | | |
rustup toolchain install nightly --component miri | |
rustup override set nightly | |
cargo miri setup | |
- name: Test with Miri | |
run: | | |
pushd ffi | |
MIRIFLAGS=-Zmiri-disable-isolation cargo miri test --features sync-engine,default-engine | |
coverage: | |
runs-on: ubuntu-latest | |
env: | |
CARGO_TERM_COLOR: always | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install rust | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- name: Install cargo-llvm-cov | |
uses: taiki-e/install-action@cargo-llvm-cov | |
- name: Generate code coverage | |
run: cargo llvm-cov --all-features --workspace --codecov --output-path codecov.json -- --skip read_table_version_hdfs | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v4 | |
with: | |
files: codecov.json | |
fail_ci_if_error: true | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} |