From defb4f82f7f3b3569a5a0337856be746da5ee3ae Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Tue, 12 May 2026 16:05:15 +0800 Subject: [PATCH] ci(nix): smoke test daemon boot (#939) --- .github/workflows/nix.yml | 55 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index 04aba7d89..5d0c479b1 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -42,3 +42,58 @@ jobs: - 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 + + ./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" + 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 "" + echo "::endgroup::" + + echo "::group::paseo-server stdout/stderr" + cat "$WRAPPER_LOG" 2>/dev/null || echo "" + 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