mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 13:50:49 +00:00
test: reuse Docker test-state in more lanes
This commit is contained in:
@@ -7,18 +7,21 @@ run_channel_scenario() {
|
||||
local channel="$1"
|
||||
local dep_sentinel="$2"
|
||||
local run_log
|
||||
local state_script_b64
|
||||
run_log="$(docker_e2e_run_log "bundled-channel-deps-$channel")"
|
||||
state_script_b64="$(docker_e2e_test_state_shell_b64 "bundled-channel-deps-$channel" empty)"
|
||||
|
||||
echo "Running bundled $channel runtime deps Docker E2E..."
|
||||
if ! timeout "$DOCKER_RUN_TIMEOUT" docker run --rm \
|
||||
-e COREPACK_ENABLE_DOWNLOAD_PROMPT=0 \
|
||||
-e OPENCLAW_CHANNEL_UNDER_TEST="$channel" \
|
||||
-e OPENCLAW_DEP_SENTINEL="$dep_sentinel" \
|
||||
-e "OPENCLAW_TEST_STATE_SCRIPT_B64=$state_script_b64" \
|
||||
"${DOCKER_E2E_PACKAGE_ARGS[@]}" \
|
||||
-i "$IMAGE_NAME" bash -s >"$run_log" 2>&1 <<'EOF'
|
||||
set -euo pipefail
|
||||
|
||||
export HOME="$(mktemp -d "/tmp/openclaw-bundled-channel-deps.XXXXXX")"
|
||||
eval "$(printf "%s" "${OPENCLAW_TEST_STATE_SCRIPT_B64:?missing OPENCLAW_TEST_STATE_SCRIPT_B64}" | base64 -d)"
|
||||
export NPM_CONFIG_PREFIX="$HOME/.npm-global"
|
||||
export PATH="$NPM_CONFIG_PREFIX/bin:$PATH"
|
||||
export OPENAI_API_KEY="sk-openclaw-bundled-channel-deps-e2e"
|
||||
|
||||
@@ -5,16 +5,19 @@
|
||||
|
||||
run_disabled_config_scenario() {
|
||||
local run_log
|
||||
local state_script_b64
|
||||
run_log="$(docker_e2e_run_log bundled-channel-disabled-config)"
|
||||
state_script_b64="$(docker_e2e_test_state_shell_b64 bundled-channel-disabled-config empty)"
|
||||
|
||||
echo "Running bundled channel disabled-config runtime deps Docker E2E..."
|
||||
if ! timeout "$DOCKER_RUN_TIMEOUT" docker run --rm \
|
||||
-e COREPACK_ENABLE_DOWNLOAD_PROMPT=0 \
|
||||
-e "OPENCLAW_TEST_STATE_SCRIPT_B64=$state_script_b64" \
|
||||
"${DOCKER_E2E_PACKAGE_ARGS[@]}" \
|
||||
-i "$IMAGE_NAME" bash -s >"$run_log" 2>&1 <<'EOF'
|
||||
set -euo pipefail
|
||||
|
||||
export HOME="$(mktemp -d "/tmp/openclaw-bundled-channel-disabled-config.XXXXXX")"
|
||||
eval "$(printf "%s" "${OPENCLAW_TEST_STATE_SCRIPT_B64:?missing OPENCLAW_TEST_STATE_SCRIPT_B64}" | base64 -d)"
|
||||
export NPM_CONFIG_PREFIX="$HOME/.npm-global"
|
||||
export PATH="$NPM_CONFIG_PREFIX/bin:$PATH"
|
||||
export OPENCLAW_NO_ONBOARD=1
|
||||
|
||||
@@ -5,16 +5,19 @@
|
||||
|
||||
run_load_failure_scenario() {
|
||||
local run_log
|
||||
local state_script_b64
|
||||
run_log="$(docker_e2e_run_log bundled-channel-load-failure)"
|
||||
state_script_b64="$(docker_e2e_test_state_shell_b64 bundled-channel-load-failure empty)"
|
||||
|
||||
echo "Running bundled channel load-failure isolation Docker E2E..."
|
||||
if ! timeout "$DOCKER_RUN_TIMEOUT" docker run --rm \
|
||||
-e COREPACK_ENABLE_DOWNLOAD_PROMPT=0 \
|
||||
-e "OPENCLAW_TEST_STATE_SCRIPT_B64=$state_script_b64" \
|
||||
"${DOCKER_E2E_PACKAGE_ARGS[@]}" \
|
||||
-i "$IMAGE_NAME" bash -s >"$run_log" 2>&1 <<'EOF'
|
||||
set -euo pipefail
|
||||
|
||||
export HOME="$(mktemp -d "/tmp/openclaw-bundled-channel-load-failure.XXXXXX")"
|
||||
eval "$(printf "%s" "${OPENCLAW_TEST_STATE_SCRIPT_B64:?missing OPENCLAW_TEST_STATE_SCRIPT_B64}" | base64 -d)"
|
||||
export NPM_CONFIG_PREFIX="$HOME/.npm-global"
|
||||
export PATH="$NPM_CONFIG_PREFIX/bin:$PATH"
|
||||
export OPENCLAW_NO_ONBOARD=1
|
||||
|
||||
@@ -5,16 +5,19 @@
|
||||
|
||||
run_setup_entry_scenario() {
|
||||
local run_log
|
||||
local state_script_b64
|
||||
run_log="$(docker_e2e_run_log bundled-channel-setup-entry)"
|
||||
state_script_b64="$(docker_e2e_test_state_shell_b64 bundled-channel-setup-entry empty)"
|
||||
|
||||
echo "Running bundled channel setup-entry runtime deps Docker E2E..."
|
||||
if ! timeout "$DOCKER_RUN_TIMEOUT" docker run --rm \
|
||||
-e COREPACK_ENABLE_DOWNLOAD_PROMPT=0 \
|
||||
-e "OPENCLAW_TEST_STATE_SCRIPT_B64=$state_script_b64" \
|
||||
"${DOCKER_E2E_PACKAGE_ARGS[@]}" \
|
||||
-i "$IMAGE_NAME" bash -s >"$run_log" 2>&1 <<'EOF'
|
||||
set -euo pipefail
|
||||
|
||||
export HOME="$(mktemp -d "/tmp/openclaw-bundled-channel-setup-entry.XXXXXX")"
|
||||
eval "$(printf "%s" "${OPENCLAW_TEST_STATE_SCRIPT_B64:?missing OPENCLAW_TEST_STATE_SCRIPT_B64}" | base64 -d)"
|
||||
export NPM_CONFIG_PREFIX="$HOME/.npm-global"
|
||||
export PATH="$NPM_CONFIG_PREFIX/bin:$PATH"
|
||||
export OPENCLAW_NO_ONBOARD=1
|
||||
|
||||
@@ -5,18 +5,21 @@
|
||||
|
||||
run_update_scenario() {
|
||||
local run_log
|
||||
local state_script_b64
|
||||
run_log="$(docker_e2e_run_log bundled-channel-update)"
|
||||
state_script_b64="$(docker_e2e_test_state_shell_b64 bundled-channel-update empty)"
|
||||
|
||||
echo "Running bundled channel runtime deps Docker update E2E..."
|
||||
if ! timeout "$DOCKER_RUN_TIMEOUT" docker run --rm \
|
||||
-e COREPACK_ENABLE_DOWNLOAD_PROMPT=0 \
|
||||
-e OPENCLAW_BUNDLED_CHANNEL_UPDATE_BASELINE_VERSION="$UPDATE_BASELINE_VERSION" \
|
||||
-e "OPENCLAW_BUNDLED_CHANNEL_UPDATE_TARGETS=${OPENCLAW_BUNDLED_CHANNEL_UPDATE_TARGETS:-telegram,discord,slack,feishu,memory-lancedb,acpx}" \
|
||||
-e "OPENCLAW_TEST_STATE_SCRIPT_B64=$state_script_b64" \
|
||||
"${DOCKER_E2E_PACKAGE_ARGS[@]}" \
|
||||
-i "$IMAGE_NAME" bash -s >"$run_log" 2>&1 <<'EOF'
|
||||
set -euo pipefail
|
||||
|
||||
export HOME="$(mktemp -d "/tmp/openclaw-bundled-channel-update.XXXXXX")"
|
||||
eval "$(printf "%s" "${OPENCLAW_TEST_STATE_SCRIPT_B64:?missing OPENCLAW_TEST_STATE_SCRIPT_B64}" | base64 -d)"
|
||||
export NPM_CONFIG_PREFIX="$HOME/.npm-global"
|
||||
export PATH="$NPM_CONFIG_PREFIX/bin:$PATH"
|
||||
export OPENAI_API_KEY="sk-openclaw-bundled-channel-update-e2e"
|
||||
|
||||
@@ -7,27 +7,31 @@ source "$ROOT_DIR/scripts/lib/docker-e2e-image.sh"
|
||||
IMAGE_NAME="$(docker_e2e_resolve_image "openclaw-openai-web-search-minimal-e2e" OPENCLAW_OPENAI_WEB_SEARCH_MINIMAL_E2E_IMAGE)"
|
||||
SKIP_BUILD="${OPENCLAW_OPENAI_WEB_SEARCH_MINIMAL_E2E_SKIP_BUILD:-0}"
|
||||
PORT="18789"
|
||||
MOCK_PORT="19191"
|
||||
MOCK_PORT="80"
|
||||
TOKEN="openai-web-search-minimal-e2e-$$"
|
||||
|
||||
docker_e2e_build_or_reuse "$IMAGE_NAME" openai-web-search-minimal "$ROOT_DIR/scripts/e2e/Dockerfile" "$ROOT_DIR" "" "$SKIP_BUILD"
|
||||
OPENCLAW_TEST_STATE_SCRIPT_B64="$(docker_e2e_test_state_shell_b64 openai-web-search-minimal empty)"
|
||||
|
||||
echo "Running OpenAI web_search minimal reasoning Docker E2E..."
|
||||
run_logged openai-web-search-minimal docker run --rm \
|
||||
--add-host api.openai.com:127.0.0.1 \
|
||||
-e "OPENCLAW_GATEWAY_TOKEN=$TOKEN" \
|
||||
-e "OPENAI_API_KEY=sk-openclaw-web-search-minimal-e2e" \
|
||||
-e "BRAVE_API_KEY=brave-openclaw-web-search-minimal-e2e" \
|
||||
-e "OPENCLAW_TEST_STATE_SCRIPT_B64=$OPENCLAW_TEST_STATE_SCRIPT_B64" \
|
||||
-e "PORT=$PORT" \
|
||||
-e "MOCK_PORT=$MOCK_PORT" \
|
||||
-i "$IMAGE_NAME" bash -s <<'EOF'
|
||||
set -euo pipefail
|
||||
|
||||
export HOME="$(mktemp -d "/tmp/openclaw-openai-web-search-minimal.XXXXXX")"
|
||||
export OPENCLAW_STATE_DIR="$HOME/.openclaw"
|
||||
eval "$(printf "%s" "${OPENCLAW_TEST_STATE_SCRIPT_B64:?missing OPENCLAW_TEST_STATE_SCRIPT_B64}" | base64 -d)"
|
||||
export OPENCLAW_SKIP_CHANNELS=1
|
||||
export OPENCLAW_SKIP_GMAIL_WATCHER=1
|
||||
export OPENCLAW_SKIP_CRON=1
|
||||
export OPENCLAW_SKIP_CANVAS_HOST=1
|
||||
export OPENCLAW_SKIP_BROWSER_CONTROL_SERVER=1
|
||||
export OPENCLAW_SKIP_ACPX_RUNTIME=1
|
||||
export OPENCLAW_SKIP_ACPX_RUNTIME_PROBE=1
|
||||
|
||||
PORT="${PORT:?missing PORT}"
|
||||
MOCK_PORT="${MOCK_PORT:?missing MOCK_PORT}"
|
||||
@@ -126,7 +130,7 @@ cat >"$OPENCLAW_STATE_DIR/openclaw.json" <<JSON
|
||||
"providers": {
|
||||
"openai": {
|
||||
"api": "openai-responses",
|
||||
"baseUrl": "http://127.0.0.1:${MOCK_PORT}/v1",
|
||||
"baseUrl": "http://api.openai.com/v1",
|
||||
"apiKey": { "source": "env", "provider": "default", "id": "OPENAI_API_KEY" },
|
||||
"request": { "allowPrivateNetwork": true },
|
||||
"models": [
|
||||
@@ -149,22 +153,15 @@ cat >"$OPENCLAW_STATE_DIR/openclaw.json" <<JSON
|
||||
"web": {
|
||||
"search": {
|
||||
"enabled": true,
|
||||
"provider": "brave",
|
||||
"maxResults": 3
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": true,
|
||||
"allow": ["openai"],
|
||||
"entries": {
|
||||
"brave": {
|
||||
"enabled": true,
|
||||
"config": {
|
||||
"webSearch": {
|
||||
"apiKey": { "source": "env", "provider": "default", "id": "BRAVE_API_KEY" }
|
||||
}
|
||||
}
|
||||
}
|
||||
"openai": { "enabled": true }
|
||||
}
|
||||
},
|
||||
"gateway": {
|
||||
@@ -359,9 +356,22 @@ node "$entry" gateway health \
|
||||
--json >/dev/null
|
||||
|
||||
cat >/tmp/openclaw-openai-web-search-minimal-client.mjs <<'NODE'
|
||||
import { execFileSync } from "node:child_process";
|
||||
import { readdirSync } from "node:fs";
|
||||
import { pathToFileURL } from "node:url";
|
||||
|
||||
async function loadCallGateway() {
|
||||
const candidates = readdirSync("/app/dist")
|
||||
.filter((name) => /^call(?:\.runtime)?-[A-Za-z0-9_-]+\.js$/.test(name))
|
||||
.sort();
|
||||
for (const name of candidates) {
|
||||
const mod = await import(pathToFileURL(`/app/dist/${name}`).href);
|
||||
if (typeof mod.callGateway === "function") return mod.callGateway;
|
||||
}
|
||||
throw new Error(`unable to find callGateway export in /app/dist (${candidates.join(", ")})`);
|
||||
}
|
||||
|
||||
const callGateway = await loadCallGateway();
|
||||
|
||||
const entry = process.env.OPENCLAW_ENTRY;
|
||||
const port = process.env.PORT;
|
||||
const token = process.env.OPENCLAW_GATEWAY_TOKEN;
|
||||
const mode = process.argv[2];
|
||||
@@ -372,40 +382,32 @@ const message =
|
||||
: "Return exactly OPENCLAW_SCHEMA_E2E_OK.";
|
||||
const id = mode === "reject" ? "schema-reject" : "schema-success";
|
||||
|
||||
if (!entry || !port || !token) throw new Error("missing OPENCLAW_ENTRY/PORT/OPENCLAW_GATEWAY_TOKEN");
|
||||
if (!port || !token) throw new Error("missing PORT/OPENCLAW_GATEWAY_TOKEN");
|
||||
|
||||
const gatewayArgs = [
|
||||
entry,
|
||||
"gateway",
|
||||
"call",
|
||||
"--url",
|
||||
`ws://127.0.0.1:${port}`,
|
||||
"--token",
|
||||
token,
|
||||
"--timeout",
|
||||
"240000",
|
||||
"--expect-final",
|
||||
"--json",
|
||||
];
|
||||
|
||||
function gatewayAgent(params) {
|
||||
async function gatewayAgent(params) {
|
||||
try {
|
||||
return {
|
||||
ok: true,
|
||||
value: JSON.parse(execFileSync("node", [...gatewayArgs, "agent", "--params", JSON.stringify(params)], {
|
||||
encoding: "utf8",
|
||||
stdio: ["ignore", "pipe", "pipe"],
|
||||
})),
|
||||
value: await callGateway({
|
||||
url: `ws://127.0.0.1:${port}`,
|
||||
token,
|
||||
method: "agent",
|
||||
params,
|
||||
expectFinal: true,
|
||||
timeoutMs: 240_000,
|
||||
clientName: "gateway-client",
|
||||
mode: "backend",
|
||||
scopes: ["operator.write"],
|
||||
deviceIdentity: null,
|
||||
}),
|
||||
};
|
||||
} catch (error) {
|
||||
const stderr = typeof error?.stderr === "string" ? error.stderr : "";
|
||||
const stdout = typeof error?.stdout === "string" ? error.stdout : "";
|
||||
const combined = [String(error), stderr.trim(), stdout.trim()].filter(Boolean).join("\n");
|
||||
const combined = String(error);
|
||||
return { ok: false, error: new Error(combined) };
|
||||
}
|
||||
}
|
||||
|
||||
const result = gatewayAgent({
|
||||
const result = await gatewayAgent({
|
||||
sessionKey,
|
||||
message,
|
||||
thinking: "minimal",
|
||||
@@ -424,7 +426,7 @@ if (result.value?.status !== "ok") {
|
||||
}
|
||||
NODE
|
||||
|
||||
OPENCLAW_ENTRY="$entry" PORT="$PORT" OPENCLAW_GATEWAY_TOKEN="$TOKEN" node /tmp/openclaw-openai-web-search-minimal-client.mjs success >/tmp/openclaw-openai-web-search-minimal-client-success.log 2>&1
|
||||
PORT="$PORT" OPENCLAW_GATEWAY_TOKEN="$TOKEN" node /tmp/openclaw-openai-web-search-minimal-client.mjs success >/tmp/openclaw-openai-web-search-minimal-client-success.log 2>&1
|
||||
|
||||
node - "$MOCK_REQUEST_LOG" <<'NODE'
|
||||
const fs = require("node:fs");
|
||||
@@ -448,7 +450,7 @@ if (success.body.reasoning?.effort === "minimal") {
|
||||
}
|
||||
NODE
|
||||
|
||||
OPENCLAW_ENTRY="$entry" PORT="$PORT" OPENCLAW_GATEWAY_TOKEN="$TOKEN" node /tmp/openclaw-openai-web-search-minimal-client.mjs reject >/tmp/openclaw-openai-web-search-minimal-client-reject.log 2>&1
|
||||
PORT="$PORT" OPENCLAW_GATEWAY_TOKEN="$TOKEN" node /tmp/openclaw-openai-web-search-minimal-client.mjs reject >/tmp/openclaw-openai-web-search-minimal-client-reject.log 2>&1
|
||||
|
||||
for _ in $(seq 1 80); do
|
||||
if grep -Fq "$RAW_SCHEMA_ERROR" "$GATEWAY_LOG"; then
|
||||
|
||||
@@ -7,7 +7,11 @@ IMAGE_NAME="$(docker_e2e_resolve_image "openclaw-plugins-e2e" OPENCLAW_PLUGINS_E
|
||||
|
||||
docker_e2e_build_or_reuse "$IMAGE_NAME" plugins
|
||||
|
||||
DOCKER_ENV_ARGS=(-e COREPACK_ENABLE_DOWNLOAD_PROMPT=0)
|
||||
OPENCLAW_TEST_STATE_SCRIPT_B64="$(docker_e2e_test_state_shell_b64 plugins empty)"
|
||||
DOCKER_ENV_ARGS=(
|
||||
-e COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
-e "OPENCLAW_TEST_STATE_SCRIPT_B64=$OPENCLAW_TEST_STATE_SCRIPT_B64"
|
||||
)
|
||||
for env_name in \
|
||||
OPENCLAW_PLUGINS_E2E_CLAWHUB \
|
||||
OPENCLAW_PLUGINS_E2E_CLAWHUB_SPEC \
|
||||
@@ -64,8 +68,7 @@ NODE
|
||||
)"
|
||||
export OPENCLAW_PACKAGE_ACCEPTANCE_LEGACY_COMPAT
|
||||
|
||||
home_dir=$(mktemp -d "/tmp/openclaw-plugins-e2e.XXXXXX")
|
||||
export HOME="$home_dir"
|
||||
eval "$(printf "%s" "${OPENCLAW_TEST_STATE_SCRIPT_B64:?missing OPENCLAW_TEST_STATE_SCRIPT_B64}" | base64 -d)"
|
||||
BUNDLED_PLUGIN_ROOT_DIR="extensions"
|
||||
OPENCLAW_PLUGIN_HOME="$HOME/.openclaw/$BUNDLED_PLUGIN_ROOT_DIR"
|
||||
|
||||
|
||||
@@ -120,6 +120,7 @@ const bundledChannelSmokeLanes = ["telegram", "discord", "slack", "feishu", "mem
|
||||
npmLane(
|
||||
`bundled-channel-${channel}`,
|
||||
`OPENCLAW_BUNDLED_CHANNELS=${channel} ${bundledChannelLaneCommand}`,
|
||||
{ stateScenario: "empty" },
|
||||
),
|
||||
);
|
||||
|
||||
@@ -138,6 +139,7 @@ const bundledChannelUpdateLanes = [
|
||||
noOutputTimeoutMs: BUNDLED_UPDATE_NO_OUTPUT_TIMEOUT_MS,
|
||||
retryPatterns: LIVE_RETRY_PATTERNS,
|
||||
retries: 1,
|
||||
stateScenario: "empty",
|
||||
timeoutMs: BUNDLED_UPDATE_TIMEOUT_MS,
|
||||
},
|
||||
),
|
||||
@@ -151,14 +153,17 @@ const bundledChannelContractLanes = [
|
||||
bundledChannelScenarioLane(
|
||||
"bundled-channel-setup-entry",
|
||||
"OPENCLAW_BUNDLED_CHANNEL_SCENARIOS=0 OPENCLAW_BUNDLED_CHANNEL_UPDATE_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_ROOT_OWNED_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_SETUP_ENTRY_SCENARIO=1 OPENCLAW_BUNDLED_CHANNEL_LOAD_FAILURE_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_DISABLED_CONFIG_SCENARIO=0",
|
||||
{ stateScenario: "empty" },
|
||||
),
|
||||
bundledChannelScenarioLane(
|
||||
"bundled-channel-load-failure",
|
||||
"OPENCLAW_BUNDLED_CHANNEL_SCENARIOS=0 OPENCLAW_BUNDLED_CHANNEL_UPDATE_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_ROOT_OWNED_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_SETUP_ENTRY_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_LOAD_FAILURE_SCENARIO=1 OPENCLAW_BUNDLED_CHANNEL_DISABLED_CONFIG_SCENARIO=0",
|
||||
{ stateScenario: "empty" },
|
||||
),
|
||||
bundledChannelScenarioLane(
|
||||
"bundled-channel-disabled-config",
|
||||
"OPENCLAW_BUNDLED_CHANNEL_SCENARIOS=0 OPENCLAW_BUNDLED_CHANNEL_UPDATE_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_ROOT_OWNED_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_SETUP_ENTRY_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_LOAD_FAILURE_SCENARIO=0 OPENCLAW_BUNDLED_CHANNEL_DISABLED_CONFIG_SCENARIO=1",
|
||||
{ stateScenario: "empty" },
|
||||
),
|
||||
];
|
||||
|
||||
@@ -268,6 +273,7 @@ export const mainLanes = [
|
||||
),
|
||||
lane("plugins", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:plugins", {
|
||||
resources: ["npm", "service"],
|
||||
stateScenario: "empty",
|
||||
weight: 6,
|
||||
}),
|
||||
...bundledPluginInstallUninstallLanes,
|
||||
@@ -276,13 +282,14 @@ export const mainLanes = [
|
||||
"OPENCLAW_PLUGINS_E2E_CLAWHUB=0 OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:plugins",
|
||||
{
|
||||
resources: ["npm", "service"],
|
||||
stateScenario: "empty",
|
||||
weight: 6,
|
||||
},
|
||||
),
|
||||
npmLane(
|
||||
"bundled-channel-deps-compat",
|
||||
"OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:bundled-channel-deps:fast",
|
||||
{ resources: ["service"], weight: 3 },
|
||||
{ resources: ["service"], stateScenario: "empty", weight: 3 },
|
||||
),
|
||||
npmLane("plugin-update", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:plugin-update"),
|
||||
serviceLane("config-reload", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:config-reload"),
|
||||
@@ -305,7 +312,7 @@ export const tailLanes = [
|
||||
serviceLane(
|
||||
"openai-web-search-minimal",
|
||||
"OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:openai-web-search-minimal",
|
||||
{ timeoutMs: 8 * 60 * 1000 },
|
||||
{ stateScenario: "empty", timeoutMs: 8 * 60 * 1000 },
|
||||
),
|
||||
liveLane("live-codex-harness", liveDockerScriptCommand("test-live-codex-harness-docker.sh"), {
|
||||
cacheKey: "codex-harness",
|
||||
@@ -408,6 +415,7 @@ export const tailLanes = [
|
||||
const releasePathPluginRuntimeLanes = [
|
||||
lane("plugins", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:plugins", {
|
||||
resources: ["npm", "service"],
|
||||
stateScenario: "empty",
|
||||
weight: 6,
|
||||
}),
|
||||
...bundledPluginInstallUninstallLanes,
|
||||
@@ -422,13 +430,14 @@ const releasePathPluginRuntimeLanes = [
|
||||
serviceLane(
|
||||
"openai-web-search-minimal",
|
||||
"OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:openai-web-search-minimal",
|
||||
{ timeoutMs: 8 * 60 * 1000 },
|
||||
{ stateScenario: "empty", timeoutMs: 8 * 60 * 1000 },
|
||||
),
|
||||
];
|
||||
|
||||
const releasePathPluginRuntimePluginLanes = [
|
||||
lane("plugins", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:plugins", {
|
||||
resources: ["npm", "service"],
|
||||
stateScenario: "empty",
|
||||
weight: 6,
|
||||
}),
|
||||
];
|
||||
@@ -445,7 +454,7 @@ const releasePathPluginRuntimeServiceLanes = [
|
||||
serviceLane(
|
||||
"openai-web-search-minimal",
|
||||
"OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:openai-web-search-minimal",
|
||||
{ timeoutMs: 8 * 60 * 1000 },
|
||||
{ stateScenario: "empty", timeoutMs: 8 * 60 * 1000 },
|
||||
),
|
||||
];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user