ci: speed up release validation shards

This commit is contained in:
Peter Steinberger
2026-04-28 06:14:13 +01:00
parent 3d53b39917
commit 017b8db616
7 changed files with 223 additions and 44 deletions

View File

@@ -122,10 +122,13 @@ export function laneResources(poolLane) {
export function laneSummary(poolLane) {
const resources = laneResources(poolLane).join(",");
const timeout = poolLane.timeoutMs ? ` timeout=${Math.round(poolLane.timeoutMs / 1000)}s` : "";
const noOutputTimeout = poolLane.noOutputTimeoutMs
? ` no-output=${Math.round(poolLane.noOutputTimeoutMs / 1000)}s`
: "";
const retries = poolLane.retries > 0 ? ` retries=${poolLane.retries}` : "";
const cache = poolLane.cacheKey ? ` cache=${poolLane.cacheKey}` : "";
const image = poolLane.e2eImageKind ? ` image=${poolLane.e2eImageKind}` : "";
return `${poolLane.name}(w=${laneWeight(poolLane)} r=${resources}${timeout}${retries}${cache}${image})`;
return `${poolLane.name}(w=${laneWeight(poolLane)} r=${resources}${timeout}${noOutputTimeout}${retries}${cache}${image})`;
}
export function lanesNeedE2eImageKind(poolLanes, kind) {
@@ -179,6 +182,7 @@ export function buildPlanJson(params) {
imageKind: poolLane.e2eImageKind,
live: poolLane.live,
name: poolLane.name,
noOutputTimeoutMs: poolLane.noOutputTimeoutMs,
resources: laneResources(poolLane),
timeoutMs: poolLane.timeoutMs,
weight: laneWeight(poolLane),

View File

@@ -2,7 +2,8 @@
// Keep lane names, commands, image kind, timeout, resources, and release chunks
// here. Planning and execution live in separate modules.
const BUNDLED_UPDATE_TIMEOUT_MS = 20 * 60 * 1000;
const BUNDLED_UPDATE_NO_OUTPUT_TIMEOUT_MS = 4 * 60 * 1000;
const BUNDLED_UPDATE_TIMEOUT_MS = 6 * 60 * 1000;
export const DEFAULT_LIVE_RETRIES = 1;
const LIVE_ACP_TIMEOUT_MS = 20 * 60 * 1000;
const LIVE_CLI_TIMEOUT_MS = 20 * 60 * 1000;
@@ -37,6 +38,7 @@ function lane(name, command, options = {}) {
: (options.e2eImageKind ?? (options.live ? undefined : "functional")),
estimateSeconds: options.estimateSeconds,
live: options.live === true,
noOutputTimeoutMs: options.noOutputTimeoutMs,
name,
retryPatterns: options.retryPatterns ?? [],
retries: options.retries ?? 0,
@@ -131,7 +133,12 @@ const bundledChannelUpdateLanes = [
bundledChannelScenarioLane(
`bundled-channel-update-${target}`,
`OPENCLAW_BUNDLED_CHANNEL_SCENARIOS=0 OPENCLAW_BUNDLED_CHANNEL_UPDATE_SCENARIO=1 OPENCLAW_BUNDLED_CHANNEL_UPDATE_TARGETS=${target} 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=0`,
{ retryPatterns: LIVE_RETRY_PATTERNS, retries: 1, timeoutMs: BUNDLED_UPDATE_TIMEOUT_MS },
{
noOutputTimeoutMs: BUNDLED_UPDATE_NO_OUTPUT_TIMEOUT_MS,
retryPatterns: LIVE_RETRY_PATTERNS,
retries: 1,
timeoutMs: BUNDLED_UPDATE_TIMEOUT_MS,
},
),
);
@@ -505,11 +512,8 @@ const primaryReleasePathChunks = {
"plugins-runtime-install-a": bundledPluginInstallUninstallLanes.slice(0, 4),
"plugins-runtime-install-b": bundledPluginInstallUninstallLanes.slice(4),
"bundled-channels-core": [releasePathBundledChannelLanes[0], ...bundledChannelSmokeLanes],
"bundled-channels-update-a": [
bundledChannelUpdateLanes[0],
bundledChannelUpdateLanes[1],
bundledChannelUpdateLanes[4],
],
"bundled-channels-update-a": [bundledChannelUpdateLanes[0], bundledChannelUpdateLanes[4]],
"bundled-channels-update-discord": [bundledChannelUpdateLanes[1]],
"bundled-channels-update-b": [
bundledChannelUpdateLanes[2],
bundledChannelUpdateLanes[3],
@@ -528,6 +532,11 @@ const legacyReleasePathChunks = {
"plugins-runtime": releasePathPluginRuntimeLanes,
"plugins-integrations": [...releasePathPluginRuntimeLanes, ...releasePathBundledChannelLanes],
"bundled-channels": releasePathBundledChannelLanes,
"bundled-channels-update-a-legacy": [
bundledChannelUpdateLanes[0],
bundledChannelUpdateLanes[1],
bundledChannelUpdateLanes[4],
],
};
function openWebUILane() {