From d1c8f09b006e0b1e01ca60ac725aa80a2e702a31 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Tue, 26 May 2026 15:57:01 +0200 Subject: [PATCH] fix(ci): bound crabbox hydrate downloads --- .github/workflows/crabbox-hydrate.yml | 30 ++++++++++++++++--- .../package-acceptance-workflow.test.ts | 5 ++++ 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/.github/workflows/crabbox-hydrate.yml b/.github/workflows/crabbox-hydrate.yml index c78525e60a0..ac3051c6c12 100644 --- a/.github/workflows/crabbox-hydrate.yml +++ b/.github/workflows/crabbox-hydrate.yml @@ -141,7 +141,13 @@ jobs: if ! command -v docker >/dev/null 2>&1; then echo "docker not found; installing fallback engine" - curl -fsSL https://get.docker.com | sudo sh + curl --fail --show-error --location \ + --connect-timeout "${OPENCLAW_CRABBOX_HYDRATE_DOWNLOAD_CONNECT_TIMEOUT_SECONDS:-15}" \ + --max-time "${OPENCLAW_CRABBOX_HYDRATE_DOWNLOAD_TIMEOUT_SECONDS:-300}" \ + --retry "${OPENCLAW_CRABBOX_HYDRATE_DOWNLOAD_RETRIES:-3}" \ + --retry-delay "${OPENCLAW_CRABBOX_HYDRATE_DOWNLOAD_RETRY_DELAY_SECONDS:-5}" \ + --retry-all-errors \ + https://get.docker.com | sudo sh fi if command -v systemctl >/dev/null 2>&1; then @@ -166,7 +172,12 @@ jobs: esac buildx_version="${DOCKER_BUILDX_VERSION:-v0.15.1}" mkdir -p "$HOME/.docker/cli-plugins" - curl -fsSL \ + curl --fail --show-error --location \ + --connect-timeout "${OPENCLAW_CRABBOX_HYDRATE_DOWNLOAD_CONNECT_TIMEOUT_SECONDS:-15}" \ + --max-time "${OPENCLAW_CRABBOX_HYDRATE_DOWNLOAD_TIMEOUT_SECONDS:-300}" \ + --retry "${OPENCLAW_CRABBOX_HYDRATE_DOWNLOAD_RETRIES:-3}" \ + --retry-delay "${OPENCLAW_CRABBOX_HYDRATE_DOWNLOAD_RETRY_DELAY_SECONDS:-5}" \ + --retry-all-errors \ "https://github.com/docker/buildx/releases/download/${buildx_version}/buildx-${buildx_version}.linux-${buildx_arch}" \ -o "$HOME/.docker/cli-plugins/docker-buildx" chmod 0755 "$HOME/.docker/cli-plugins/docker-buildx" @@ -307,7 +318,13 @@ jobs: if ! command -v docker >/dev/null 2>&1; then echo "docker not found; installing fallback engine" - curl -fsSL https://get.docker.com | sudo sh + curl --fail --show-error --location \ + --connect-timeout "${OPENCLAW_CRABBOX_HYDRATE_DOWNLOAD_CONNECT_TIMEOUT_SECONDS:-15}" \ + --max-time "${OPENCLAW_CRABBOX_HYDRATE_DOWNLOAD_TIMEOUT_SECONDS:-300}" \ + --retry "${OPENCLAW_CRABBOX_HYDRATE_DOWNLOAD_RETRIES:-3}" \ + --retry-delay "${OPENCLAW_CRABBOX_HYDRATE_DOWNLOAD_RETRY_DELAY_SECONDS:-5}" \ + --retry-all-errors \ + https://get.docker.com | sudo sh fi if command -v systemctl >/dev/null 2>&1; then @@ -332,7 +349,12 @@ jobs: esac buildx_version="${DOCKER_BUILDX_VERSION:-v0.15.1}" mkdir -p "$HOME/.docker/cli-plugins" - curl -fsSL \ + curl --fail --show-error --location \ + --connect-timeout "${OPENCLAW_CRABBOX_HYDRATE_DOWNLOAD_CONNECT_TIMEOUT_SECONDS:-15}" \ + --max-time "${OPENCLAW_CRABBOX_HYDRATE_DOWNLOAD_TIMEOUT_SECONDS:-300}" \ + --retry "${OPENCLAW_CRABBOX_HYDRATE_DOWNLOAD_RETRIES:-3}" \ + --retry-delay "${OPENCLAW_CRABBOX_HYDRATE_DOWNLOAD_RETRY_DELAY_SECONDS:-5}" \ + --retry-all-errors \ "https://github.com/docker/buildx/releases/download/${buildx_version}/buildx-${buildx_version}.linux-${buildx_arch}" \ -o "$HOME/.docker/cli-plugins/docker-buildx" chmod 0755 "$HOME/.docker/cli-plugins/docker-buildx" diff --git a/test/scripts/package-acceptance-workflow.test.ts b/test/scripts/package-acceptance-workflow.test.ts index d9f739fd946..abe6b9fc7c9 100644 --- a/test/scripts/package-acceptance-workflow.test.ts +++ b/test/scripts/package-acceptance-workflow.test.ts @@ -122,6 +122,7 @@ describe("package acceptance workflow", () => { actions?: { job?: string }; }; const workflow = readWorkflow(CRABBOX_HYDRATE_WORKFLOW); + const workflowText = readFileSync(CRABBOX_HYDRATE_WORKFLOW, "utf8"); const hydrate = workflowJob(CRABBOX_HYDRATE_WORKFLOW, "hydrate"); const hydrateGithub = workflowJob(CRABBOX_HYDRATE_WORKFLOW, "hydrate-github"); @@ -135,6 +136,10 @@ describe("package acceptance workflow", () => { expect(workflowStep(hydrate, "Setup pnpm and dependencies").run).toContain("COREPACK_HOME"); expect(workflowStep(hydrate, "Mark Crabbox ready").run).toContain("COREPACK_HOME"); expect(workflowStep(hydrate, "Hydrate provider env helper").env).toBeUndefined(); + expect(workflowText).toContain("OPENCLAW_CRABBOX_HYDRATE_DOWNLOAD_TIMEOUT_SECONDS:-300"); + expect(workflowText).toContain("OPENCLAW_CRABBOX_HYDRATE_DOWNLOAD_RETRIES:-3"); + expect(workflowText).toContain("--retry-all-errors"); + expect(workflowText).not.toContain("curl -fsSL https://get.docker.com | sudo sh"); expect(hydrateGithub.if).toBe("${{ inputs.crabbox_job == 'hydrate-github' }}"); expect(workflowStep(hydrateGithub, "Setup Node environment").uses).toBe(