fix(qa-lab): prevent Slack desktop bootstrap hangs (#108161)

* fix(qa-lab): bound Slack installer downloads

* fix(qa-lab): bound Slack installer retry window
This commit is contained in:
Alix-007
2026-07-16 13:35:24 +08:00
committed by GitHub
parent e7cba0e4d5
commit 24e96bd8c1
2 changed files with 25 additions and 6 deletions
@@ -200,14 +200,29 @@ describe("mantis Slack desktop smoke runtime", () => {
expect(remoteScript).toContain("build-essential python3");
expect(remoteScript).toContain("node_supports_type_stripping");
expect(remoteScript).toContain("scripts/crabbox-untrusted-bootstrap.sh");
expect(remoteScript).toContain("https://nodejs.org/dist/v$node_version");
expect(remoteScript).toContain(
"curl -fsSL --connect-timeout 10 --max-time 120 https://deb.nodesource.com/setup_22.x",
);
expect(remoteScript).toContain(
'curl -fsSL --connect-timeout 10 --max-time 120 --retry 3 --retry-max-time 120 --retry-all-errors "$node_base_url/SHASUMS256.txt"',
);
expect(remoteScript).toContain(
'curl -fsSL --connect-timeout 10 --max-time 120 --retry 3 --retry-max-time 120 --retry-all-errors "$node_base_url/$node_archive"',
);
expect(remoteScript).toContain('grep " $node_archive$" SHASUMS256.txt | sha256sum -c -');
expect(remoteScript).toContain('export PATH="$node_root/bin:$PATH"');
expect(remoteScript).toContain("packageManager ??");
expect(remoteScript).toContain("[0-9a-f]{128}");
expect(remoteScript).toContain('console.log(match[1] + " " + match[2])');
expect(remoteScript).toContain('active_pnpm_version="$(pnpm --version 2>/dev/null || true)"');
expect(remoteScript).toContain("https://registry.npmjs.org/pnpm/-/pnpm-$pnpm_version.tgz");
expect(remoteScript).toContain(
"curl -fsSL --connect-timeout 10 --max-time 120 --retry 3 --retry-max-time 120 --retry-all-errors",
);
expect(remoteScript).toContain('"https://registry.npmjs.org/pnpm/-/pnpm-$pnpm_version.tgz"');
expect(remoteScript?.match(/--connect-timeout 10 --max-time 120/gu)?.length).toBe(4);
expect(remoteScript?.match(/--retry 3 --retry-max-time 120 --retry-all-errors/gu)?.length).toBe(
3,
);
expect(remoteScript).toContain('sha512sum "$pnpm_archive"');
expect(remoteScript).toContain('chmod +x "$pnpm_cli"');
expect(remoteScript).toContain('ln -sfn "$pnpm_cli" "$pnpm_bin_dir/pnpm"');
@@ -596,7 +596,7 @@ if [ -n "\${OPENCLAW_LIVE_OPENAI_KEY:-}" ] && [ -z "\${OPENAI_API_KEY:-}" ]; the
fi
if ! command -v node >/dev/null 2>&1; then
sudo apt-get update -y >"$out/node-apt.log" 2>&1
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - >>"$out/node-apt.log" 2>&1
curl -fsSL --connect-timeout 10 --max-time 120 https://deb.nodesource.com/setup_22.x | sudo -E bash - >>"$out/node-apt.log" 2>&1
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y nodejs >>"$out/node-apt.log" 2>&1
fi
if ! command -v scrot >/dev/null 2>&1; then
@@ -726,9 +726,11 @@ run_mantis_remote_body() {
node_tmp="$(mktemp -d)"
node_archive="node-v$node_version-linux-$node_arch.tar.xz"
node_base_url="https://nodejs.org/dist/v$node_version"
curl -fsSL --retry 3 --retry-all-errors "$node_base_url/SHASUMS256.txt" \
# Retry quick transient failures within 120 seconds, but do not start
# another long transfer after an attempt consumes that full deadline.
curl -fsSL --connect-timeout 10 --max-time 120 --retry 3 --retry-max-time 120 --retry-all-errors "$node_base_url/SHASUMS256.txt" \
-o "$node_tmp/SHASUMS256.txt"
curl -fsSL --retry 3 --retry-all-errors "$node_base_url/$node_archive" \
curl -fsSL --connect-timeout 10 --max-time 120 --retry 3 --retry-max-time 120 --retry-all-errors "$node_base_url/$node_archive" \
-o "$node_tmp/$node_archive"
(cd "$node_tmp" && grep " $node_archive$" SHASUMS256.txt | sha256sum -c -)
rm -rf "$node_root"
@@ -757,7 +759,9 @@ console.log(match[1] + " " + match[2]);
pnpm_root="$out/pnpm-$pnpm_version"
pnpm_archive="$pnpm_root/pnpm.tgz"
mkdir -p "$pnpm_root"
curl -fsSL --retry 3 --retry-all-errors \
# Retry quick transient failures within 120 seconds, but do not start
# another long transfer after an attempt consumes that full deadline.
curl -fsSL --connect-timeout 10 --max-time 120 --retry 3 --retry-max-time 120 --retry-all-errors \
"https://registry.npmjs.org/pnpm/-/pnpm-$pnpm_version.tgz" \
-o "$pnpm_archive"
downloaded_pnpm_sha512="$(sha512sum "$pnpm_archive" | awk '{print $1}')"