diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..6bbecb14 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,58 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +concurrency: + group: ci-${{ github.ref }} + cancel-in-progress: true + +jobs: + lint-and-test: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v6 + + - name: Setup Node.js + uses: actions/setup-node@v6 + with: + node-version: lts/* + cache: npm + + - name: Install Rust stable + uses: dtolnay/rust-toolchain@stable + with: + components: clippy + + - name: Rust cache + uses: swatinem/rust-cache@v2 + with: + workspaces: ./src-tauri -> target + + - name: Install Linux dependencies + run: | + sudo apt-get update + sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf + + - name: Install frontend dependencies + run: npm ci + + - name: Biome lint + run: npx biome check . + + - name: TypeScript check + run: npx tsc -b --noEmit + + - name: Frontend tests + run: npx vitest run + + - name: Rust clippy + working-directory: src-tauri + run: cargo clippy -- -D warnings + + - name: Rust tests + working-directory: src-tauri + run: cargo test