name: CI on: push: branches: [main] pull_request: branches: [main] env: CARGO_TERM_COLOR: always jobs: fmt: name: Rustfmt runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: components: rustfmt - run: cargo fmt --all --check clippy: name: Clippy runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: components: clippy - name: Clippy (workspace, all features) run: cargo clippy --workspace --all-features -- -D warnings - name: Clippy (workspace, no default features) run: cargo clippy --workspace --no-default-features -- -D warnings test-matrix: name: Test (${{ matrix.name }}) runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: # Whole-workspace sanity passes. - name: workspace default features flags: "--workspace" - name: workspace all features flags: "--workspace --all-features" # mytheclipse: execution primitives + resiliency/traffic/lifecycle/observability - name: mytheclipse / io only flags: "-p mytheclipse --no-default-features --features io" - name: mytheclipse / compute only flags: "-p mytheclipse --no-default-features --features compute" - name: mytheclipse / bg only flags: "-p mytheclipse --no-default-features --features bg" - name: mytheclipse / resiliency only flags: "-p mytheclipse --no-default-features --features resiliency" - name: mytheclipse / traffic only flags: "-p mytheclipse --no-default-features --features traffic" - name: mytheclipse / lifecycle only flags: "-p mytheclipse --no-default-features --features lifecycle" - name: mytheclipse / observability only flags: "-p mytheclipse --no-default-features --features observability" # mytheclipse-cache - name: mytheclipse-cache / default flags: "-p mytheclipse-cache" - name: mytheclipse-cache / l1-moka flags: "-p mytheclipse-cache --no-default-features --features l1-moka" - name: mytheclipse-cache / l2-redis flags: "-p mytheclipse-cache --no-default-features --features l1-memory,l2-redis" # mytheclipse-storage - name: mytheclipse-storage / default (local) flags: "-p mytheclipse-storage" - name: mytheclipse-storage / s3 flags: "-p mytheclipse-storage --no-default-features --features s3" - name: mytheclipse-storage / gcs flags: "-p mytheclipse-storage --no-default-features --features gcs" # mytheclipse-event - name: mytheclipse-event / default (mem) flags: "-p mytheclipse-event" - name: mytheclipse-event / amqp flags: "-p mytheclipse-event --no-default-features --features amqp" - name: mytheclipse-event / nats flags: "-p mytheclipse-event --no-default-features --features nats" # mytheclipse-config - name: mytheclipse-config / default flags: "-p mytheclipse-config" # mytheclipse-crypto - name: mytheclipse-crypto / default flags: "-p mytheclipse-crypto" steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - name: Build run: cargo build --all-targets ${{ matrix.flags }} - name: Test run: cargo test ${{ matrix.flags }} example: name: Run mytheclipse example runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - run: cargo run -p mytheclipse --example main --features full docs: name: Docs check runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - run: RUSTDOCFLAGS="-D warnings" cargo doc --workspace --all-features --no-deps package: name: Cargo package dry-run runs-on: ubuntu-latest strategy: fail-fast: false matrix: crate: [mytheclipse, mytheclipse-cache, mytheclipse-storage, mytheclipse-event, mytheclipse-config, mytheclipse-crypto] steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - name: Package run: cargo package -p ${{ matrix.crate }} --no-verify