


























@@ -28,6 +28,11 @@ on:
2828required: false
2929default: ""
3030type: string
31+targeted_docker_lane_group_size:
32+description: Number of targeted Docker lanes to batch into one runner job
33+required: false
34+default: 1
35+type: number
3136package_artifact_name:
3237description: Existing workflow artifact containing openclaw-current.tgz; blank packs the selected ref
3338required: false
@@ -71,7 +76,7 @@ on:
7176release_test_profile:
7277description: Release coverage profile for live/Docker/provider breadth
7378required: false
74-default: full
79+default: stable
7580type: choice
7681options:
7782 - minimum
@@ -103,6 +108,11 @@ on:
103108required: false
104109default: ""
105110type: string
111+targeted_docker_lane_group_size:
112+description: Number of targeted Docker lanes to batch into one runner job
113+required: false
114+default: 1
115+type: number
106116package_artifact_name:
107117description: Existing workflow artifact containing openclaw-current.tgz; blank packs the selected ref
108118required: false
@@ -146,7 +156,7 @@ on:
146156release_test_profile:
147157description: Release coverage profile for live/Docker/provider breadth
148158required: false
149-default: full
159+default: stable
150160type: string
151161secrets:
152162OPENAI_API_KEY:
@@ -374,6 +384,10 @@ jobs:
374384 add_profile_suite native-live-extensions-xai "full"
375385376386 add_profile_suite live-gateway-docker "minimum stable full"
387+ add_profile_suite live-gateway-anthropic-docker "stable full"
388+ add_profile_suite live-gateway-google-docker "stable full"
389+ add_profile_suite live-gateway-minimax-docker "stable full"
390+ add_profile_suite live-gateway-advisory-docker "full"
377391 add_profile_suite live-cli-backend-docker "stable full"
378392 add_profile_suite live-acp-bind-docker "stable full"
379393 add_profile_suite live-codex-harness-docker "stable full"
@@ -815,16 +829,27 @@ jobs:
815829shell: bash
816830env:
817831LANES: ${{ inputs.docker_lanes }}
832+GROUP_SIZE: ${{ inputs.targeted_docker_lane_group_size }}
818833run: |
819834 set -euo pipefail
820835 groups_json="$(
821- LANES="$LANES" node <<'NODE'
836+ LANES="$LANES" GROUP_SIZE="$GROUP_SIZE" node <<'NODE'
822837 const lanes = [...new Set(String(process.env.LANES || "").split(/[,\s]+/u).map((lane) => lane.trim()).filter(Boolean))];
823838 if (lanes.length === 0) {
824839 throw new Error("docker_lanes is required when planning targeted Docker lane groups.");
825840 }
841+ const rawGroupSize = Number.parseInt(process.env.GROUP_SIZE || "1", 10);
842+ const groupSize = Number.isFinite(rawGroupSize) && rawGroupSize > 0 ? rawGroupSize : 1;
826843 const sanitize = (lane) => lane.replace(/[^A-Za-z0-9._-]+/g, "-").replace(/^-+|-+$/g, "") || "targeted";
827- process.stdout.write(JSON.stringify(lanes.map((lane) => ({ label: sanitize(lane), docker_lanes: lane }))));
844+ const groups = [];
845+ for (let index = 0; index < lanes.length; index += groupSize) {
846+ const groupLanes = lanes.slice(index, index + groupSize);
847+ const first = sanitize(groupLanes[0]);
848+ const last = sanitize(groupLanes[groupLanes.length - 1]);
849+ const label = groupLanes.length === 1 ? first : `${first}--${last}`;
850+ groups.push({ label, docker_lanes: groupLanes.join(" ") });
851+ }
852+ process.stdout.write(JSON.stringify(groups));
828853 NODE
829854 )"
830855 echo "groups_json=${groups_json}" >> "$GITHUB_OUTPUT"
@@ -834,7 +859,7 @@ jobs:
834859if: inputs.docker_lanes != ''
835860name: Docker E2E targeted lanes (${{ matrix.group.label }})
836861runs-on: blacksmith-32vcpu-ubuntu-2404
837-timeout-minutes: 180
862+timeout-minutes: 90
838863strategy:
839864fail-fast: false
840865matrix:
@@ -1468,7 +1493,7 @@ jobs:
14681493needs: [validate_selected_ref, prepare_live_test_image]
14691494if: inputs.include_live_suites && inputs.live_model_providers == '' && (inputs.live_suite_filter == '' || inputs.live_suite_filter == 'docker-live-models')
14701495runs-on: blacksmith-32vcpu-ubuntu-2404
1471-timeout-minutes: 75
1496+timeout-minutes: 45
14721497strategy:
14731498fail-fast: false
14741499matrix:
@@ -1536,6 +1561,8 @@ jobs:
15361561FIREWORKS_API_KEY: ${{ secrets.FIREWORKS_API_KEY }}
15371562OPENCLAW_LIVE_PROVIDERS: ${{ matrix.providers }}
15381563OPENCLAW_LIVE_IMAGE: ${{ needs.prepare_live_test_image.outputs.live_image }}
1564+OPENCLAW_LIVE_MAX_MODELS: "6"
1565+OPENCLAW_LIVE_MODEL_TIMEOUT_MS: "45000"
15391566OPENCLAW_SKIP_DOCKER_BUILD: "1"
15401567OPENCLAW_VITEST_MAX_WORKERS: "2"
15411568steps:
@@ -1611,14 +1638,14 @@ jobs:
1611163816121639 - name: Run Docker live model sweep
16131640if: contains(matrix.profiles, inputs.release_test_profile)
1614-run: OPENCLAW_LIVE_DOCKER_REPO_ROOT="$GITHUB_WORKSPACE" bash .release-harness/scripts/test-live-models-docker.sh
1641+run: OPENCLAW_LIVE_DOCKER_REPO_ROOT="$GITHUB_WORKSPACE" timeout --foreground --kill-after=30s 35m bash .release-harness/scripts/test-live-models-docker.sh
1615164216161643validate_live_models_docker_targeted:
16171644name: Docker live models (selected providers)
16181645needs: [validate_selected_ref, prepare_live_test_image]
16191646if: inputs.include_live_suites && inputs.live_model_providers != '' && (inputs.live_suite_filter == '' || inputs.live_suite_filter == 'docker-live-models')
16201647runs-on: blacksmith-32vcpu-ubuntu-2404
1621-timeout-minutes: 75
1648+timeout-minutes: 45
16221649env:
16231650OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
16241651OPENAI_BASE_URL: ${{ secrets.OPENAI_BASE_URL }}
@@ -1655,6 +1682,8 @@ jobs:
16551682FIREWORKS_API_KEY: ${{ secrets.FIREWORKS_API_KEY }}
16561683REQUESTED_LIVE_MODEL_PROVIDERS: ${{ inputs.live_model_providers }}
16571684OPENCLAW_LIVE_IMAGE: ${{ needs.prepare_live_test_image.outputs.live_image }}
1685+OPENCLAW_LIVE_MAX_MODELS: "6"
1686+OPENCLAW_LIVE_MODEL_TIMEOUT_MS: "45000"
16581687OPENCLAW_SKIP_DOCKER_BUILD: "1"
16591688OPENCLAW_VITEST_MAX_WORKERS: "2"
16601689steps:
@@ -1785,7 +1814,7 @@ jobs:
17851814 done
1786181517871816 - name: Run Docker live model sweep
1788-run: OPENCLAW_LIVE_DOCKER_REPO_ROOT="$GITHUB_WORKSPACE" bash .release-harness/scripts/test-live-models-docker.sh
1817+run: OPENCLAW_LIVE_DOCKER_REPO_ROOT="$GITHUB_WORKSPACE" timeout --foreground --kill-after=30s 35m bash .release-harness/scripts/test-live-models-docker.sh
1789181817901819validate_live_provider_suites:
17911820needs: validate_selected_ref
@@ -2099,27 +2128,51 @@ jobs:
20992128matrix:
21002129include:
21012130 - suite_id: live-gateway-docker
2102-label: Docker live gateway
2103-command: OPENCLAW_LIVE_DOCKER_REPO_ROOT="$GITHUB_WORKSPACE" bash .release-harness/scripts/test-live-gateway-models-docker.sh
2104-timeout_minutes: 120
2131+label: Docker live gateway OpenAI
2132+command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=openai OPENCLAW_LIVE_GATEWAY_MAX_MODELS=2 OPENCLAW_LIVE_GATEWAY_STEP_TIMEOUT_MS=30000 OPENCLAW_LIVE_GATEWAY_MODEL_TIMEOUT_MS=60000 OPENCLAW_LIVE_DOCKER_REPO_ROOT="$GITHUB_WORKSPACE" timeout --foreground --kill-after=30s 25m bash .release-harness/scripts/test-live-gateway-models-docker.sh
2133+timeout_minutes: 30
21052134profile_env_only: false
21062135profiles: minimum stable full
2136+ - suite_id: live-gateway-anthropic-docker
2137+label: Docker live gateway Anthropic
2138+command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=anthropic OPENCLAW_LIVE_GATEWAY_MAX_MODELS=2 OPENCLAW_LIVE_GATEWAY_STEP_TIMEOUT_MS=30000 OPENCLAW_LIVE_GATEWAY_MODEL_TIMEOUT_MS=60000 OPENCLAW_LIVE_DOCKER_REPO_ROOT="$GITHUB_WORKSPACE" timeout --foreground --kill-after=30s 25m bash .release-harness/scripts/test-live-gateway-models-docker.sh
2139+timeout_minutes: 30
2140+profile_env_only: false
2141+profiles: stable full
2142+ - suite_id: live-gateway-google-docker
2143+label: Docker live gateway Google
2144+command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=google OPENCLAW_LIVE_GATEWAY_MODELS=google/gemini-3.1-pro-preview,google/gemini-3-flash-preview OPENCLAW_LIVE_GATEWAY_MAX_MODELS=2 OPENCLAW_LIVE_GATEWAY_STEP_TIMEOUT_MS=30000 OPENCLAW_LIVE_GATEWAY_MODEL_TIMEOUT_MS=60000 OPENCLAW_LIVE_DOCKER_REPO_ROOT="$GITHUB_WORKSPACE" timeout --foreground --kill-after=30s 25m bash .release-harness/scripts/test-live-gateway-models-docker.sh
2145+timeout_minutes: 30
2146+profile_env_only: false
2147+profiles: stable full
2148+ - suite_id: live-gateway-minimax-docker
2149+label: Docker live gateway MiniMax
2150+command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=minimax,minimax-portal OPENCLAW_LIVE_GATEWAY_MAX_MODELS=2 OPENCLAW_LIVE_GATEWAY_STEP_TIMEOUT_MS=30000 OPENCLAW_LIVE_GATEWAY_MODEL_TIMEOUT_MS=60000 OPENCLAW_LIVE_DOCKER_REPO_ROOT="$GITHUB_WORKSPACE" timeout --foreground --kill-after=30s 25m bash .release-harness/scripts/test-live-gateway-models-docker.sh
2151+timeout_minutes: 30
2152+profile_env_only: false
2153+profiles: stable full
2154+ - suite_id: live-gateway-advisory-docker
2155+label: Docker live gateway advisory providers
2156+command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=deepseek,fireworks,opencode-go,openrouter,xai,zai OPENCLAW_LIVE_GATEWAY_MAX_MODELS=6 OPENCLAW_LIVE_GATEWAY_STEP_TIMEOUT_MS=30000 OPENCLAW_LIVE_GATEWAY_MODEL_TIMEOUT_MS=60000 OPENCLAW_LIVE_DOCKER_REPO_ROOT="$GITHUB_WORKSPACE" timeout --foreground --kill-after=30s 35m bash .release-harness/scripts/test-live-gateway-models-docker.sh
2157+timeout_minutes: 40
2158+profile_env_only: false
2159+profiles: full
21072160 - suite_id: live-cli-backend-docker
21082161label: Docker live CLI backend
2109-command: OPENCLAW_LIVE_DOCKER_REPO_ROOT="$GITHUB_WORKSPACE" bash .release-harness/scripts/test-live-cli-backend-docker.sh
2110-timeout_minutes: 120
2162+command: OPENCLAW_LIVE_DOCKER_REPO_ROOT="$GITHUB_WORKSPACE" timeout --foreground --kill-after=30s 45m bash .release-harness/scripts/test-live-cli-backend-docker.sh
2163+timeout_minutes: 50
21112164profile_env_only: false
21122165profiles: stable full
21132166 - suite_id: live-acp-bind-docker
21142167label: Docker live ACP bind
2115-command: OPENCLAW_LIVE_DOCKER_REPO_ROOT="$GITHUB_WORKSPACE" bash .release-harness/scripts/test-live-acp-bind-docker.sh
2116-timeout_minutes: 120
2168+command: OPENCLAW_LIVE_DOCKER_REPO_ROOT="$GITHUB_WORKSPACE" timeout --foreground --kill-after=30s 45m bash .release-harness/scripts/test-live-acp-bind-docker.sh
2169+timeout_minutes: 50
21172170profile_env_only: false
21182171profiles: stable full
21192172 - suite_id: live-codex-harness-docker
21202173label: Docker live Codex harness
2121-command: OPENCLAW_LIVE_DOCKER_REPO_ROOT="$GITHUB_WORKSPACE" bash .release-harness/scripts/test-live-codex-harness-docker.sh
2122-timeout_minutes: 120
2174+command: OPENCLAW_LIVE_DOCKER_REPO_ROOT="$GITHUB_WORKSPACE" timeout --foreground --kill-after=30s 35m bash .release-harness/scripts/test-live-codex-harness-docker.sh
2175+timeout_minutes: 40
21232176profile_env_only: false
21242177profiles: stable full
21252178env:
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。