ci: shard release docker plugin validation

This commit is contained in:
Peter Steinberger
2026-04-29 11:33:19 +01:00
parent 99950c7f12
commit 6cea276976
9 changed files with 107 additions and 33 deletions

View File

@@ -8,8 +8,8 @@ fi
image="$1"
attempts="${OPENCLAW_DOCKER_PULL_ATTEMPTS:-3}"
timeout_seconds="${OPENCLAW_DOCKER_PULL_TIMEOUT_SECONDS:-480}"
retry_delay_seconds="${OPENCLAW_DOCKER_PULL_RETRY_DELAY_SECONDS:-20}"
timeout_seconds="${OPENCLAW_DOCKER_PULL_TIMEOUT_SECONDS:-180}"
retry_delay_seconds="${OPENCLAW_DOCKER_PULL_RETRY_DELAY_SECONDS:-5}"
if ! [[ "$attempts" =~ ^[1-9][0-9]*$ ]]; then
echo "OPENCLAW_DOCKER_PULL_ATTEMPTS must be a positive integer, got: $attempts" >&2

View File

@@ -32,11 +32,13 @@ for plugin_entry in "${plugin_entries[@]}"; do
IFS=$'\t' read -r plugin_id plugin_dir requires_config <<<"$plugin_entry"
install_log="/tmp/openclaw-install-${plugin_index}.log"
uninstall_log="/tmp/openclaw-uninstall-${plugin_index}.log"
plugin_started_at="$(date +%s)"
echo "Installing bundled plugin: $plugin_id ($plugin_dir)"
node "$OPENCLAW_ENTRY" plugins install "$plugin_id" >"$install_log" 2>&1 || {
cat "$install_log"
exit 1
}
install_finished_at="$(date +%s)"
node "$probe" assert-installed "$plugin_id" "$plugin_dir" "$requires_config"
echo "Uninstalling bundled plugin: $plugin_id ($plugin_dir)"
@@ -44,7 +46,9 @@ for plugin_entry in "${plugin_entries[@]}"; do
cat "$uninstall_log"
exit 1
}
uninstall_finished_at="$(date +%s)"
node "$probe" assert-uninstalled "$plugin_id" "$plugin_dir"
echo "Bundled plugin lifecycle timing: $plugin_id install=$((install_finished_at - plugin_started_at))s uninstall=$((uninstall_finished_at - install_finished_at))s total=$((uninstall_finished_at - plugin_started_at))s"
plugin_index=$((plugin_index + 1))
done

View File

@@ -9,7 +9,7 @@ const LIVE_ACP_TIMEOUT_MS = 20 * 60 * 1000;
const LIVE_CLI_TIMEOUT_MS = 20 * 60 * 1000;
const LIVE_PROFILE_TIMEOUT_MS = 20 * 60 * 1000;
const OPENWEBUI_TIMEOUT_MS = 20 * 60 * 1000;
export const BUNDLED_PLUGIN_INSTALL_UNINSTALL_SHARDS = 8;
export const BUNDLED_PLUGIN_INSTALL_UNINSTALL_SHARDS = 24;
export const LIVE_RETRY_PATTERNS = [
/529\b/i,
@@ -180,7 +180,7 @@ const bundledPluginInstallUninstallLanes = Array.from(
`bundled-plugin-install-uninstall-${index}`,
`OPENCLAW_BUNDLED_PLUGIN_SWEEP_TOTAL=${BUNDLED_PLUGIN_INSTALL_UNINSTALL_SHARDS} OPENCLAW_BUNDLED_PLUGIN_SWEEP_INDEX=${index} OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:bundled-plugin-install-uninstall`,
{
estimateSeconds: 280,
estimateSeconds: 120,
resources: ["npm"],
stateScenario: "empty",
weight: 1,
@@ -563,10 +563,14 @@ const primaryReleasePathChunks = {
"package-update-core": releasePathPackageUpdateCoreLanes,
"plugins-runtime-plugins": releasePathPluginRuntimePluginLanes,
"plugins-runtime-services": releasePathPluginRuntimeServiceLanes,
"plugins-runtime-install-a": bundledPluginInstallUninstallLanes.slice(0, 2),
"plugins-runtime-install-b": bundledPluginInstallUninstallLanes.slice(2, 4),
"plugins-runtime-install-c": bundledPluginInstallUninstallLanes.slice(4, 6),
"plugins-runtime-install-d": bundledPluginInstallUninstallLanes.slice(6),
"plugins-runtime-install-a": bundledPluginInstallUninstallLanes.slice(0, 3),
"plugins-runtime-install-b": bundledPluginInstallUninstallLanes.slice(3, 6),
"plugins-runtime-install-c": bundledPluginInstallUninstallLanes.slice(6, 9),
"plugins-runtime-install-d": bundledPluginInstallUninstallLanes.slice(9, 12),
"plugins-runtime-install-e": bundledPluginInstallUninstallLanes.slice(12, 15),
"plugins-runtime-install-f": bundledPluginInstallUninstallLanes.slice(15, 18),
"plugins-runtime-install-g": bundledPluginInstallUninstallLanes.slice(18, 21),
"plugins-runtime-install-h": bundledPluginInstallUninstallLanes.slice(21),
"bundled-channels-core": [releasePathBundledChannelLanes[0], ...bundledChannelSmokeLanes],
"bundled-channels-update-a": [bundledChannelUpdateLanes[0], bundledChannelUpdateLanes[4]],
"bundled-channels-update-discord": [bundledChannelUpdateLanes[1]],