name: CI
on:
push:
branches: [main]
tags: ["v*"]
pull_request:
workflow_dispatch:
jobs:
linux:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- run: cargo fmt --check
- run: cargo clippy --all-targets -- -D warnings
- run: cargo test
macos:
if: github.event_name != 'push' || startsWith(github.ref, 'refs/tags/')
runs-on: macos-latest
timeout-minutes: 25
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- run: cargo clippy --all-targets -- -D warnings
- run: cargo test --no-fail-fast
compat:
strategy:
fail-fast: false
matrix:
os: ${{ fromJSON(github.event_name == 'push' && !startsWith(github.ref, 'refs/tags/') && '["ubuntu-latest"]' || '["ubuntu-latest", "macos-latest"]') }}
runs-on: ${{ matrix.os }}
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- id: releases
run: echo "tags=$(tests/compat.sh --list)" >> "$GITHUB_OUTPUT"
- uses: actions/cache@v4
with:
path: ${{ runner.temp }}/kraal-compat
key: kraal-releases-${{ runner.os }}-${{ runner.arch }}-${{ steps.releases.outputs.tags }}
- run: tests/compat.sh ${{ steps.releases.outputs.tags }}
env:
KRAAL_COMPAT_DIR: ${{ runner.temp }}/kraal-compat