name: Desktop CI on: push: branches: [ "main" ] pull_request: branches: [ "main" ] workflow_dispatch: env: CARGO_TERM_COLOR: always FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true jobs: test: name: Test Suite runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install dependencies (ubuntu) run: | sudo apt-get update sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf - name: Rust setup uses: dtolnay/rust-toolchain@stable - name: Rust Cache uses: swatinem/rust-cache@v2 with: workspaces: "swingmusic-desktop -> target" - name: Install Tauri CLI run: npm install -g @tauri-apps/cli - name: Install desktop dependencies run: | cd swingmusic-desktop npm install - name: Run tests run: cd swingmusic-desktop && cargo test build-linux: name: Build Linux runs-on: ubuntu-latest needs: test steps: - uses: actions/checkout@v4 - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf - name: Rust setup uses: dtolnay/rust-toolchain@stable with: targets: x86_64-unknown-linux-gnu - name: Rust Cache uses: swatinem/rust-cache@v2 with: workspaces: "swingmusic-desktop -> target" key: linux-x64 - name: Install Tauri CLI run: npm install -g @tauri-apps/cli - name: Install desktop dependencies run: | cd swingmusic-desktop npm install - name: Install webclient dependencies run: | cd swingmusic-webclient npm install - name: Build the app run: | cd swingmusic-desktop npm run tauri build -- --target x86_64-unknown-linux-gnu - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: swingmusic-desktop-linux-x64 path: | swingmusic-desktop/target/x86_64-unknown-linux-gnu/release/bundle/ !swingmusic-desktop/target/x86_64-unknown-linux-gnu/release/bundle/.*/ retention-days: 30 build-windows: name: Build Windows runs-on: windows-latest needs: test steps: - uses: actions/checkout@v4 - name: Rust setup uses: dtolnay/rust-toolchain@stable with: targets: x86_64-pc-windows-msvc - name: Rust Cache uses: swatinem/rust-cache@v2 with: workspaces: "swingmusic-desktop -> target" key: windows-x64 - name: Install Tauri CLI run: npm install -g @tauri-apps/cli - name: Install desktop dependencies run: | cd swingmusic-desktop npm install - name: Install webclient dependencies run: | cd swingmusic-webclient npm install - name: Build the app run: | cd swingmusic-desktop npm run tauri build -- --target x86_64-pc-windows-msvc - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: swingmusic-desktop-windows-x64 path: | swingmusic-desktop/target/x86_64-pc-windows-msvc/release/bundle/ !swingmusic-desktop/target/x86_64-pc-windows-msvc/release/bundle/.*/ retention-days: 30 build-macos: name: Build macOS runs-on: macos-latest needs: test steps: - uses: actions/checkout@v4 - name: Rust setup uses: dtolnay/rust-toolchain@stable with: targets: x86_64-apple-darwin - name: Rust Cache uses: swatinem/rust-cache@v2 with: workspaces: "swingmusic-desktop -> target" key: macos-x64 - name: Install Tauri CLI run: npm install -g @tauri-apps/cli - name: Install desktop dependencies run: | cd swingmusic-desktop npm install - name: Install webclient dependencies run: | cd swingmusic-webclient npm install - name: Build the app run: | cd swingmusic-desktop npm run tauri build -- --target x86_64-apple-darwin - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: swingmusic-desktop-macos-x64 path: | swingmusic-desktop/target/x86_64-apple-darwin/release/bundle/ !swingmusic-desktop/target/x86_64-apple-darwin/release/bundle/.*/ retention-days: 30