Default push_desktop.sh to the jakerasp deploy checkout

The remote feed copy now happens by default (overridable with
J621_DESKTOP_FEED_HOST or --host, skippable with --local), so a release is
one command on the build machine.
This commit is contained in:
2026-09-20 20:25:37 -05:00
parent f4b534aa09
commit 70d7a4f606
2 changed files with 18 additions and 11 deletions
+8 -7
View File
@@ -150,16 +150,17 @@ prints sizes and SHA-256 sums for the release notes.
Push the desktop builds and their update metadata to the frontend's feed: Push the desktop builds and their update metadata to the frontend's feed:
```bash ```bash
./push_desktop.sh # Linux packages (deb + pacman) ./push_desktop.sh # build Linux packages + copy the feed to jakerasp
./push_desktop.sh --win # also cross-build the NSIS installer (wine) ./push_desktop.sh --win # also cross-build the NSIS installer (wine)
./push_desktop.sh --win --host jakerasp:/home/jake/servers/J621 ./push_desktop.sh --local # publish locally only, skip the remote copy
./push_desktop.sh --host other:/path/to/J621
``` ```
Artifacts land in `deploy/data/desktop/`, which the frontend nginx mounts The remote copy defaults to `jakerasp:/home/jake/servers/J621`, or
read-only and serves at `/desktop/`. `--host` also copies that directory to `$J621_DESKTOP_FEED_HOST` when set. Artifacts land in `deploy/data/desktop/`,
a remote deploy checkout — rsync when both ends have it, tar over ssh when which the frontend nginx mounts read-only and serves at `/desktop/`. The
the server does not — so the build can run here and prod only receives the remote copy uses rsync when both ends have it, tar over ssh when the server
files. The desktop app's "Check for updates…" menu item reads does not. The desktop app's "Check for updates…" menu item reads
`latest-linux.yml` / `latest.yml` from there (see `desktop/README.md`). `latest-linux.yml` / `latest.yml` from there (see `desktop/README.md`).
Backend-only composes have no frontend, so no feed. Backend-only composes have no frontend, so no feed.
+10 -4
View File
@@ -7,23 +7,29 @@
# has no rsync). electron-updater reads latest-linux.yml / latest.yml from # has no rsync). electron-updater reads latest-linux.yml / latest.yml from
# there; the feed URL comes from desktop/electron-builder.yml. # there; the feed URL comes from desktop/electron-builder.yml.
# #
# Usage: ./push_desktop.sh [--win] [--no-build] [--host user@server:/path] # Usage: ./push_desktop.sh [--win] [--no-build] [--local] [--host user@server:/path]
# --win also cross-build the Windows NSIS installer (needs wine) # --win also cross-build the Windows NSIS installer (needs wine)
# --no-build publish what is already in desktop/release/ # --no-build publish what is already in desktop/release/
# --host remote deploy checkout, e.g. jakerasp:/home/jake/servers/J621 # --local only publish locally, skip the remote copy
# --host override the remote deploy checkout
#
# The remote copy defaults to $J621_DESKTOP_FEED_HOST, or
# jakerasp:/home/jake/servers/J621 when that is not set.
set -euo pipefail set -euo pipefail
cd "$(dirname "$0")/.." cd "$(dirname "$0")/.."
DEFAULT_REMOTE="jakerasp:/home/jake/servers/J621"
BUILD=1 BUILD=1
WIN=0 WIN=0
REMOTE="" REMOTE="${J621_DESKTOP_FEED_HOST:-$DEFAULT_REMOTE}"
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
case "$1" in case "$1" in
--win) WIN=1 ;; --win) WIN=1 ;;
--no-build) BUILD=0 ;; --no-build) BUILD=0 ;;
--local) REMOTE="" ;;
--host) REMOTE="${2:?--host needs user@server:/path}"; shift ;; --host) REMOTE="${2:?--host needs user@server:/path}"; shift ;;
*) *)
echo "usage: $0 [--win] [--no-build] [--host user@server:/path]" >&2 echo "usage: $0 [--win] [--no-build] [--local] [--host user@server:/path]" >&2
exit 2 exit 2
;; ;;
esac esac