From 481419afc1cd577b454b251fbcdf9ab041c029b8 Mon Sep 17 00:00:00 2001 From: francy51 Date: Fri, 1 May 2026 14:26:50 -0400 Subject: [PATCH] ci: add CI pipeline for Rust and TypeScript tests - Gitea Actions workflow with parallel TypeScript and Rust jobs - TypeScript: bun install, lint, typecheck, test - Rust: fmt check, clippy, test with Tauri system deps - Add rust-toolchain.toml to pin Rust 1.93.0 for reproducibility Co-Authored-By: Paperclip --- .gitea/workflows/ci.yml | 78 ++++++++++++++++++++++++++ MosaicIQ/src-tauri/rust-toolchain.toml | 3 + 2 files changed, 81 insertions(+) create mode 100644 .gitea/workflows/ci.yml create mode 100644 MosaicIQ/src-tauri/rust-toolchain.toml diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 0000000..e3359c0 --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,78 @@ +name: CI + +on: + push: + branches: [main, master] + pull_request: + branches: [main, master] + +jobs: + typescript: + name: TypeScript Lint + Typecheck + Test + runs-on: ubuntu-latest + defaults: + run: + working-directory: MosaicIQ + steps: + - uses: actions/checkout@v4 + + - uses: oven-sh/setup-bun@v2 + + - name: Install dependencies + run: bun install --frozen-lockfile + + - name: Lint + run: bun run lint + + - name: Typecheck + run: bun run tsc --noEmit + + - name: Test + run: bun test + + rust: + name: Rust Format + Clippy + Test + runs-on: ubuntu-latest + defaults: + run: + working-directory: MosaicIQ/src-tauri + steps: + - uses: actions/checkout@v4 + + - name: Install Tauri system dependencies + run: | + sudo apt-get update + sudo apt-get install -y \ + libwebkit2gtk-4.1-dev \ + build-essential \ + curl \ + wget \ + file \ + libxdo-dev \ + libssl-dev \ + libayatana-appindicator3-dev \ + librsvg2-dev + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + with: + components: rustfmt, clippy + + - name: Cache Cargo artifacts + uses: actions/cache@v4 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + MosaicIQ/src-tauri/target + key: rust-${{ runner.os }}-${{ hashFiles('MosaicIQ/src-tauri/Cargo.lock') }} + restore-keys: rust-${{ runner.os }}- + + - name: Check formatting + run: cargo fmt --all -- --check + + - name: Clippy + run: cargo clippy --all-targets --all-features -- -D warnings + + - name: Run tests + run: cargo test --all-features diff --git a/MosaicIQ/src-tauri/rust-toolchain.toml b/MosaicIQ/src-tauri/rust-toolchain.toml new file mode 100644 index 0000000..0e152a8 --- /dev/null +++ b/MosaicIQ/src-tauri/rust-toolchain.toml @@ -0,0 +1,3 @@ +[toolchain] +channel = "1.93.0" +components = ["rustfmt", "clippy"]