Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
564e248
fix(e2e): model portable Podman service activation
senthilr-nv Aug 15, 2026
35f0e75
test(e2e): keep portable service cleanup linear
senthilr-nv Aug 15, 2026
0bbca0b
test(e2e): exercise portable shim installation
senthilr-nv Aug 15, 2026
1a7d6aa
merge: reconcile current main
senthilr-nv Aug 15, 2026
f5d2667
test(e2e): model cold portable socket activation
senthilr-nv Aug 15, 2026
3853552
test(e2e): keep portable activation handoff linear
senthilr-nv Aug 15, 2026
209cece
test(e2e): preserve portable socket authority
senthilr-nv Aug 15, 2026
96c1a3b
merge: refresh portable profile fixture base
senthilr-nv Aug 15, 2026
eeb329d
test(e2e): clean portable fixture processes
senthilr-nv Aug 15, 2026
90fbff5
test(e2e): fail closed on fixture cleanup
senthilr-nv Aug 15, 2026
d566677
merge: refresh portable profile fixture base
senthilr-nv Aug 15, 2026
3f3d2ab
ci(e2e): clean portable workflow fixture
senthilr-nv Aug 15, 2026
6c1dcfd
fix(e2e): serialize portable fixture refresh
senthilr-nv Aug 15, 2026
f164955
merge: refresh portable profile fixture base
senthilr-nv Aug 15, 2026
758679e
merge(main): reconcile portable profile tests with current main
senthilr-nv Aug 15, 2026
6de3e4d
test(e2e): bind portable fixture process identity
senthilr-nv Aug 15, 2026
bd7e9ba
merge(main): reconcile portable profile tests with current main
senthilr-nv Aug 15, 2026
ab3613a
test(e2e): keep portable fixture teardown linear
senthilr-nv Aug 15, 2026
89f5a04
merge(main): reconcile portable profile tests with current main
senthilr-nv Aug 15, 2026
4e252fb
fix(e2e): stabilize portable process identity checks
senthilr-nv Aug 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 8 additions & 42 deletions .github/workflows/portable-profile-e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ on:
- "src/lib/domain/sandbox/image-tag.ts"
- "src/lib/sandbox/**"
- "test/e2e/fixtures/availability-env.ts"
- "test/e2e/fixtures/portable-profile-systemctl-shim.sh"
- "test/e2e/fixtures/portable-profile-systemctl.ts"
- "test/e2e/live/full-e2e.test.ts"
- "test/e2e/live/launch-agent-turn.ts"
- "test/e2e/live/portable-profile-gateway-proof.ts"
Expand Down Expand Up @@ -139,50 +141,14 @@ jobs:

shim_dir="${RUNNER_TEMP}/nemoclaw-portable-bin"
install -d -m 700 "$shim_dir"
cat >"$shim_dir/systemctl" <<'SHIM'
#!/usr/bin/env bash
set -euo pipefail
runtime_dir="${XDG_RUNTIME_DIR:?}"
service_dir="${runtime_dir}/podman"
socket_path="${service_dir}/podman.sock"
pid_file="${runtime_dir}/nemoclaw-podman-service.pid"
log_file="${runtime_dir}/nemoclaw-podman-service.log"
case "$*" in
"--user set-environment "*) exit 0 ;;
"--user try-restart podman.service")
if [[ -f "$pid_file" ]]; then
kill "$(<"$pid_file")" 2>/dev/null || true
rm -f "$pid_file" "$socket_path"
fi
;;
"--user enable --now podman.socket")
install -d -m 755 "$service_dir"
nohup podman system service --time=0 "unix://$socket_path" >"$log_file" 2>&1 &
echo $! >"$pid_file"
for _ in $(seq 1 100); do
if [[ -S "$socket_path" ]]; then
chmod 660 "$socket_path"
exit 0
fi
sleep 0.1
done
cat "$log_file" >&2 || true
exit 1
;;
*)
echo "unexpected user-service command: $*" >&2
exit 64
;;
esac
SHIM
chmod 700 "$shim_dir/systemctl"
install -m 700 test/e2e/fixtures/portable-profile-systemctl-shim.sh "$shim_dir/systemctl"

export PATH="$shim_dir:$PATH"
export XDG_RUNTIME_DIR="$runtime_dir"
systemctl --user enable --now podman.socket
printf '%s\n' "$shim_dir" >>"$GITHUB_PATH"
printf 'XDG_RUNTIME_DIR=%s\n' "$runtime_dir" >>"$GITHUB_ENV"
printf 'DOCKER_HOST=unix://%s/podman/podman.sock\n' "$runtime_dir" >>"$GITHUB_ENV"
systemctl --user start podman.socket
podman --version
docker --version
docker --host "unix://$runtime_dir/podman/podman.sock" info
Expand All @@ -209,7 +175,7 @@ jobs:
shell: bash
run: |
podman system reset --force || true
pid_file="${XDG_RUNTIME_DIR}/nemoclaw-podman-service.pid"
if [[ -f "$pid_file" ]]; then
kill "$(<"$pid_file")" 2>/dev/null || true
fi
runtime_dir="${XDG_RUNTIME_DIR:-/run/user/$(id -u)}"
node --experimental-strip-types --no-warnings --input-type=module \
--eval 'import { cleanupPortableProfileSystemctlFixture } from "./test/e2e/fixtures/portable-profile-systemctl.ts"; await cleanupPortableProfileSystemctlFixture(process.argv[1]);' \
"$runtime_dir"
Loading
Loading