name: CI on: push: branches: [main] pull_request: env: CARGO_TERM_COLOR: always RUSTFLAGS: "-D warnings" jobs: check: name: Format & Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: components: rustfmt, clippy - uses: Swatinem/rust-cache@v2 - run: cargo fmt --check - run: cargo clippy --workspace -- -D warnings test: name: Test (${{ matrix.rust }}) runs-on: ubuntu-latest strategy: matrix: rust: [stable, "1.93.0"] steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@master with: toolchain: ${{ matrix.rust }} - uses: Swatinem/rust-cache@v2 - run: cargo test --workspace property-tests: name: Property Tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - run: cargo test --test property_tests -p symclaw-core env: PROPTEST_CASES: "2000" build: name: Build (${{ matrix.target }}) runs-on: ubuntu-latest strategy: matrix: target: - x86_64-unknown-linux-gnu - aarch64-unknown-linux-gnu steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 with: key: ${{ matrix.target }} - name: Install cross run: cargo install cross --locked - name: Build release run: cross build --release --workspace --target ${{ matrix.target }} - uses: actions/upload-artifact@v4 with: name: binaries-${{ matrix.target }} path: target/${{ matrix.target }}/release/symclaw* if-no-files-found: error audit: name: Dependency Audit runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - name: Install cargo-deny run: cargo install cargo-deny --locked - run: cargo deny check advisories licenses sources wasm: name: WASM Build runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: targets: wasm32-unknown-unknown - uses: Swatinem/rust-cache@v2 - name: Install wasm-pack run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - run: wasm-pack build crates/symclaw-wasm --target web - uses: actions/upload-artifact@v4 with: name: wasm-package path: crates/symclaw-wasm/pkg/