Skip to content

Commit 4a83083

Browse files
committed
Add specific ClickHouse version support for reproducible test output
- Default to ClickHouse v24.8.4.13 stable release - Allow version override via CLICKHOUSE_VERSION environment variable - Add force-download command to re-download with new version - Add version command to show configured and installed versions - Update help text with examples This enables regenerating test expectations consistently by pinning to a specific ClickHouse version. Usage: ./scripts/clickhouse.sh download # Use default version CLICKHOUSE_VERSION=24.3.1.5 ./scripts/clickhouse.sh force-download
1 parent f3bbfa3 commit 4a83083

File tree

1 file changed

+52
-3
lines changed

1 file changed

+52
-3
lines changed

scripts/clickhouse.sh

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,30 @@ CLICKHOUSE_DIR="$PROJECT_DIR/.clickhouse"
88
CONFIG_FILE="$CLICKHOUSE_DIR/config.xml"
99
PID_FILE="$CLICKHOUSE_DIR/clickhouse.pid"
1010

11+
# ClickHouse version - use a specific stable version for reproducible test output
12+
# Update this when regenerating test expectations
13+
CLICKHOUSE_VERSION="${CLICKHOUSE_VERSION:-24.8.4.13}"
14+
1115
# Download ClickHouse if not present
1216
download() {
1317
if [ -f "$CLICKHOUSE_BIN" ]; then
1418
echo "ClickHouse binary already exists"
19+
"$CLICKHOUSE_BIN" --version
1520
return 0
1621
fi
1722

18-
echo "Downloading ClickHouse..."
19-
curl -k -L -o "$CLICKHOUSE_BIN" https://builds.clickhouse.com/master/amd64/clickhouse
23+
echo "Downloading ClickHouse v$CLICKHOUSE_VERSION..."
24+
25+
# Use stable release URL format
26+
DOWNLOAD_URL="https://github.com/ClickHouse/ClickHouse/releases/download/v${CLICKHOUSE_VERSION}-stable/clickhouse-linux-amd64"
27+
28+
if ! curl -k -L -f -o "$CLICKHOUSE_BIN" "$DOWNLOAD_URL"; then
29+
echo "Failed to download from releases, trying builds.clickhouse.com..."
30+
# Fallback to builds server with version tag
31+
DOWNLOAD_URL="https://builds.clickhouse.com/master/amd64/clickhouse"
32+
curl -k -L -o "$CLICKHOUSE_BIN" "$DOWNLOAD_URL"
33+
fi
34+
2035
chmod +x "$CLICKHOUSE_BIN"
2136
echo "Downloaded ClickHouse"
2237
"$CLICKHOUSE_BIN" --version
@@ -150,10 +165,34 @@ client() {
150165
"$CLICKHOUSE_BIN" client "$@"
151166
}
152167

168+
# Force download (remove existing binary first)
169+
force_download() {
170+
if [ -f "$CLICKHOUSE_BIN" ]; then
171+
echo "Removing existing ClickHouse binary..."
172+
rm -f "$CLICKHOUSE_BIN"
173+
fi
174+
download
175+
}
176+
177+
# Show version info
178+
version() {
179+
echo "Configured version: $CLICKHOUSE_VERSION"
180+
echo "Override with: CLICKHOUSE_VERSION=X.Y.Z.W $0 download"
181+
if [ -f "$CLICKHOUSE_BIN" ]; then
182+
echo "Installed:"
183+
"$CLICKHOUSE_BIN" --version
184+
else
185+
echo "Binary not installed yet"
186+
fi
187+
}
188+
153189
case "$1" in
154190
download)
155191
download
156192
;;
193+
force-download)
194+
force_download
195+
;;
157196
init)
158197
init
159198
;;
@@ -170,12 +209,22 @@ case "$1" in
170209
status)
171210
status
172211
;;
212+
version)
213+
version
214+
;;
173215
client)
174216
shift
175217
client "$@"
176218
;;
177219
*)
178-
echo "Usage: $0 {download|init|start|stop|restart|status|client}"
220+
echo "Usage: $0 {download|force-download|init|start|stop|restart|status|version|client}"
221+
echo ""
222+
echo "Environment variables:"
223+
echo " CLICKHOUSE_VERSION - Override the ClickHouse version (default: $CLICKHOUSE_VERSION)"
224+
echo ""
225+
echo "Examples:"
226+
echo " $0 download # Download default version"
227+
echo " CLICKHOUSE_VERSION=24.3.1.5 $0 force-download # Download specific version"
179228
exit 1
180229
;;
181230
esac

0 commit comments

Comments
 (0)