-
Notifications
You must be signed in to change notification settings - Fork 3.1k
test(e2e): add Brev launchable install-flow smoke test #2677
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
04edd8d
16490de
1188018
ceff955
becf6b3
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -18,6 +18,7 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # credential-migration-e2e Validates legacy ~/.nemoclaw/credentials.json migration to the | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # OpenShell gateway, secure zero-fill on unlink, allowlist filter | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # on non-credential env keys, and symlink-safe deletion. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # launchable-smoke-e2e Community install path (brev-launchable-ci-cpu.sh) on ubuntu-latest. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # gpu-e2e Local Ollama inference on an NVKS ephemeral GPU runner. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # gpu-double-onboard-e2e Ollama proxy token consistency after re-onboard (#2553). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # notify-on-failure Auto-creates a GitHub issue when any E2E job fails. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -53,7 +54,7 @@ on: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| upgrade-stale-sandbox-e2e, rebuild-hermes-e2e, double-onboard-e2e, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| onboard-repair-e2e, onboard-resume-e2e, runtime-overrides-e2e, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| credential-sanitization-e2e, telegram-injection-e2e, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| overlayfs-autofix-e2e, gpu-e2e, gpu-double-onboard-e2e | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| overlayfs-autofix-e2e, launchable-smoke-e2e, gpu-e2e, gpu-double-onboard-e2e | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| required: false | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| type: string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| default: "" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -1278,6 +1279,59 @@ jobs: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /tmp/nemoclaw-e2e-onboard-negative.log | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if-no-files-found: ignore | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # ── Launchable Install-Flow Smoke Test ───────────────────────── | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Validates the community install path (brev-launchable-ci-cpu.sh) end-to-end. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # The launchable script has ZERO Brev dependencies — it's a generic Ubuntu | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # bootstrap script that runs on ubuntu-latest. Catches regressions like the | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Apr 20-25 Brev outage (#2472, #2482) and container reachability fallback (#2425). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # See: issue #2599 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| launchable-smoke-e2e: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if: >- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| github.repository == 'NVIDIA/NemoClaw' && | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| (github.event_name != 'workflow_dispatch' || | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| inputs.jobs == '' || | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| contains(format(',{0},', inputs.jobs), ',launchable-smoke-e2e,')) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| runs-on: ubuntu-latest | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+1288
to
+1294
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add Line 1288 introduces a new runnable job, but 🔧 Proposed fix report-to-pr:
runs-on: ubuntu-latest
needs:
[
cloud-e2e,
cloud-onboard-e2e,
cloud-inference-e2e,
skill-agent-e2e,
docs-validation-e2e,
messaging-providers-e2e,
token-rotation-e2e,
sandbox-survival-e2e,
hermes-e2e,
skip-permissions-e2e,
sandbox-operations-e2e,
inference-routing-e2e,
network-policy-e2e,
deployment-services-e2e,
diagnostics-e2e,
snapshot-commands-e2e,
shields-config-e2e,
rebuild-openclaw-e2e,
upgrade-stale-sandbox-e2e,
rebuild-hermes-e2e,
overlayfs-autofix-e2e,
+ launchable-smoke-e2e,
gpu-e2e,
]📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| timeout-minutes: 30 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| steps: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Checkout | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| uses: actions/checkout@v6 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Run launchable install-flow smoke test | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| env: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| NEMOCLAW_NON_INTERACTIVE: "1" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| NEMOCLAW_SANDBOX_NAME: "e2e-launchable" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| NEMOCLAW_RECREATE_SANDBOX: "1" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| SKIP_DOCKER_PULL: "1" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GITHUB_TOKEN: ${{ github.token }} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| run: bash test/e2e/test-launchable-smoke.sh | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Upload install log on failure | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if: failure() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| uses: actions/upload-artifact@v4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| with: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| name: launchable-smoke-install-log | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| path: /tmp/nemoclaw-launchable-install.log | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if-no-files-found: ignore | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Upload onboard log on failure | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if: failure() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| uses: actions/upload-artifact@v4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| with: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| name: launchable-smoke-onboard-log | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| path: /tmp/nemoclaw-launchable-onboard.log | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if-no-files-found: ignore | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Upload test log on failure | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if: failure() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| uses: actions/upload-artifact@v4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| with: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| name: launchable-smoke-test-log | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| path: /tmp/nemoclaw-launchable-test.log | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if-no-files-found: ignore | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+1288
to
+1334
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
cfg="$(fd -a '^\.coderabbit\.yaml$' | head -n1 || true)"
if [ -z "$cfg" ]; then
echo "ERROR: .coderabbit.yaml not found"
exit 1
fi
echo "== Checking .coderabbit.yaml for launchable smoke coverage =="
rg -n -C3 'path_instructions|launchable-smoke-e2e|test/e2e/test-launchable-smoke.sh|brev-launchable-ci-cpu.sh' "$cfg"
echo "== Checking coverage validator test references =="
testfile="$(fd -a '^validate-e2e-coverage\.test\.ts$' | head -n1 || true)"
if [ -n "$testfile" ]; then
rg -n -C3 'launchable-smoke-e2e|test-launchable-smoke' "$testfile"
else
echo "WARN: validate-e2e-coverage.test.ts not found"
fiRepository: NVIDIA/NemoClaw Length of output: 319 🏁 Script executed: #!/bin/bash
set -euo pipefail
# Find .coderabbit.yaml in root with proper hidden file handling
cfg="$(find . -maxdepth 1 -name '.coderabbit.yaml' | head -n1 || true)"
if [ -z "$cfg" ]; then
echo "ERROR: .coderabbit.yaml not found in repository root"
ls -la . | head -20
exit 1
fi
echo "== .coderabbit.yaml found at: $cfg =="
echo ""
echo "== Searching for launchable-smoke-e2e coverage in .coderabbit.yaml =="
rg 'launchable-smoke-e2e' "$cfg" || echo "WARN: launchable-smoke-e2e not found in .coderabbit.yaml"
echo ""
echo "== Checking full path_instructions section for E2E jobs =="
rg -A 200 'path_instructions:' "$cfg" | head -100
echo ""
echo "== Checking if test script exists =="
test_script="test/e2e/test-launchable-smoke.sh"
if [ -f "$test_script" ]; then
echo "✓ Test script exists: $test_script"
else
echo "✗ Test script NOT found: $test_script"
fi
echo ""
echo "== Checking validate-e2e-coverage.test.ts =="
testfile="$(find . -name 'validate-e2e-coverage.test.ts' | head -n1 || true)"
if [ -n "$testfile" ]; then
echo "Found: $testfile"
rg 'launchable-smoke' "$testfile" || echo "WARN: launchable-smoke reference not found in test file"
else
echo "WARN: validate-e2e-coverage.test.ts not found"
fiRepository: NVIDIA/NemoClaw Length of output: 5756 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "== Full validate-e2e-coverage.test.ts content =="
cat test/validate-e2e-coverage.test.ts
echo ""
echo "== Search for other E2E job entries in .coderabbit.yaml =="
rg -n 'e2e|smoke|test/' .coderabbit.yaml | head -50
echo ""
echo "== Check for notify-on-failure in .coderabbit.yaml =="
rg -B 5 -A 20 'notify-on-failure' .coderabbit.yaml || echo "WARN: notify-on-failure not found"Repository: NVIDIA/NemoClaw Length of output: 13179 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "== Checking notify-on-failure in nightly-e2e.yaml =="
rg -B 3 -A 30 'notify-on-failure:' .github/workflows/nightly-e2e.yaml | head -80Repository: NVIDIA/NemoClaw Length of output: 1063 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "== Check if launchable-smoke-e2e appears in nightly-e2e.yaml =="
rg 'launchable-smoke-e2e' .github/workflows/nightly-e2e.yaml
echo ""
echo "== Full notify-on-failure needs list =="
rg -A 50 'notify-on-failure:' .github/workflows/nightly-e2e.yaml | grep -A 40 'needs:'Repository: NVIDIA/NemoClaw Length of output: 1654 Add The new job was correctly added to Add an entry that maps 🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # ── GPU E2E (Ollama local inference) ────────────────────────── | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Runs on an NVKS ephemeral GPU runner (RTX Pro 6000, 36 GB VRAM). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| # Each job gets a fresh VM — no state leakage between runs. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -1423,6 +1477,7 @@ jobs: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| credential-sanitization-e2e, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| telegram-injection-e2e, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| overlayfs-autofix-e2e, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| launchable-smoke-e2e, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| gpu-e2e, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| gpu-double-onboard-e2e, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix stale launchable job identifier in the header note.
The comment references
e2e-launchable-smoke, but this PR context useslaunchable-smoke-e2e. Keeping this exact avoids misrouting maintainers.Suggested patch
📝 Committable suggestion
🤖 Prompt for AI Agents