mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 06:10:44 +00:00
ci: split native live release shards
This commit is contained in:
@@ -275,16 +275,25 @@ job:
|
||||
|
||||
- `native-live-src-agents`
|
||||
- `native-live-src-gateway-core`
|
||||
- `native-live-src-gateway-profiles` (release CI runs this with provider
|
||||
filters such as `OPENCLAW_LIVE_GATEWAY_PROVIDERS=anthropic`)
|
||||
- `native-live-src-gateway-backends`
|
||||
- `native-live-test`
|
||||
- `native-live-extensions-a-k`
|
||||
- `native-live-extensions-l-n`
|
||||
- `native-live-extensions-openai`
|
||||
- `native-live-extensions-o-z`
|
||||
- `native-live-extensions-o-z-other`
|
||||
- `native-live-extensions-xai`
|
||||
- `native-live-extensions-media`
|
||||
- `native-live-extensions-media-audio`
|
||||
- `native-live-extensions-media-music`
|
||||
- `native-live-extensions-media-video`
|
||||
|
||||
Use `node scripts/test-live-shard.mjs <shard> --list` to see the exact files
|
||||
before rerunning a failed native live shard.
|
||||
before rerunning a failed native live shard. The aggregate `o-z` and `media`
|
||||
shards remain useful locally; release CI uses the smaller provider/media shards
|
||||
so one live-provider flake does not force a broad native live rerun.
|
||||
|
||||
For model-list or provider-selection fixes, use `live_models_only=true` plus the
|
||||
specific `live_model_providers` allowlist. Confirm logs show the expected
|
||||
|
||||
@@ -1491,6 +1491,42 @@ jobs:
|
||||
timeout_minutes: 90
|
||||
needs_ffmpeg: false
|
||||
profile_env_only: false
|
||||
- suite_id: native-live-src-gateway-profiles-anthropic
|
||||
label: Native live gateway profiles Anthropic
|
||||
command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=anthropic node scripts/test-live-shard.mjs native-live-src-gateway-profiles
|
||||
timeout_minutes: 90
|
||||
needs_ffmpeg: false
|
||||
profile_env_only: false
|
||||
- suite_id: native-live-src-gateway-profiles-google
|
||||
label: Native live gateway profiles Google
|
||||
command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=google node scripts/test-live-shard.mjs native-live-src-gateway-profiles
|
||||
timeout_minutes: 90
|
||||
needs_ffmpeg: false
|
||||
profile_env_only: false
|
||||
- suite_id: native-live-src-gateway-profiles-minimax
|
||||
label: Native live gateway profiles MiniMax
|
||||
command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=minimax,minimax-portal node scripts/test-live-shard.mjs native-live-src-gateway-profiles
|
||||
timeout_minutes: 90
|
||||
needs_ffmpeg: false
|
||||
profile_env_only: false
|
||||
- suite_id: native-live-src-gateway-profiles-openai
|
||||
label: Native live gateway profiles OpenAI
|
||||
command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=openai node scripts/test-live-shard.mjs native-live-src-gateway-profiles
|
||||
timeout_minutes: 90
|
||||
needs_ffmpeg: false
|
||||
profile_env_only: false
|
||||
- suite_id: native-live-src-gateway-profiles-fireworks
|
||||
label: Native live gateway profiles Fireworks
|
||||
command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=fireworks node scripts/test-live-shard.mjs native-live-src-gateway-profiles
|
||||
timeout_minutes: 90
|
||||
needs_ffmpeg: false
|
||||
profile_env_only: false
|
||||
- suite_id: native-live-src-gateway-profiles-other
|
||||
label: Native live gateway profiles other providers
|
||||
command: OPENCLAW_LIVE_GATEWAY_PROVIDERS=deepseek,opencode-go,openrouter,xai,zai node scripts/test-live-shard.mjs native-live-src-gateway-profiles
|
||||
timeout_minutes: 90
|
||||
needs_ffmpeg: false
|
||||
profile_env_only: false
|
||||
- suite_id: native-live-src-gateway-backends
|
||||
label: Native live gateway backends
|
||||
command: node scripts/test-live-shard.mjs native-live-src-gateway-backends
|
||||
@@ -1521,15 +1557,33 @@ jobs:
|
||||
timeout_minutes: 90
|
||||
needs_ffmpeg: false
|
||||
profile_env_only: false
|
||||
- suite_id: native-live-extensions-o-z
|
||||
label: Native live plugins O-Z
|
||||
command: node scripts/test-live-shard.mjs native-live-extensions-o-z
|
||||
- suite_id: native-live-extensions-o-z-other
|
||||
label: Native live plugins O-Z other
|
||||
command: node scripts/test-live-shard.mjs native-live-extensions-o-z-other
|
||||
timeout_minutes: 90
|
||||
needs_ffmpeg: false
|
||||
profile_env_only: false
|
||||
- suite_id: native-live-extensions-media
|
||||
label: Native live media plugins
|
||||
command: node scripts/test-live-shard.mjs native-live-extensions-media
|
||||
- suite_id: native-live-extensions-xai
|
||||
label: Native live xAI plugin
|
||||
command: node scripts/test-live-shard.mjs native-live-extensions-xai
|
||||
timeout_minutes: 90
|
||||
needs_ffmpeg: false
|
||||
profile_env_only: false
|
||||
- suite_id: native-live-extensions-media-audio
|
||||
label: Native live media audio plugins
|
||||
command: node scripts/test-live-shard.mjs native-live-extensions-media-audio
|
||||
timeout_minutes: 90
|
||||
needs_ffmpeg: false
|
||||
profile_env_only: false
|
||||
- suite_id: native-live-extensions-media-music
|
||||
label: Native live media music plugins
|
||||
command: node scripts/test-live-shard.mjs native-live-extensions-media-music
|
||||
timeout_minutes: 90
|
||||
needs_ffmpeg: true
|
||||
profile_env_only: false
|
||||
- suite_id: native-live-extensions-media-video
|
||||
label: Native live media video plugins
|
||||
command: node scripts/test-live-shard.mjs native-live-extensions-media-video
|
||||
timeout_minutes: 90
|
||||
needs_ffmpeg: true
|
||||
profile_env_only: false
|
||||
|
||||
14
docs/ci.md
14
docs/ci.md
@@ -28,13 +28,17 @@ release box rerun bounded after a focused fix.
|
||||
|
||||
The release live/E2E child keeps broad native `pnpm test:live` coverage, but it
|
||||
runs it as named shards (`native-live-src-agents`,
|
||||
`native-live-src-gateway-core`, `native-live-src-gateway-backends`,
|
||||
`native-live-test`, `native-live-extensions-a-k`,
|
||||
`native-live-extensions-l-n`, `native-live-extensions-openai`,
|
||||
`native-live-extensions-o-z`, and `native-live-extensions-media`) through
|
||||
`native-live-src-gateway-core`, provider-filtered
|
||||
`native-live-src-gateway-profiles` jobs,
|
||||
`native-live-src-gateway-backends`, `native-live-test`,
|
||||
`native-live-extensions-a-k`, `native-live-extensions-l-n`,
|
||||
`native-live-extensions-openai`, `native-live-extensions-o-z-other`,
|
||||
`native-live-extensions-xai`, and split media audio/music/video shards) through
|
||||
`scripts/test-live-shard.mjs` instead of one serial job. That keeps the same
|
||||
file coverage while making slow live provider failures easier to rerun and
|
||||
diagnose.
|
||||
diagnose. The aggregate `native-live-extensions-o-z` and
|
||||
`native-live-extensions-media` shard names remain valid for manual one-shot
|
||||
reruns.
|
||||
|
||||
`Package Acceptance` is the side-run workflow for validating a package artifact
|
||||
without blocking the release workflow. It resolves one candidate from a
|
||||
|
||||
@@ -9,13 +9,19 @@ const LIVE_TEST_SUFFIX = ".live.test.ts";
|
||||
export const LIVE_TEST_SHARDS = Object.freeze([
|
||||
"native-live-src-agents",
|
||||
"native-live-src-gateway-core",
|
||||
"native-live-src-gateway-profiles",
|
||||
"native-live-src-gateway-backends",
|
||||
"native-live-test",
|
||||
"native-live-extensions-a-k",
|
||||
"native-live-extensions-l-n",
|
||||
"native-live-extensions-openai",
|
||||
"native-live-extensions-o-z",
|
||||
"native-live-extensions-o-z-other",
|
||||
"native-live-extensions-xai",
|
||||
"native-live-extensions-media",
|
||||
"native-live-extensions-media-audio",
|
||||
"native-live-extensions-media-music",
|
||||
"native-live-extensions-media-video",
|
||||
]);
|
||||
|
||||
function walkFiles(rootDir) {
|
||||
@@ -83,6 +89,10 @@ function isGatewayBackendLiveTest(file) {
|
||||
);
|
||||
}
|
||||
|
||||
function isGatewayProfilesLiveTest(file) {
|
||||
return file === "src/gateway/gateway-models.profiles.live.test.ts";
|
||||
}
|
||||
|
||||
function isExtensionMediaLiveTest(file) {
|
||||
return (
|
||||
file === "extensions/music-generation-providers.live.test.ts" ||
|
||||
@@ -94,6 +104,26 @@ function isExtensionMediaLiveTest(file) {
|
||||
);
|
||||
}
|
||||
|
||||
function isExtensionMediaMusicLiveTest(file) {
|
||||
return file === "extensions/music-generation-providers.live.test.ts";
|
||||
}
|
||||
|
||||
function isExtensionMediaVideoLiveTest(file) {
|
||||
return file === "extensions/video-generation-providers.live.test.ts";
|
||||
}
|
||||
|
||||
function isExtensionMediaAudioLiveTest(file) {
|
||||
return (
|
||||
isExtensionMediaLiveTest(file) &&
|
||||
!isExtensionMediaMusicLiveTest(file) &&
|
||||
!isExtensionMediaVideoLiveTest(file)
|
||||
);
|
||||
}
|
||||
|
||||
function isXaiLiveTest(file) {
|
||||
return file.startsWith("extensions/xai/");
|
||||
}
|
||||
|
||||
export function selectLiveShardFiles(shard, files = collectAllLiveTestFiles()) {
|
||||
switch (shard) {
|
||||
case "native-live-src-agents":
|
||||
@@ -106,8 +136,11 @@ export function selectLiveShardFiles(shard, files = collectAllLiveTestFiles()) {
|
||||
return files.filter(
|
||||
(file) =>
|
||||
(file.startsWith("src/gateway/") || file.startsWith("src/crestodian/")) &&
|
||||
!isGatewayBackendLiveTest(file),
|
||||
!isGatewayBackendLiveTest(file) &&
|
||||
!isGatewayProfilesLiveTest(file),
|
||||
);
|
||||
case "native-live-src-gateway-profiles":
|
||||
return files.filter(isGatewayProfilesLiveTest);
|
||||
case "native-live-src-gateway-backends":
|
||||
return files.filter(isGatewayBackendLiveTest);
|
||||
case "native-live-test":
|
||||
@@ -132,8 +165,24 @@ export function selectLiveShardFiles(shard, files = collectAllLiveTestFiles()) {
|
||||
!file.startsWith("extensions/openai/") &&
|
||||
!isExtensionMediaLiveTest(file),
|
||||
);
|
||||
case "native-live-extensions-o-z-other":
|
||||
return files.filter(
|
||||
(file) =>
|
||||
isExtensionInRange(file, "o", "z") &&
|
||||
!file.startsWith("extensions/openai/") &&
|
||||
!isExtensionMediaLiveTest(file) &&
|
||||
!isXaiLiveTest(file),
|
||||
);
|
||||
case "native-live-extensions-xai":
|
||||
return files.filter(isXaiLiveTest);
|
||||
case "native-live-extensions-media":
|
||||
return files.filter(isExtensionMediaLiveTest);
|
||||
case "native-live-extensions-media-audio":
|
||||
return files.filter(isExtensionMediaAudioLiveTest);
|
||||
case "native-live-extensions-media-music":
|
||||
return files.filter(isExtensionMediaMusicLiveTest);
|
||||
case "native-live-extensions-media-video":
|
||||
return files.filter(isExtensionMediaVideoLiveTest);
|
||||
case "native-live-extensions-l-z":
|
||||
return files.filter((file) => isExtensionInRange(file, "l", "z"));
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user