mirror of
https://github.com/getpaseo/paseo.git
synced 2026-07-29 12:01:31 +00:00
* fix(nix): include daemon-web-ui in nix package * fix(nix): verify web UI without packaging website sources * test(nix): cover bundled web UI inputs --------- Co-authored-by: Mohamed Boudra <boudra.moha@gmail.com>
107 lines
2.9 KiB
YAML
107 lines
2.9 KiB
YAML
name: Nix
|
|
|
|
on:
|
|
pull_request:
|
|
branches: [main]
|
|
paths:
|
|
- "nix/**"
|
|
- "flake.nix"
|
|
- "flake.lock"
|
|
- "package.json"
|
|
- "package-lock.json"
|
|
- "packages/app/**"
|
|
- "packages/expo-two-way-audio/**"
|
|
- "packages/highlight/**"
|
|
- "packages/protocol/**"
|
|
- "packages/client/**"
|
|
- "packages/server/**"
|
|
- "packages/relay/**"
|
|
- "packages/cli/**"
|
|
- "scripts/build-daemon-web-ui.mjs"
|
|
- "scripts/update-nix.sh"
|
|
- "scripts/fix-lockfile.mjs"
|
|
- ".github/workflows/nix.yml"
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
|
|
- 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-server-wrapper.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 ./result/bin/paseo-server --no-relay >"$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" ]]
|
|
exit 0
|
|
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-server 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
|