Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
82 changes: 75 additions & 7 deletions .github/workflows/e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4550,18 +4550,83 @@ jobs:
shell: bash
run: bash .github/scripts/docker-auth-cleanup.sh

# Scheduled coverage for #6108 / #3513 / #3127. This exercises the complete
# managed v0.0.71 runtime with a custom plugin, then proves restart/rebuild
# persistence and target-side runtime-dependency replacement across devices.
# Scheduled release-baseline coverage for #6108. This runs independently of
# the current lifecycle lane so the exact v0.0.71 build does not extend that
# lane's critical path.
openclaw-plugin-runtime-exdev-release:
needs: generate-matrix
if: ${{ (github.event_name != 'workflow_dispatch' || (inputs.jobs == '' && inputs.targets == '')) || contains(format(',{0},', inputs.jobs), ',openclaw-plugin-runtime-exdev-release,') || contains(format(',{0},', inputs.targets), ',openclaw-plugin-runtime-exdev-release,') }}
runs-on: ubuntu-latest
permissions:
contents: read
timeout-minutes: 55
env:
E2E_JOB: "1"
E2E_TARGET_ID: "openclaw-plugin-runtime-exdev-release"
E2E_ARTIFACT_DIR: ${{ github.workspace }}/e2e-artifacts/live/openclaw-plugin-runtime-exdev-release
NEMOCLAW_CLI_BIN: ${{ github.workspace }}/bin/nemoclaw.js
NEMOCLAW_RUN_LIVE_E2E: "1"
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
NEMOCLAW_SANDBOX_NAME: "e2e-openclaw-plugin-exdev-release"
OPENSHELL_GATEWAY: "nemoclaw"
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
ref: ${{ inputs.checkout_sha || github.sha }}
persist-credentials: false

- *dockerhub-auth

- name: Pre-pull release-matched Docker Hub builder image
shell: bash
run: |
set -euo pipefail
docker pull node:22-trixie-slim@sha256:2d9f5c76c8f4dd36e8f253bee5d828a83a6c09f36188f0b0414325232e0b175d

- name: Remove Docker auth before release-pinned fixture
if: always()
shell: bash
run: |
set -euo pipefail
bash .github/scripts/docker-auth-cleanup.sh

- name: Prepare E2E workspace
uses: NVIDIA/NemoClaw/.github/actions/prepare-e2e@50281ee84c4a6fc759da95ea28fc0b7d9c378a28

- name: Run OpenClaw custom-plugin release baseline live test
run: |
set -euo pipefail
test -n "${DOCKER_CONFIG:-}"
test ! -e "${DOCKER_CONFIG}"
test -z "${DOCKERHUB_USERNAME:-}"
test -z "${DOCKERHUB_TOKEN:-}"
env -u DOCKER_CONFIG -u DOCKERHUB_USERNAME -u DOCKERHUB_TOKEN \
npx tsx tools/e2e/live-vitest-invocation.mts run \
--test-path test/e2e/live/openclaw-plugin-runtime-exdev.test.ts \
--selector release-baseline

- name: Upload OpenClaw plugin release baseline artifacts
if: always()
uses: NVIDIA/NemoClaw/.github/actions/upload-e2e-artifacts@7768e15eb90d3ee2d33432f481dfe8747e4f6d57

- name: Clean up Docker auth
if: always()
shell: bash
run: bash .github/scripts/docker-auth-cleanup.sh

# Scheduled current-lifecycle coverage for #6108 / #3513 / #3127. This
# proves restart/rebuild persistence and target-side runtime-dependency
# replacement across devices without waiting for the release baseline.
openclaw-plugin-runtime-exdev:
needs: generate-matrix
if: ${{ (github.event_name != 'workflow_dispatch' || (inputs.jobs == '' && inputs.targets == '')) || contains(format(',{0},', inputs.jobs), ',openclaw-plugin-runtime-exdev,') || contains(format(',{0},', inputs.targets), ',openclaw-plugin-runtime-exdev,') }}
runs-on: ubuntu-latest
permissions:
contents: read
# Three bounded 25-minute onboards plus the 20-minute rebuild and 15-minute
# Vitest buffer need 110 minutes; allow 20 more for setup and teardown.
timeout-minutes: 130
# Two bounded 25-minute onboards plus the 20-minute rebuild and 15-minute
# Vitest buffer need 85 minutes; allow 20 more for setup and teardown.
timeout-minutes: 105
env:
E2E_JOB: "1"
E2E_TARGET_ID: "openclaw-plugin-runtime-exdev"
Expand Down Expand Up @@ -4604,7 +4669,9 @@ jobs:
test -z "${DOCKERHUB_USERNAME:-}"
test -z "${DOCKERHUB_TOKEN:-}"
env -u DOCKER_CONFIG -u DOCKERHUB_USERNAME -u DOCKERHUB_TOKEN \
npx tsx tools/e2e/live-vitest-invocation.mts run --test-path test/e2e/live/openclaw-plugin-runtime-exdev.test.ts
npx tsx tools/e2e/live-vitest-invocation.mts run \
--test-path test/e2e/live/openclaw-plugin-runtime-exdev.test.ts \
--selector current-lifecycle

