name: CI on: push: branches: [main, develop] pull_request: branches: [main] env: CARGO_TERM_COLOR: always RUST_BACKTRACE: 1 jobs: check-rust: name: Rust Check runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install Rust stable uses: dtolnay/rust-action/setup@v1 - name: Install system dependencies run: | sudo apt-get update sudo apt-get install -y libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev libssl-dev libgtksourceview-3.0-dev - name: Cache Cargo uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git target key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} restore-keys: ${{ runner.os }}-cargo- - name: Cargo check (client) run: cargo check -p eifeldc-client - name: Cargo check (bot-sdk) run: cargo check -p eifeldc-bot-sdk - name: Cargo check (server) run: cargo check -p eifeldc-server - name: Cargo clippy run: cargo clippy --workspace -- -D warnings test-rust: name: Rust Tests runs-on: ubuntu-latest needs: check-rust steps: - uses: actions/checkout@v4 - name: Install Rust stable uses: dtolnay/rust-action/setup@v1 - name: Install system dependencies run: | sudo apt-get update sudo apt-get install -y libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev libssl-dev - name: Cache Cargo uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git target key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} restore-keys: ${{ runner.os }}-cargo- - name: Run tests run: cargo test --workspace check-frontend: name: Frontend Check runs-on: ubuntu-latest defaults: run: working-directory: client/src-ui steps: - uses: actions/checkout@v4 - name: Setup Node uses: actions/setup-node@v4 with: node-version: 20 cache: npm cache-dependency-path: client/src-ui/package.json - name: Install dependencies run: npm ci - name: Svelte check run: npm run check - name: Build run: npm run build build-tauri-macos: name: Build Tauri (macOS) runs-on: macos-latest needs: [check-rust, check-frontend] steps: - uses: actions/checkout@v4 - name: Install Rust stable uses: dtolnay/rust-action/setup@v1 - name: Setup Node uses: actions/setup-node@v4 with: node-version: 20 cache: npm cache-dependency-path: client/src-ui/package.json - name: Install frontend deps run: npm ci working-directory: client/src-ui - name: Build Tauri (macOS) uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: projectPath: client tagName: v__VERSION__ releaseName: "EifelDC v__VERSION__" releaseBody: "EifelDC Release" releaseDraft: true args: --target aarch64-apple-darwin - name: Upload macOS .dmg uses: actions/upload-artifact@v4 with: name: EifelDC-macos-aarch64 path: client/src-tauri/target/release/bundle/dmg/*.dmg build-tauri-macos-intel: name: Build Tauri (macOS Intel) runs-on: macos-latest needs: [check-rust, check-frontend] steps: - uses: actions/checkout@v4 - name: Install Rust stable uses: dtolnay/rust-action/setup@v1 with: targets: x86_64-apple-darwin - name: Setup Node uses: actions/setup-node@v4 with: node-version: 20 cache: npm cache-dependency-path: client/src-ui/package.json - name: Install frontend deps run: npm ci working-directory: client/src-ui - name: Build Tauri (macOS Intel) uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: projectPath: client tagName: v__VERSION__ releaseName: "EifelDC v__VERSION__" releaseBody: "EifelDC Release" releaseDraft: true args: --target x86_64-apple-darwin - name: Upload macOS Intel .dmg uses: actions/upload-artifact@v4 with: name: EifelDC-macos-x86_64 path: client/src-tauri/target/x86_64-apple-darwin/release/bundle/dmg/*.dmg build-tauri-linux: name: Build Tauri (Linux) runs-on: ubuntu-latest needs: [check-rust, check-frontend] steps: - uses: actions/checkout@v4 - name: Install Rust stable uses: dtolnay/rust-action/setup@v1 - name: Install system dependencies run: | sudo apt-get update sudo apt-get install -y libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev libssl-dev libgtksourceview-3.0-dev - name: Setup Node uses: actions/setup-node@v4 with: node-version: 20 cache: npm cache-dependency-path: client/src-ui/package.json - name: Install frontend deps run: npm ci working-directory: client/src-ui - name: Build Tauri (Linux) uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: projectPath: client tagName: v__VERSION__ releaseName: "EifelDC v__VERSION__" releaseBody: "EifelDC Release" releaseDraft: true - name: Upload Linux .deb uses: actions/upload-artifact@v4 with: name: EifelDC-linux-deb path: client/src-tauri/target/release/bundle/deb/*.deb - name: Upload Linux .AppImage uses: actions/upload-artifact@v4 with: name: EifelDC-linux-appimage path: client/src-tauri/target/release/bundle/appimage/*.AppImage