fix: hide console window for sidecar processes on Windows #28
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | |
| on: | |
| push: | |
| tags: | |
| - 'v*' | |
| workflow_dispatch: | |
| inputs: | |
| tag: | |
| description: 'Release tag (e.g. v0.2.0) β must match an existing git tag' | |
| required: true | |
| permissions: | |
| contents: write | |
| env: | |
| # Opt into Node.js 24 for all actions (avoids Node 20 deprecation warnings) | |
| FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true | |
| jobs: | |
| build: | |
| name: Build Β· ${{ matrix.target }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: windows-latest | |
| target: x86_64-pc-windows-msvc | |
| uv-ext: '.exe' | |
| - os: macos-14 # Apple Silicon | |
| target: aarch64-apple-darwin | |
| uv-ext: '' | |
| - os: ubuntu-22.04 | |
| target: x86_64-unknown-linux-gnu | |
| uv-ext: '' | |
| # Skip RPM β xz-compressing a large binary takes hours on CI. | |
| # AppImage + deb cover the vast majority of Linux users. | |
| extra-args: '--bundles deb,appimage' | |
| steps: | |
| # ββ Checkout βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| # ββ uv binary ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # The sidecar Python source (src-tauri/sidecar-src/) and the pre-exported | |
| # ONNX model are committed directly to the repo β no copy or export step | |
| # needed. All CI has to do is place the uv binary that lib.rs will call | |
| # at first launch to sync the venv. | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v3 | |
| # Seed preinstalled plugins from the public plugins registry into | |
| # src-tauri/sidecar-src/ragdoll_plugins/ so lib.rs can copy them to | |
| # AppData on the user's first launch. | |
| - name: Fetch preinstalled plugins | |
| shell: bash | |
| run: | | |
| git clone --depth 1 https://github.com/itz-mune/RAGdoll-plugins.git _plugins_tmp | |
| mkdir -p src-tauri/sidecar-src/ragdoll_plugins | |
| SRC="_plugins_tmp/plugins" | |
| if [ -d "$SRC" ]; then | |
| cp -r "$SRC/." src-tauri/sidecar-src/ragdoll_plugins/ | |
| echo "Seeded $(ls src-tauri/sidecar-src/ragdoll_plugins | wc -l | tr -d ' ') plugin(s)" | |
| else | |
| echo "No plugins/ dir found β skipping seed" | |
| fi | |
| rm -rf _plugins_tmp | |
| # Place the CI uv binary into src-tauri/binaries/ using Tauri's | |
| # externalBin naming convention: uv-{triple}(.exe). | |
| # At install time Tauri strips the triple β uv / uv.exe beside the exe. | |
| - name: Place uv binary for Tauri | |
| shell: bash | |
| run: | | |
| mkdir -p src-tauri/binaries | |
| UV_PATH="$(which uv)" | |
| DST="src-tauri/binaries/uv-${{ matrix.target }}${{ matrix.uv-ext }}" | |
| cp "$UV_PATH" "$DST" | |
| echo "Placed uv β $DST" | |
| # ββ Node / pnpm ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| - name: Set up Node.js 24 | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 24 | |
| - name: Set up pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 9 | |
| - name: Install frontend dependencies | |
| run: pnpm install --frozen-lockfile | |
| # ββ Rust βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| - name: Set up Rust (stable) | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: ${{ matrix.target }} | |
| - name: Cache Rust build artefacts | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: src-tauri -> target | |
| # ββ Linux system libraries ββββββββββββββββββββββββββββββββββββββββββββββββ | |
| - name: Install Linux system dependencies | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| libwebkit2gtk-4.1-dev \ | |
| libappindicator3-dev \ | |
| librsvg2-dev \ | |
| patchelf \ | |
| libssl-dev \ | |
| rpm \ | |
| libglib2.0-dev \ | |
| libpango1.0-dev \ | |
| libcairo2-dev \ | |
| libgdk-pixbuf2.0-dev \ | |
| libffi-dev \ | |
| shared-mime-info \ | |
| libgtk-3-dev | |
| # ββ Pre-build sanity check βββββββββββββββββββββββββββββββββββββββββββββββ | |
| - name: Verify sidecar-src exists and is populated | |
| shell: bash | |
| run: | | |
| echo "=== git commit ===" | |
| git rev-parse HEAD | |
| echo "=== src-tauri/sidecar-src top-level ===" | |
| ls -la src-tauri/sidecar-src/ || echo "MISSING: src-tauri/sidecar-src/" | |
| echo "=== file count ===" | |
| find src-tauri/sidecar-src -type f | wc -l | |
| echo "=== uv binary ===" | |
| ls -la src-tauri/binaries/ || echo "MISSING: src-tauri/binaries/" | |
| # ββ Build & publish βββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| - name: Build and publish Tauri app | |
| uses: tauri-apps/tauri-action@v0 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} | |
| TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} | |
| with: | |
| tagName: ${{ github.ref_name }} | |
| releaseName: 'RAGdoll ${{ github.ref_name }}' | |
| releaseBody: | | |
| See the [**What's New**](https://github.com/itz-mune/RAGdoll#-whats-new--v020) section in the README for full release notes. | |
| > **First-time install?** Download the installer for your OS below. | |
| > **Existing install?** RAGdoll will prompt you to update automatically. | |
| releaseDraft: true | |
| prerelease: false | |
| args: --target ${{ matrix.target }} ${{ matrix.extra-args }} | |
| includeUpdaterJson: true | |
| updaterJsonPreferNsis: true |