Skip to content

Use builds.clickhouse.com as primary download source#76

Merged
sdairs merged 5 commits intomainfrom
issue-74-download-sources
Apr 1, 2026
Merged

Use builds.clickhouse.com as primary download source#76
sdairs merged 5 commits intomainfrom
issue-74-download-sources

Conversation

@sdairs
Copy link
Copy Markdown
Collaborator

@sdairs sdairs commented Apr 1, 2026

Summary

  • Switches primary download source from GitHub releases to builds.clickhouse.com (single binaries, no extraction needed)
  • Transparent fallback to packages.clickhouse.com (Linux) and GitHub releases (macOS) for exact patch versions or older releases not on builds
  • New version spec support: latest, stable, lts, major (25), minor (25.12), exact (25.12.9.61)
  • Post-download version detection via clickhouse --version for builds source (stores under exact version)
  • Minor-prefix dedup: install 25.12 skips download if 25.12.* already installed, hints --force
  • local list --remote now probes builds.clickhouse.com with HEAD requests instead of GitHub API
  • Adds --force flag to install command
  • New modules: spec.rs (version parsing, 12 tests), platform.rs (URL construction for 3 sources, 22 tests)
  • New GitHub Actions CI workflow (test-install.yml) with unit tests, URL probing (4-platform matrix), and full install integration tests (ubuntu + macos)

Download source strategy

Spec Primary Fallback
latest builds/master
stable / lts GH API → minor → builds packages (Linux) / GH (macOS)
25 (major) Probe builds for highest 25.x GH API → packages/GH
25.12 (minor) builds/25.12 GH API → packages/GH
25.12.9.61 (exact) packages (Linux) / GH (macOS)

Test plan

  • cargo test — 192 unit tests pass (including 39 new tests across spec, platform, resolve, install)
  • cargo clippy — no new warnings
  • CI workflow runs on this PR (unit tests, URL probing, install integration tests on ubuntu + macos)
  • Manual: clickhousectl local install latest downloads from builds, detects version, stores correctly
  • Manual: clickhousectl local install 25.12 downloads from builds, second run skips with hint
  • Manual: clickhousectl local install 25.12 --force re-downloads
  • Manual: clickhousectl local list --remote shows versions from builds probing

Closes #74

🤖 Generated with Claude Code

Switch from GitHub releases to builds.clickhouse.com as the primary
download source for ClickHouse binaries, with transparent fallback to
packages.clickhouse.com (Linux) and GitHub releases (macOS) for exact
patch versions or older releases not available on builds.

New version spec support: latest, stable, lts, major (25), minor (25.12),
and exact 4-part (25.12.9.61). Post-download version detection via
`clickhouse --version` for builds source. Minor-prefix dedup avoids
redundant ~150MB downloads. Remote list now probes builds instead of
GitHub API.

New modules: spec.rs (version parsing), platform.rs (URL construction
for all 3 sources). Adds --force flag to install command. Includes
GitHub Actions CI workflow for install integration tests.

Closes #74

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@sdairs sdairs requested a review from iskakaushik as a code owner April 1, 2026 13:50
@sdairs sdairs temporarily deployed to cloud-integration April 1, 2026 13:50 — with GitHub Actions Inactive
sdairs and others added 4 commits April 1, 2026 14:53
The minor-prefix dedup intentionally returns Ok with the existing
version rather than erroring. Update the CI test to verify the
"already installed" message instead of expecting failure.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The previous fallback used list_available_versions() which only fetches
100 releases — not enough to find older versions like 25.2. Replace with
targeted matching-refs API calls (e.g., /git/matching-refs/tags/v25.2.)
which find versions regardless of age in a single request.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@sdairs sdairs temporarily deployed to cloud-integration April 1, 2026 14:14 — with GitHub Actions Inactive
@sdairs sdairs merged commit bdc9b0d into main Apr 1, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Use packages.clickhouse.com / builds.clickhouse.com as download source

2 participants