feat: Add Persistent Cache Layer #359
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: CI | |
on: [push, pull_request] | |
jobs: | |
dependencies: | |
name: Dependencies | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 60 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
persist-credentials: false | |
- name: Install Rust | |
run: | | |
rm --recursive --force "${HOME}/.cargo" "${HOME}/.rustup" | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y | |
. "${HOME}/.cargo/env" | |
echo "RUSTC_VERSION=$(rustc --version | grep --only-matching '[0-9]\+\.[0-9]\+\.[0-9]\+' | head --lines=1)" >> $GITHUB_ENV | |
- name: Cache dependencies | |
id: cache | |
uses: actions/cache@v3 | |
# Environment variables do not seem to work, use ~ instead. | |
with: | |
path: | | |
~/.cargo | |
target | |
key: ubuntu-22.04-rustc-${{ env.RUSTC_VERSION }}-${{ hashFiles('**/Cargo.toml') }} | |
- name: Build dependencies | |
if: ${{ steps.cache.outputs.cache-hit != 'true' }} | |
# We need to manually clean Haura until there is a way to build only dependencies. | |
# https://github.com/rust-lang/cargo/issues/2644 | |
run: | | |
cd betree/tests | |
cargo build --tests | |
cargo clean --package betree-tests | |
cd .. | |
cargo build --tests | |
cargo clean --package betree_storage_stack | |
betree-integration: | |
name: Integration Tests | |
needs: dependencies | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 60 | |
env: | |
RUST_BACKTRACE: 1 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
persist-credentials: false | |
- name: Install Rust | |
run: | | |
rm --recursive --force "${HOME}/.cargo" "${HOME}/.rustup" | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y | |
. "${HOME}/.cargo/env" | |
echo "RUSTC_VERSION=$(rustc --version | grep --only-matching '[0-9]\+\.[0-9]\+\.[0-9]\+' | head --lines=1)" >> $GITHUB_ENV | |
- name: Cache dependencies | |
id: cache | |
uses: actions/cache@v3 | |
# Environment variables do not seem to work, use ~ instead. | |
with: | |
path: | | |
~/.cargo | |
target | |
key: ubuntu-22.04-rustc-${{ env.RUSTC_VERSION }}-${{ hashFiles('**/Cargo.toml') }} | |
- name: Check dependencies | |
if: ${{ steps.cache.outputs.cache-hit != 'true' }} | |
run: | | |
exit 1 | |
- name: Run integration tests | |
env: | |
HAURA_NUM_THREAD: 1 | |
QUICKCHECK_TESTS: 20 | |
run: | | |
cd betree/tests | |
./scripts/ci-test.sh | |
betree-unit: | |
name: Unit Tests | |
needs: dependencies | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 60 | |
env: | |
RUST_BACKTRACE: 1 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
persist-credentials: false | |
- name: Install Rust | |
run: | | |
rm --recursive --force "${HOME}/.cargo" "${HOME}/.rustup" | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y | |
. "${HOME}/.cargo/env" | |
echo "RUSTC_VERSION=$(rustc --version | grep --only-matching '[0-9]\+\.[0-9]\+\.[0-9]\+' | head --lines=1)" >> $GITHUB_ENV | |
- name: Cache dependencies | |
id: cache | |
uses: actions/cache@v3 | |
# Environment variables do not seem to work, use ~ instead. | |
with: | |
path: | | |
~/.cargo | |
target | |
key: ubuntu-22.04-rustc-${{ env.RUSTC_VERSION }}-${{ hashFiles('**/Cargo.toml') }} | |
- name: Check dependencies | |
if: ${{ steps.cache.outputs.cache-hit != 'true' }} | |
run: | | |
exit 1 | |
- name: Run unit tests | |
env: | |
HAURA_NUM_THREAD: 8 | |
QUICKCHECK_TESTS: 20 | |
run: | | |
cd betree | |
./tests/scripts/ci-test.sh | |
betree-msrv: | |
name: MSRV Check | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 60 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
persist-credentials: false | |
- name: Install Rust | |
run: | | |
rm --recursive --force "${HOME}/.cargo" "${HOME}/.rustup" | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y | |
. "${HOME}/.cargo/env" | |
echo "RUSTC_VERSION=$(rustc --version | grep --only-matching '[0-9]\+\.[0-9]\+\.[0-9]\+' | head --lines=1)" >> $GITHUB_ENV | |
- name: Cache MSRV | |
id: cache | |
uses: actions/cache@v3 | |
# Environment variables do not seem to work, use ~ instead. | |
with: | |
path: | | |
~/.cargo | |
key: ubuntu-22.04-rustc-${{ env.RUSTC_VERSION }}-msrv | |
- name: Prepare JULEA | |
run: | | |
sudo apt update || true | |
sudo apt --yes --no-install-recommends install pkgconf libglib2.0-dev libbson-dev | |
# FIXME use forked version | |
git clone --depth 1 --branch modules-conditional-unload https://github.com/tilpner/julea.git "${HOME}/julea" | |
- name: Install MSRV | |
run: | | |
cargo install cargo-msrv | |
- name: Verify betree | |
run: | | |
cd betree | |
cargo msrv verify | |
- name: Verify bectl | |
run: | | |
cd bectl | |
cargo msrv verify | |
- name: Verify julea-betree | |
run: | | |
cd julea-betree | |
export JULEA_INCLUDE="${HOME}/julea/include" | |
export BINDGEN_EXTRA_CLANG_ARGS="$(pkg-config --cflags glib-2.0) $(pkg-config --cflags libbson-1.0)" | |
cargo msrv verify | |
fio-haura: | |
name: fio ioengine for Haura | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 60 | |
needs: dependencies | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
persist-credentials: false | |
- name: Install Rust | |
run: | | |
rm --recursive --force "${HOME}/.cargo" "${HOME}/.rustup" | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y | |
. "${HOME}/.cargo/env" | |
echo "RUSTC_VERSION=$(rustc --version | grep --only-matching '[0-9]\+\.[0-9]\+\.[0-9]\+' | head --lines=1)" >> $GITHUB_ENV | |
- name: Cache fio | |
id: cache | |
uses: actions/cache@v3 | |
# Environment variables do not seem to work, use ~ instead. | |
with: | |
path: | | |
~/.cargo | |
key: ubuntu-22.04-rustc-${{ env.RUSTC_VERSION }}-fio-haura | |
- name: Build betree | |
run: | | |
cd betree | |
cargo build | |
- name: Build fio-engine | |
run: | | |
cd fio-haura | |
source ./env-dev.sh | |
make | |
- name: Test run | |
run: | | |
test -e ./target/debug/deps/betree_storage_stack.d | |
cd fio-haura | |
source ./env-dev.sh | |
# The fio version provided by ubuntu is too outdated, so let's just | |
# build it from the copy we already have. | |
make fio | |
export BETREE_CONFIG=$(realpath ./.ci/haura.json) | |
./fio --direct=1 --rw=write --bs=4M --ioengine=external:src/fio-engine-haura.o --numjobs=1 --name=iops-test-job --size=128M |