diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..f6660cf --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,46 @@ +on: + push: + pull_request: + +env: + CARGO_TERM_COLOR: always + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set rust version + run: | + source ci/rust-version.sh + echo "RUST_STABLE=$rust_stable" | tee -a $GITHUB_ENV + + # The toolchain action should definitely be run before the cache action + - uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + toolchain: ${{ env.RUST_STABLE }} + components: rustfmt, clippy + cache: false + # avoid the default "-D warnings" which thrashes cache + rustflags: "" + + # https://github.com/actions/cache/blob/main/examples.md#rust---cargo + - uses: actions/cache@v3 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + + - name: Run fmt+clippy + run: | + cargo fmt --all --check + cargo clippy --workspace --all-targets + + - name: Build + run: | + cargo build --all-targets