mirror of
https://github.com/getpaseo/paseo.git
synced 2026-10-31 21:52:54 +00:00
* fix(ci): replace retiring macOS 14 runners Use the supported macOS 15 ARM64 image before the November 2 retirement. Keep the Intel release runner and existing test/build/release commands unchanged. * fix(ci): use the latest macOS runner images
124 lines
3.9 KiB
YAML
124 lines
3.9 KiB
YAML
name: Nix
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: "22"
|
|
cache: "npm"
|
|
|
|
- uses: cachix/install-nix-action@v31
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
|
|
- name: Update lockfile + Nix hash if stale
|
|
run: ./scripts/update-nix.sh
|
|
|
|
- name: Build Nix package
|
|
run: nix build .#default -o result
|
|
|
|
- name: Smoke Nix daemon
|
|
run: |
|
|
set -euo pipefail
|
|
|
|
export PASEO_HOME
|
|
PASEO_HOME="$(mktemp -d)"
|
|
export PASEO_LISTEN=127.0.0.1:6767
|
|
|
|
WRAPPER_LOG="$PASEO_HOME/paseo-cli.log"
|
|
|
|
cleanup() {
|
|
if [[ -n "${DAEMON_PID:-}" ]] && kill -0 "$DAEMON_PID" 2>/dev/null; then
|
|
kill "$DAEMON_PID"
|
|
wait "$DAEMON_PID" || true
|
|
fi
|
|
rm -rf "$PASEO_HOME"
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
PASEO_WEB_UI_ENABLED=true PASEO_RELAY_ENABLED=false ./result/bin/paseo daemon run >"$WRAPPER_LOG" 2>&1 &
|
|
DAEMON_PID=$!
|
|
|
|
deadline=$((SECONDS + 30))
|
|
while (( SECONDS < deadline )); do
|
|
if STATUS_JSON="$(./result/bin/paseo daemon status --json)" \
|
|
&& jq -e '.connectedDaemon == "reachable"' <<<"$STATUS_JSON" >/dev/null; then
|
|
echo "$STATUS_JSON"
|
|
curl --fail --silent --show-error http://127.0.0.1:6767/ >"$PASEO_HOME/web-ui.html"
|
|
[[ -s "$PASEO_HOME/web-ui.html" ]]
|
|
if ! TERMINAL_JSON="$(./result/bin/paseo terminal create --cwd "$PASEO_HOME" --name nix-smoke --json)"; then
|
|
break
|
|
fi
|
|
TERMINAL_ID="$(jq -er '.id' <<<"$TERMINAL_JSON")"
|
|
./result/bin/paseo terminal send-keys "$TERMINAL_ID" 'PATH= "$PASEO_HOOK_CLI" --version && printf "nix-terminal-%s\n" ok' Enter
|
|
deadline=$((SECONDS + 15))
|
|
while (( SECONDS < deadline )); do
|
|
if ./result/bin/paseo terminal capture "$TERMINAL_ID" --json \
|
|
| jq -e '.lines | any(. == "nix-terminal-ok")' >/dev/null; then
|
|
./result/bin/paseo terminal kill "$TERMINAL_ID"
|
|
exit 0
|
|
fi
|
|
sleep 1
|
|
done
|
|
echo "Nix terminal did not execute the command."
|
|
break
|
|
fi
|
|
|
|
if ! kill -0 "$DAEMON_PID" 2>/dev/null; then
|
|
echo "Nix daemon exited before becoming reachable."
|
|
break
|
|
fi
|
|
|
|
sleep 1
|
|
done
|
|
|
|
echo "::group::daemon.log"
|
|
cat "$PASEO_HOME/daemon.log" 2>/dev/null || echo "<missing>"
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::paseo daemon run stdout/stderr"
|
|
cat "$WRAPPER_LOG" 2>/dev/null || echo "<missing>"
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::paseo daemon status"
|
|
./result/bin/paseo daemon status || true
|
|
echo "::endgroup::"
|
|
|
|
exit 1
|
|
|
|
- name: Build Nix desktop package
|
|
run: nix build .#desktop -o result-desktop
|
|
|
|
build-desktop-darwin:
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: cachix/install-nix-action@v31
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
|
|
- name: Build Nix desktop package
|
|
run: nix build .#desktop -o result-desktop
|
|
|
|
- name: Verify macOS application bundle
|
|
run: |
|
|
set -euo pipefail
|
|
|
|
app="result-desktop/Applications/Paseo.app"
|
|
test -x "$app/Contents/MacOS/Paseo"
|
|
test -L result-desktop/bin/paseo-desktop
|
|
test "$(/usr/libexec/PlistBuddy -c 'Print :CFBundleIdentifier' "$app/Contents/Info.plist")" = "sh.paseo.desktop"
|
|
find "$app" -name Info.plist -print0 | xargs -0 -n 1 plutil -lint
|