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"]