speed up ci #505
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: RocksDB CI | |
on: [push, pull_request] | |
jobs: | |
style: | |
name: Rustfmt | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Install rust | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rustfmt | |
- name: Run rustfmt | |
run: cargo fmt --all -- --check | |
doc-check: | |
name: Rustdoc-check | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Install rust | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rust-docs | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
cache-on-failure: true | |
- name: Run cargo rustdoc | |
run: cargo rustdoc -- -D warnings | |
doctest: # doctest are no supported in cargo nextest yet. https://github.com/nextest-rs/nextest/issues/16 | |
name: Doctests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Install rust | |
uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
cache-on-failure: true | |
- name: Run doctests | |
run: cargo test --doc | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Install rust | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
components: clippy | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
cache-on-failure: true | |
- name: Install dependencies | |
run: sudo apt-get update && sudo apt-get install -y liburing-dev pkg-config | |
- name: Set PKG_CONFIG_PATH | |
run: echo "PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig" >> $GITHUB_ENV | |
- name: Run clippy | |
run: | | |
cargo clippy --all-targets --features \ | |
"jemalloc \ | |
io-uring \ | |
valgrind \ | |
mt_static \ | |
rtti \ | |
multi-threaded-cf \ | |
malloc-usable-size \ | |
zstd-static-linking-only \ | |
serde1" \ | |
-- -D warnings | |
audit: | |
name: Security audit | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install rust | |
uses: dtolnay/rust-toolchain@stable | |
- name: use stable rust | |
run: rustup override set stable | |
- name: generate Cargo.lock | |
run: cargo generate-lockfile | |
# https://github.com/rustsec/audit-check/issues/2 | |
- uses: rustsec/audit-check@master | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
test: | |
name: ${{ matrix.build }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
build: [Linux, macOS, Windows] | |
include: | |
- build: Linux | |
os: ubuntu-latest | |
- build: macOS | |
os: macos-latest | |
- build: Windows | |
os: windows-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Install rust | |
uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
cache-on-failure: true | |
- uses: taiki-e/install-action@nextest | |
- name: Remove msys64 # Workaround to resolve link error with C:\msys64\mingw64\bin\libclang.dll | |
if: runner.os == 'Windows' | |
run: Remove-Item -LiteralPath "C:\msys64\" -Force -Recurse | |
- name: Install dependencies | |
if: runner.os == 'Windows' | |
run: choco install llvm -y | |
- name: Mark working directory as read-only | |
if: runner.os == 'Linux' | |
run: | | |
mkdir -p target | |
touch Cargo.lock | |
git submodule update --init --recursive | |
chmod -R a-w . | |
chmod -R a+w target Cargo.lock | |
- name: Run rocksdb tests | |
run: | | |
cargo nextest run --all | |
cargo nextest run --all --features multi-threaded-cf | |
- name: Mark working directory as writable | |
if: runner.os == 'Linux' | |
run: chmod -R a+w . | |
- name: Free disk space | |
run: cargo clean | |
- name: Mark working directory as read-only | |
if: runner.os == 'Linux' | |
run: | | |
mkdir -p target | |
touch Cargo.lock | |
chmod -R a-w . | |
chmod -R a+w target Cargo.lock | |
- name: Run rocksdb tests (jemalloc) | |
if: runner.os != 'Windows' | |
run: cargo nextest run --all --features jemalloc | |
- name: Mark working directory as writable | |
if: runner.os == 'Linux' | |
run: chmod -R a+w . |