name: CI on: push: branches: [main, master] pull_request: branches: [main, master] concurrency: group: ${{ gitea.workflow }}-${{ gitea.ref }} cancel-in-progress: true jobs: lint-and-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install Linux dependencies run: | sudo apt-get update sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev - uses: dtolnay/rust-toolchain@stable with: components: clippy, rustfmt - uses: Swatinem/rust-cache@v2 with: workspaces: src-tauri - uses: actions/setup-node@v4 with: node-version: 22 cache: npm - name: Install frontend dependencies run: npm ci - name: ESLint run: npm run lint - name: Rust fmt check run: cd src-tauri && cargo fmt --check - name: Rust clippy run: cd src-tauri && cargo clippy -- -D warnings - name: Rust tests run: cd src-tauri && cargo test - name: Frontend tests run: npm test build: needs: lint-and-test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install Linux dependencies run: | sudo apt-get update sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 with: workspaces: src-tauri - uses: actions/setup-node@v4 with: node-version: 22 cache: npm - name: Install frontend dependencies run: npm ci - name: Build Tauri app run: npm run tauri build - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: tusk-linux-x64 path: | src-tauri/target/release/bundle/deb/*.deb src-tauri/target/release/bundle/rpm/*.rpm src-tauri/target/release/bundle/appimage/*.AppImage if-no-files-found: ignore