name: CI on: push: branches: [ main, develop ] pull_request: branches: [ main ] env: CARGO_TERM_COLOR: always jobs: lint-and-test: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install system dependencies run: | sudo apt-get update sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '22' cache: 'npm' - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: 10 - name: Setup Rust uses: dtolnay/rust-toolchain@stable with: components: rustfmt, clippy - name: Rust cache uses: swatinem/rust-cache@v2 with: workspaces: './src-tauri -> target' - name: Install frontend dependencies run: pnpm install - name: Check Rust formatting run: cargo fmt --all --check working-directory: src-tauri - name: Lint Rust code run: cargo clippy --all-targets --all-features -- -D warnings working-directory: src-tauri - name: Run Rust tests run: cargo test --all-features working-directory: src-tauri - name: Build frontend run: pnpm build - name: Check Tauri build run: cargo check --all-targets --all-features working-directory: src-tauri security-audit: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup Rust uses: dtolnay/rust-toolchain@stable - name: Install cargo-audit run: cargo install cargo-audit - name: Run security audit run: cargo audit working-directory: src-tauri - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '22' - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: 10 - name: Install frontend dependencies run: pnpm install - name: Run npm audit run: pnpm audit --audit-level moderate