Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 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
2 changes: 1 addition & 1 deletion .github/workflows/brev-nightly-e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,4 @@ jobs:
secrets:
BREV_API_KEY: ${{ secrets.BREV_API_KEY }}
BREV_ORG_ID: ${{ secrets.BREV_ORG_ID }}
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
NVIDIA_INFERENCE_API_KEY: ${{ secrets.NVIDIA_INFERENCE_API_KEY }}
6 changes: 3 additions & 3 deletions .github/workflows/e2e-branch-validation.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ name: E2E / Branch Validation
# all — Runs credential-sanitization + telegram-injection (NOT full,
# which destroys the sandbox the security tests need).
#
# Required secrets: BREV_API_KEY + BREV_ORG_ID (or legacy BREV_API_TOKEN), NVIDIA_API_KEY
# Required secrets: BREV_API_KEY + BREV_ORG_ID (or legacy BREV_API_TOKEN), NVIDIA_INFERENCE_API_KEY
# Instance cost: Brev CPU credits (~$0.10/run for 4x16 instance)

on:
Expand Down Expand Up @@ -157,7 +157,7 @@ on:
required: false
BREV_ORG_ID:
required: false
NVIDIA_API_KEY:
NVIDIA_INFERENCE_API_KEY:
required: true

permissions:
Expand Down Expand Up @@ -253,7 +253,7 @@ jobs:
env:
NEMOCLAW_RUN_BRANCH_VALIDATION_E2E: "1"
BREV_API_TOKEN: ${{ inputs.brev_token || secrets.BREV_API_TOKEN }}
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
NVIDIA_INFERENCE_API_KEY: ${{ secrets.NVIDIA_INFERENCE_API_KEY }}
GITHUB_TOKEN: ${{ github.token }}
INSTANCE_NAME: ${{ env.BREV_E2E_INSTANCE_NAME }}
TEST_SUITE: ${{ inputs.test_suite }}
Expand Down
33 changes: 30 additions & 3 deletions .github/workflows/e2e-script.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,12 @@ on:
type: string
default: ""
nvidia_api_key:
description: Pass the NVIDIA_API_KEY secret to the script.
description: Pass the NVIDIA_INFERENCE_API_KEY secret to the script.
required: false
type: boolean
default: false
nvidia_secret_as_compatible_api_key:
description: Expose NVIDIA_INFERENCE_API_KEY as COMPATIBLE_API_KEY for CI-only OpenAI-compatible inference.
required: false
type: boolean
default: false
Expand All @@ -63,7 +68,7 @@ on:
type: boolean
default: false
secrets:
NVIDIA_API_KEY:
NVIDIA_INFERENCE_API_KEY:
required: false
BRAVE_API_KEY:
required: false
Expand Down Expand Up @@ -196,6 +201,28 @@ jobs:
echo "::warning::Docker Hub login failed after 3 attempts; continuing with anonymous pulls."
fi

- name: Export CI compatible inference environment
if: ${{ inputs.nvidia_secret_as_compatible_api_key }}
env:
NVIDIA_INFERENCE_API_KEY: ${{ secrets.NVIDIA_INFERENCE_API_KEY }}
shell: bash
run: |
set -euo pipefail

if [ -z "${NVIDIA_INFERENCE_API_KEY:-}" ]; then
echo "::error::NVIDIA_INFERENCE_API_KEY secret is required for CI compatible inference." >&2
exit 1
fi

{
printf 'NEMOCLAW_E2E_USE_NVIDIA_SECRET_AS_COMPATIBLE=1\n'
printf 'NEMOCLAW_PROVIDER=custom\n'
printf 'NEMOCLAW_ENDPOINT_URL=https://inference-api.nvidia.com/v1\n'
printf 'NEMOCLAW_MODEL=nvidia/nvidia/nemotron-3-super-v3\n'
printf 'NEMOCLAW_COMPAT_MODEL=nvidia/nvidia/nemotron-3-super-v3\n'
printf 'COMPATIBLE_API_KEY=%s\n' "${NVIDIA_INFERENCE_API_KEY}"
} >> "$GITHUB_ENV"

- name: Run E2E script
uses: ./workflow-actions/.github/actions/run-e2e-script
with:
Expand All @@ -206,7 +233,7 @@ jobs:
env:
BRAVE_API_KEY: ${{ inputs.brave_api_key && secrets.BRAVE_API_KEY || '' }}
GITHUB_TOKEN: ${{ inputs.github_token && github.token || '' }}
NVIDIA_API_KEY: ${{ inputs.nvidia_api_key && secrets.NVIDIA_API_KEY || '' }}
NVIDIA_INFERENCE_API_KEY: ${{ inputs.nvidia_api_key && secrets.NVIDIA_INFERENCE_API_KEY || '' }}
TELEGRAM_BOT_TOKEN_REAL: ${{ inputs.messaging_live_secrets && secrets.TELEGRAM_BOT_TOKEN_REAL || '' }}
TELEGRAM_CHAT_ID_E2E: ${{ inputs.messaging_live_secrets && secrets.TELEGRAM_CHAT_ID_E2E || '' }}
DISCORD_BOT_TOKEN_REAL: ${{ inputs.messaging_live_secrets && secrets.DISCORD_BOT_TOKEN_REAL || '' }}
Expand Down
42 changes: 21 additions & 21 deletions .github/workflows/e2e-vitest-scenarios.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ jobs:

