Skip to content

Commit 409caca

Browse files
committed
test: temporarily allow fork for E2E validation run
1 parent 25e3a4e commit 409caca

File tree

3 files changed

+15
-52
lines changed

3 files changed

+15
-52
lines changed

.github/workflows/e2e-brev.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ concurrency:
8989

9090
jobs:
9191
e2e-brev:
92-
if: github.repository == 'NVIDIA/NemoClaw'
92+
if: github.repository == 'NVIDIA/NemoClaw' || github.repository == 'jyaunches/NemoClaw'
9393
runs-on: ubuntu-latest
9494
timeout-minutes: 90
9595
steps:

scripts/brev-setup.sh

Lines changed: 10 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -37,29 +37,16 @@ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
3737
export NEEDRESTART_MODE=a
3838
export DEBIAN_FRONTEND=noninteractive
3939

40-
# Wait for any existing apt locks (e.g. Brev's own provisioning on boot)
41-
wait_for_apt() {
42-
local max_wait=300 # 5 minutes
43-
local waited=0
44-
while fuser /var/lib/dpkg/lock-frontend /var/lib/apt/lists/lock /var/cache/apt/archives/lock >/dev/null 2>&1; do
45-
if [ $waited -ge $max_wait ]; then
46-
fail "apt lock still held after ${max_wait}s — another process is stuck"
47-
fi
48-
info "Waiting for apt lock to be released... (${waited}s)"
49-
sleep 10
50-
waited=$((waited + 10))
51-
done
52-
# Wait for any apt processes to fully exit — locks can be released
53-
# momentarily between apt operations in a multi-step provisioning sequence
54-
while pgrep -Ex "apt-get|apt|dpkg" >/dev/null 2>&1; do
55-
info "Waiting for apt/dpkg processes to finish..."
56-
sleep 5
57-
done
58-
}
40+
# Wait for cloud-init to finish — Brev instances run apt provisioning on boot.
41+
# This is the standard way to wait for all boot-time setup to complete.
42+
if command -v cloud-init >/dev/null 2>&1; then
43+
info "Waiting for cloud-init to finish..."
44+
cloud-init status --wait >/dev/null 2>&1 || true
45+
info "cloud-init done"
46+
fi
5947

6048
# --- 0. Node.js (needed for services) ---
6149
if ! command -v node >/dev/null 2>&1; then
62-
wait_for_apt
6350
info "Installing Node.js..."
6451
NODESOURCE_URL="https://deb.nodesource.com/setup_22.x"
6552
NODESOURCE_SHA256="575583bbac2fccc0b5edd0dbc03e222d9f9dc8d724da996d22754d6411104fd1"
@@ -78,32 +65,17 @@ if ! command -v node >/dev/null 2>&1; then
7865
fi
7966
sudo -E bash "$tmpdir/setup_node.sh"
8067
)
81-
# Retry apt-get install — Brev provisioning can grab the lock between operations
82-
for attempt in 1 2 3 4 5; do
83-
wait_for_apt
84-
if sudo apt-get install -y -qq nodejs 2>&1; then
85-
break
86-
fi
87-
info "apt-get install nodejs failed (attempt $attempt/5), retrying..."
88-
sleep 10
89-
done
68+
sudo apt-get install -y -qq nodejs
9069
info "Node.js $(node --version) installed"
9170
else
9271
info "Node.js already installed: $(node --version)"
9372
fi
9473

9574
# --- 1. Docker ---
9675
if ! command -v docker >/dev/null 2>&1; then
97-
wait_for_apt
9876
info "Installing Docker..."
99-
for attempt in 1 2 3 4 5; do
100-
wait_for_apt
101-
if sudo apt-get update -qq >/dev/null 2>&1 && sudo apt-get install -y -qq docker.io >/dev/null 2>&1; then
102-
break
103-
fi
104-
info "Docker install failed (attempt $attempt/5), retrying..."
105-
sleep 10
106-
done
77+
sudo apt-get update -qq >/dev/null 2>&1
78+
sudo apt-get install -y -qq docker.io >/dev/null 2>&1
10779
sudo usermod -aG docker "$(whoami)"
10880
info "Docker installed"
10981
else

test/e2e/brev-e2e.test.js

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -165,19 +165,10 @@ describe.runIf(hasRequiredVars)("Brev E2E", () => {
165165
);
166166
console.log(`[${elapsed()}] Code synced`);
167167

168-
// Wait for Brev's provisioning to finish — it runs apt-get on boot
169-
// and the locks can be released between operations, so we wait for
170-
// both locks AND processes to be gone.
171-
console.log(`[${elapsed()}] Waiting for Brev provisioning (apt) to finish...`);
172-
ssh(
173-
`for i in $(seq 1 120); do ` +
174-
`if fuser /var/lib/dpkg/lock-frontend /var/lib/apt/lists/lock /var/cache/apt/archives/lock >/dev/null 2>&1 || ` +
175-
`pgrep -Ex "apt-get|apt|dpkg" >/dev/null 2>&1; then ` +
176-
`echo "apt still running... ($i/120)"; sleep 5; ` +
177-
`else break; fi; done`,
178-
{ timeout: 660_000, stream: true },
179-
);
180-
console.log(`[${elapsed()}] apt done`);
168+
// Wait for cloud-init to finish — Brev instances run apt provisioning on boot
169+
console.log(`[${elapsed()}] Waiting for cloud-init to finish...`);
170+
ssh(`cloud-init status --wait 2>/dev/null || true`, { timeout: 600_000, stream: true });
171+
console.log(`[${elapsed()}] cloud-init done`);
181172

182173
// Bootstrap VM — stream output to CI log so we can see progress
183174
console.log(`[${elapsed()}] Running brev-setup.sh (bootstrap)...`);

0 commit comments

Comments
 (0)