- name: Upload OpenClaw plugin runtime-deps EXDEV artifacts
if: always()
Expand Down Expand Up @@ -5622,6 +5689,7 @@ jobs:
sandbox-survival,
diagnostics,
snapshot-commands,
openclaw-plugin-runtime-exdev-release,
openclaw-plugin-runtime-exdev,
openclaw-tui-chat-correlation,
gateway-guard-recovery,
Expand Down
70 changes: 62 additions & 8 deletions .github/workflows/regression-e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -287,11 +287,63 @@ jobs:
/tmp/nemoclaw-e2e-model-router-response.log
if-no-files-found: ignore

# ── OpenClaw custom-plugin lifecycle and runtime-deps EXDEV E2E ─
# Coverage guard for #6108 / #3513 / #3127. On Ubuntu/OpenShell sandbox layouts
# where /tmp and /sandbox can live on different filesystems, OpenClaw's
# first CLI bootstrap must not fail plugin runtime dependency installation
# with EXDEV cross-device rename errors.
# ── OpenClaw release-baseline custom-plugin E2E ────────────────
# The exact v0.0.71 baseline runs in parallel with the current lifecycle
# contract so release provenance does not extend the EXDEV critical path.
openclaw-plugin-runtime-exdev-release-e2e:
needs: select_regression_jobs
if: >-
github.repository == 'NVIDIA/NemoClaw' &&
needs.select_regression_jobs.outputs.openclaw_plugin_runtime_exdev == 'true'
runs-on: ubuntu-latest
permissions:
contents: read
timeout-minutes: 55
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
persist-credentials: false

- name: Setup Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.0.0
with:
node-version: "22"
cache: npm

- name: Install root dependencies
run: npm ci --ignore-scripts

- name: Build CLI
run: npm run build:cli

- name: Run OpenClaw custom-plugin release baseline Vitest test
env:
E2E_ARTIFACT_DIR: ${{ github.workspace }}/e2e-artifacts/live/openclaw-plugin-runtime-exdev-release
E2E_TARGET_ID: openclaw-plugin-runtime-exdev-release
NEMOCLAW_RUN_LIVE_E2E: "1"
NEMOCLAW_SANDBOX_NAME: e2e-openclaw-plugin-exdev-release
run: |
set -euo pipefail
npx vitest run --project e2e-live \
test/e2e/live/openclaw-plugin-runtime-exdev.test.ts \
-t release-baseline \
--silent=false --reporter=default

- name: Upload OpenClaw plugin release baseline artifacts
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: openclaw-plugin-runtime-exdev-release-artifacts
path: e2e-artifacts/live/openclaw-plugin-runtime-exdev-release/
include-hidden-files: false
if-no-files-found: ignore
retention-days: 14

# ── OpenClaw current lifecycle and runtime-deps EXDEV E2E ─────
# Coverage guard for #6108 / #3513 / #3127. On Ubuntu/OpenShell sandbox
# layouts where /tmp and /sandbox can live on different filesystems, the
# runtime dependency replacement must complete without EXDEV failures.
openclaw-plugin-runtime-exdev-e2e:
needs: select_regression_jobs
if: >-
Expand All @@ -300,9 +352,9 @@ jobs:
runs-on: ubuntu-latest
permissions:
contents: read
# Three bounded 25-minute onboards plus the 20-minute rebuild and 15-minute
# Vitest buffer need 110 minutes; allow 20 more for setup and teardown.
timeout-minutes: 130
# Two bounded 25-minute onboards plus the 20-minute rebuild and 15-minute
# Vitest buffer need 85 minutes; allow 20 more for setup and teardown.
timeout-minutes: 105
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
Expand All @@ -324,11 +376,13 @@ jobs:
- name: Run OpenClaw custom-plugin lifecycle and runtime-deps EXDEV Vitest test
env:
E2E_ARTIFACT_DIR: ${{ github.workspace }}/e2e-artifacts/live/openclaw-plugin-runtime-exdev
E2E_TARGET_ID: openclaw-plugin-runtime-exdev
NEMOCLAW_RUN_LIVE_E2E: "1"
run: |
set -euo pipefail
npx vitest run --project e2e-live \
test/e2e/live/openclaw-plugin-runtime-exdev.test.ts \
-t current-lifecycle \
--silent=false --reporter=default

- name: Upload OpenClaw plugin runtime-deps EXDEV artifacts
Expand Down
Loading
Loading