- name: Run Vitest live E2E scenarios
env:
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
NVIDIA_INFERENCE_API_KEY: ${{ secrets.NVIDIA_INFERENCE_API_KEY }}
SCENARIO_ID: ${{ matrix.id }}
run: |
set -euo pipefail
Expand Down Expand Up @@ -467,7 +467,7 @@ jobs:

- name: Run skill-agent live test
env:
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
NVIDIA_INFERENCE_API_KEY: ${{ secrets.NVIDIA_INFERENCE_API_KEY }}
run: |
set -euo pipefail
export PATH="$HOME/.local/bin:$HOME/.npm-global/bin:$PATH"
Expand Down Expand Up @@ -662,7 +662,7 @@ jobs:

- name: Run issue #4434 TUI unreachable inference live test
env:
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
NVIDIA_INFERENCE_API_KEY: ${{ secrets.NVIDIA_INFERENCE_API_KEY }}
run: |
set -euo pipefail
export PATH="$HOME/.local/bin:$HOME/.npm-global/bin:$PATH"
Expand Down Expand Up @@ -749,11 +749,11 @@ jobs:

- name: Run credential sanitization live test
# Migrated from test/e2e/test-credential-sanitization.sh. Preserves the
# same ubuntu-latest + Docker/OpenShell + NVIDIA_API_KEY lane by running
# same ubuntu-latest + Docker/OpenShell + NVIDIA_INFERENCE_API_KEY lane by running
# install.sh, onboarding a real sandbox, and probing sandbox state from
# Vitest while fixture redaction owns evidence logs.
env:
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
NVIDIA_INFERENCE_API_KEY: ${{ secrets.NVIDIA_INFERENCE_API_KEY }}
run: |
set -euo pipefail
npx vitest run --project e2e-scenarios-live \
Expand Down Expand Up @@ -832,11 +832,11 @@ jobs:

- name: Run credential migration live test
# Migrated from test/e2e/test-credential-migration.sh. This live test
# needs NVIDIA_API_KEY only as the staged legacy credential value; it
# needs NVIDIA_INFERENCE_API_KEY only as the staged legacy credential value; it
# preserves the default NVIDIA provider/key migration path while
# pinning a lower-quota catalog model in the test fixture.
env:
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
NVIDIA_INFERENCE_API_KEY: ${{ secrets.NVIDIA_INFERENCE_API_KEY }}
run: |
set -euo pipefail
npx vitest run --project e2e-scenarios-live \
Expand Down Expand Up @@ -931,7 +931,7 @@ jobs:

- name: Run Hermes live Vitest test
env:
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
NVIDIA_INFERENCE_API_KEY: ${{ secrets.NVIDIA_INFERENCE_API_KEY }}
run: |
set -euo pipefail
npx vitest run --project e2e-scenarios-live \
Expand Down Expand Up @@ -979,21 +979,21 @@ jobs:
run: npm run build:cli

- name: Install OpenShell
# Runs without workflow tokens, Docker credentials, or NVIDIA_API_KEY.
# Runs without workflow tokens, Docker credentials, or NVIDIA_INFERENCE_API_KEY.
# scripts/install-openshell.sh pins the OpenShell version and verifies
# release SHA-256 checksums before installation.
env:
NEMOCLAW_NON_INTERACTIVE: "1"
run: |
set -euo pipefail
env -u DOCKER_CONFIG -u DOCKERHUB_USERNAME -u DOCKERHUB_TOKEN -u NVIDIA_API_KEY -u GITHUB_TOKEN bash scripts/install-openshell.sh
env -u DOCKER_CONFIG -u DOCKERHUB_USERNAME -u DOCKERHUB_TOKEN -u NVIDIA_INFERENCE_API_KEY -u GITHUB_TOKEN bash scripts/install-openshell.sh

