From f078e9bec0d7d19e78e80051c6bad9ea61d5246f Mon Sep 17 00:00:00 2001 From: Leo Vasanko Date: Wed, 23 Sep 2026 02:32:14 +0000 Subject: [PATCH] Simplify release workflow; node and .NET are runner prerequisites MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Drop the per-job uv-installed nodejs-wheel steps — runner hosts must have git, uv, node/npm and the .NET SDK installed system-wide. --- .gitea/workflows/release.yaml | 27 +++++---------------------- docs/development.md | 2 +- 2 files changed, 6 insertions(+), 23 deletions(-) diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index 80cd3ad..e1bd971 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -5,6 +5,7 @@ on: tags: - "v*" +# Runner host prerequisites: git, uv, node/npm, .NET SDK. jobs: gui-build: strategy: @@ -19,34 +20,16 @@ jobs: shell: bash runs-on: ${{ matrix.os }} steps: - # Plain git clone instead of actions/checkout (a JS action that would - # require node on the host). Full history so setuptools_scm sees tags. - # ${{ }} expressions are substituted by the runner, so both shells work. - # Windows uses cmd: bash resolves to WSL (refuses SYSTEM accounts) and - # powershell hits the script execution policy under SYSTEM. + # Plain git clone: full history so setuptools_scm sees tags, and both + # shells work. Windows uses cmd: bash resolves to WSL (refuses SYSTEM + # accounts) and powershell hits the script execution policy under SYSTEM. - name: Checkout shell: ${{ matrix.shell }} run: | git clone "${{ gitea.server_url }}/${{ gitea.repository }}.git" . git checkout -f "${{ gitea.sha }}" - # The sdist build compiles the Vue frontend and needs node/npm. - # Install per-job via uv so runner hosts don't need node set up. - - name: Install Node.js - if: matrix.os != 'windows' - shell: bash - run: | - uv tool install nodejs-wheel - echo "$HOME/.local/bin" >> "$GITHUB_PATH" - - - name: Install Node.js (Windows) - if: matrix.os == 'windows' - shell: cmd - run: | - uv tool install nodejs-wheel - echo %USERPROFILE%\.local\bin>>"%GITHUB_PATH%" - - - name: Build GUI app zip and dist packages + - name: Build GUI app and dist packages shell: ${{ matrix.shell }} run: uv run --extra gui scripts/guibuild.py diff --git a/docs/development.md b/docs/development.md index 7fea272..ceeff21 100644 --- a/docs/development.md +++ b/docs/development.md @@ -44,7 +44,7 @@ This launches the same pywebview-based desktop flow used by the Windows build. The helper scripts are directly executable via their `uv run` shebang (on Windows, run them with `uv run scripts/.py`): -- `./scripts/guibuild.py` builds the PyInstaller desktop app and packages it with Velopack under `build/`: per-user `Setup.exe` (Windows), `.pkg` installer (macOS), `.AppImage` (Linux), plus the update feed in `build/velopack/`. On Windows it also creates a `-win64-portable.zip` (no auto-updates). Requires the .NET SDK (>= 8 runtime) installed on the build host; `vpk` and ffmpeg are downloaded once into a persistent user cache (`~/.cache/mediahive-build`, `%LOCALAPPDATA%\mediahive-build` on Windows). +- `./scripts/guibuild.py` builds the PyInstaller desktop app and packages it with Velopack under `build/`: per-user `Setup.exe` (Windows), `.pkg` installer (macOS), `.AppImage` (Linux), plus the update feed in `build/velopack/`. On Windows it also creates a `-win64-portable.zip` (no auto-updates). Requires node/npm and the .NET SDK (>= 10 runtime) installed on the build host; `vpk` and ffmpeg are downloaded once into a persistent user cache (`~/.cache/mediahive-build`, `%LOCALAPPDATA%\mediahive-build` on Windows). - `./scripts/release.py` publishes a release to the Gitea releases page, uploading the platform artifacts and the Velopack update feed files — installed apps auto-update from the latest release. Python packaging builds the frontend automatically through the hatch build hook `scripts/fastapi-vue/buildhook.py` (see `pyproject.toml`), so wheels and sdists always ship a fresh `mediahive/frontend-build`.