name: CI on: push: branches: [main] pull_request: branches: [main] workflow_dispatch: jobs: lint-and-build: runs-on: ubuntu-latest container: image: ubuntu:22.04 env: DEBIAN_FRONTEND: noninteractive steps: - uses: actions/checkout@v4 - name: Install system dependencies run: | apt-get update apt-get install -y \ build-essential curl wget pkg-config \ libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev \ libssl-dev git ca-certificates - name: Install Node.js 22 run: | curl -fsSL https://deb.nodesource.com/setup_22.x | bash - apt-get install -y nodejs - name: Install Rust toolchain run: | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable --component clippy,rustfmt echo "$HOME/.cargo/bin" >> $GITHUB_PATH - name: Install frontend dependencies run: npm ci - name: ESLint run: npm run lint - name: Rust fmt check run: | . "$HOME/.cargo/env" cd src-tauri && cargo fmt --check - name: Rust clippy run: | . "$HOME/.cargo/env" cd src-tauri && cargo clippy -- -D warnings - name: Rust tests run: | . "$HOME/.cargo/env" cd src-tauri && cargo test - name: Build Tauri app run: | . "$HOME/.cargo/env" npm run tauri build