- name: Run network-policy live test
# Migrated from test/e2e/test-network-policy.sh. Free-standing anchor
# for live network policy allow/deny probes; shell retirement remains
# deferred to #5098 Phase 11.
env:
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
NVIDIA_INFERENCE_API_KEY: ${{ secrets.NVIDIA_INFERENCE_API_KEY }}
run: |
set -euo pipefail
npx vitest run --project e2e-scenarios-live \
Expand Down Expand Up @@ -1067,7 +1067,7 @@ jobs:
# bash install.sh to preserve installer/onboard fidelity, then probes
# real shields/config behavior against the live sandbox.
env:
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
NVIDIA_INFERENCE_API_KEY: ${{ secrets.NVIDIA_INFERENCE_API_KEY }}
run: |
set -euo pipefail
npx vitest run --project e2e-scenarios-live \
Expand Down Expand Up @@ -1145,11 +1145,11 @@ jobs:
NEMOCLAW_NON_INTERACTIVE: "1"
run: |
set -euo pipefail
env -u DOCKER_CONFIG -u DOCKERHUB_USERNAME -u DOCKERHUB_TOKEN -u NVIDIA_API_KEY -u GITHUB_TOKEN bash scripts/install-openshell.sh
env -u DOCKER_CONFIG -u DOCKERHUB_USERNAME -u DOCKERHUB_TOKEN -u NVIDIA_INFERENCE_API_KEY -u GITHUB_TOKEN bash scripts/install-openshell.sh

- name: Run OpenClaw rebuild live test
env:
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
NVIDIA_INFERENCE_API_KEY: ${{ secrets.NVIDIA_INFERENCE_API_KEY }}
run: |
set -euo pipefail
export PATH="$HOME/.local/bin:$HOME/.npm-global/bin:$PATH"
Expand Down Expand Up @@ -1238,11 +1238,11 @@ jobs:
NEMOCLAW_NON_INTERACTIVE: "1"
run: |
set -euo pipefail
env -u DOCKER_CONFIG -u DOCKERHUB_USERNAME -u DOCKERHUB_TOKEN -u NVIDIA_API_KEY -u GITHUB_TOKEN bash scripts/install-openshell.sh
env -u DOCKER_CONFIG -u DOCKERHUB_USERNAME -u DOCKERHUB_TOKEN -u NVIDIA_INFERENCE_API_KEY -u GITHUB_TOKEN bash scripts/install-openshell.sh

- name: Run sandbox rebuild live test
env:
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
NVIDIA_INFERENCE_API_KEY: ${{ secrets.NVIDIA_INFERENCE_API_KEY }}
run: |
set -euo pipefail
export PATH="$HOME/.local/bin:$HOME/.npm-global/bin:$PATH"
Expand Down Expand Up @@ -1495,7 +1495,7 @@ jobs:

- name: Run launchable smoke live test
env:
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
NVIDIA_INFERENCE_API_KEY: ${{ secrets.NVIDIA_INFERENCE_API_KEY }}
run: |
set -euo pipefail
npx vitest run --project e2e-scenarios-live \
Expand Down Expand Up @@ -1580,7 +1580,7 @@ jobs:
# sandbox inference.local completion boundaries without adding registry
# or migration-ledger wiring.
env:
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
NVIDIA_INFERENCE_API_KEY: ${{ secrets.NVIDIA_INFERENCE_API_KEY }}
run: |
set -euo pipefail
npx vitest run --project e2e-scenarios-live \
Expand Down Expand Up @@ -1668,7 +1668,7 @@ jobs:
# fidelity before exercising gateway restart, state survival, and live
# inference.local before and after restart.
env:
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
NVIDIA_INFERENCE_API_KEY: ${{ secrets.NVIDIA_INFERENCE_API_KEY }}
run: |
set -euo pipefail
npx vitest run --project e2e-scenarios-live \
Expand Down Expand Up @@ -1749,7 +1749,7 @@ jobs:

- name: Run OpenClaw TUI chat correlation live test
env:
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
NVIDIA_INFERENCE_API_KEY: ${{ secrets.NVIDIA_INFERENCE_API_KEY }}
run: |
set -euo pipefail
npx vitest run --project e2e-scenarios-live \
Expand Down Expand Up @@ -1784,7 +1784,7 @@ jobs:
E2E_ARTIFACT_DIR: ${{ github.workspace }}/e2e-artifacts/vitest/gateway-guard-recovery
NEMOCLAW_CLI_BIN: ${{ github.workspace }}/bin/nemoclaw.js
NEMOCLAW_RUN_E2E_SCENARIOS: "1"
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
NVIDIA_INFERENCE_API_KEY: ${{ secrets.NVIDIA_INFERENCE_API_KEY }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
# nemoclaw onboard registers the gateway under the canonical name
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/macos-e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ jobs:
- name: Run macOS full E2E
if: steps.docker.outputs.docker_ok == 'true'
env:
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
NVIDIA_INFERENCE_API_KEY: ${{ secrets.NVIDIA_INFERENCE_API_KEY }}
GITHUB_TOKEN: ${{ github.token }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
Expand Down
Loading
Loading