Skip to content

Commit 045ba5d

Browse files
committed
Allow commit id for primary GLIDE driver
Signed-off-by: Jeremy Parr-Pearson <jeremy.parr-pearson@improving.com>
1 parent efeb268 commit 045ba5d

1 file changed

Lines changed: 95 additions & 13 deletions

File tree

.github/workflows/benchmark.yml

Lines changed: 95 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ jobs:
216216
id: driver-info
217217
run: |
218218
DRIVER="${{ steps.validate.outputs.driver }}"
219+
PRIMARY_VERSION="${{ steps.inputs.outputs.primary_version }}"
219220
SECONDARY_VERSION="${{ steps.inputs.outputs.secondary_version }}"
220221
DRIVER_CONFIG="${{ steps.validate.outputs.driver_config }}"
221222
@@ -233,6 +234,21 @@ jobs:
233234
echo "build_sdv=false" >> $GITHUB_OUTPUT
234235
fi
235236
237+
# Check if primary version is a commit ID (7-40 hex chars) or version number
238+
# Version numbers typically contain dots (e.g., "2.2.3", "6.5.0.RELEASE")
239+
# Commit IDs are hex characters only (7-40 chars)
240+
if [ "$DRIVER_ID" = "valkey-glide" ] && [ -n "$PRIMARY_VERSION" ]; then
241+
if [[ "$PRIMARY_VERSION" =~ ^[0-9a-fA-F]{7,40}$ ]]; then
242+
echo "primary_is_commit=true" >> $GITHUB_OUTPUT
243+
echo "Detected: primary_version '$PRIMARY_VERSION' is a commit ID"
244+
else
245+
echo "primary_is_commit=false" >> $GITHUB_OUTPUT
246+
echo "Detected: primary_version '$PRIMARY_VERSION' is a release version"
247+
fi
248+
else
249+
echo "primary_is_commit=false" >> $GITHUB_OUTPUT
250+
fi
251+
236252
# Check if secondary version is a commit ID (7-40 hex chars) or version number
237253
# Version numbers typically contain dots (e.g., "2.2.3", "6.5.0.RELEASE")
238254
# Commit IDs are hex characters only (7-40 chars)
@@ -251,6 +267,7 @@ jobs:
251267
echo ""
252268
echo "=== Driver Analysis ==="
253269
echo "Primary driver: $DRIVER_ID"
270+
echo "Primary version: ${PRIMARY_VERSION:-<default>}"
254271
echo "Secondary driver: ${SECONDARY_DRIVER_ID:-<none>}"
255272
echo "Secondary version: ${SECONDARY_VERSION:-<default>}"
256273
@@ -305,10 +322,65 @@ jobs:
305322
echo "✓ Built spring-data-valkey version: $SDV_VERSION"
306323
echo "version=$SDV_VERSION" >> $GITHUB_OUTPUT
307324
308-
- name: Install valkey-glide build dependencies
325+
- name: Install valkey-glide build dependencies (primary)
326+
if: steps.driver-info.outputs.driver_id == 'valkey-glide' && steps.driver-info.outputs.primary_is_commit == 'true'
327+
run: |
328+
echo "Installing dependencies for building valkey-glide from source (primary driver)"
329+
330+
# Install system dependencies
331+
sudo apt-get update
332+
sudo apt-get install -y git gcc pkg-config openssl libssl-dev unzip cmake python3-pip
333+
334+
# Install Rust
335+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
336+
source "$HOME/.cargo/env"
337+
rustc --version
338+
339+
# Install protobuf compiler v29.1
340+
PROTOC_VERSION="29.1"
341+
curl -LO "https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-x86_64.zip"
342+
unzip -o "protoc-${PROTOC_VERSION}-linux-x86_64.zip" -d "$HOME/.local"
343+
rm "protoc-${PROTOC_VERSION}-linux-x86_64.zip"
344+
export PATH="$PATH:$HOME/.local/bin"
345+
protoc --version
346+
347+
# Install ziglang and cargo-zigbuild (required for Linux builds)
348+
sudo python3 -m pip install ziglang
349+
cargo install --locked cargo-zigbuild
350+
351+
echo "✓ valkey-glide build dependencies installed"
352+
353+
- name: Build valkey-glide from source (primary)
354+
id: build-glide-primary
355+
if: steps.driver-info.outputs.driver_id == 'valkey-glide' && steps.driver-info.outputs.primary_is_commit == 'true'
356+
run: |
357+
source "$HOME/.cargo/env"
358+
export PATH="$PATH:$HOME/.local/bin"
359+
360+
COMMIT_ID="${{ steps.inputs.outputs.primary_version }}"
361+
echo "Building valkey-glide from commit: $COMMIT_ID (primary driver)"
362+
363+
# Clone valkey-glide at specific commit
364+
git clone https://github.com/valkey-io/valkey-glide.git /tmp/valkey-glide-primary
365+
cd /tmp/valkey-glide-primary
366+
git checkout "$COMMIT_ID"
367+
368+
# Use commit ID as version for local Maven
369+
GLIDE_VERSION="${COMMIT_ID:0:8}-SNAPSHOT"
370+
echo "Building valkey-glide version: $GLIDE_VERSION"
371+
372+
# build with debug symbols for flamegraph visibility
373+
cd java
374+
CARGO_PROFILE_RELEASE_DEBUG=true ./gradlew :client:buildAll -x test
375+
GLIDE_RELEASE_VERSION="$GLIDE_VERSION" ./gradlew publishToMavenLocal -x test
376+
377+
echo "✓ Built valkey-glide $GLIDE_VERSION from commit $COMMIT_ID (primary driver)"
378+
echo "version=$GLIDE_VERSION" >> $GITHUB_OUTPUT
379+
380+
- name: Install valkey-glide build dependencies (secondary)
309381
if: steps.driver-info.outputs.secondary_driver_id == 'valkey-glide' && steps.driver-info.outputs.secondary_is_commit == 'true'
310382
run: |
311-
echo "Installing dependencies for building valkey-glide from source"
383+
echo "Installing dependencies for building valkey-glide from source (secondary driver)"
312384
313385
# Install system dependencies
314386
sudo apt-get update
@@ -333,19 +405,19 @@ jobs:
333405
334406
echo "✓ valkey-glide build dependencies installed"
335407
336-
- name: Build valkey-glide from source
337-
id: build-glide
408+
- name: Build valkey-glide from source (secondary)
409+
id: build-glide-secondary
338410
if: steps.driver-info.outputs.secondary_driver_id == 'valkey-glide' && steps.driver-info.outputs.secondary_is_commit == 'true'
339411
run: |
340412
source "$HOME/.cargo/env"
341413
export PATH="$PATH:$HOME/.local/bin"
342414
343415
COMMIT_ID="${{ steps.versions.outputs.secondary_version }}"
344-
echo "Building valkey-glide from commit: $COMMIT_ID"
416+
echo "Building valkey-glide from commit: $COMMIT_ID (secondary driver)"
345417
346418
# Clone valkey-glide at specific commit
347-
git clone https://github.com/valkey-io/valkey-glide.git /tmp/valkey-glide
348-
cd /tmp/valkey-glide
419+
git clone https://github.com/valkey-io/valkey-glide.git /tmp/valkey-glide-secondary
420+
cd /tmp/valkey-glide-secondary
349421
git checkout "$COMMIT_ID"
350422
351423
# Use commit ID as version for local Maven
@@ -357,7 +429,7 @@ jobs:
357429
CARGO_PROFILE_RELEASE_DEBUG=true ./gradlew :client:buildAll -x test
358430
GLIDE_RELEASE_VERSION="$GLIDE_VERSION" ./gradlew publishToMavenLocal -x test
359431
360-
echo "✓ Built valkey-glide $GLIDE_VERSION from commit $COMMIT_ID"
432+
echo "✓ Built valkey-glide $GLIDE_VERSION from commit $COMMIT_ID (secondary driver)"
361433
echo "version=$GLIDE_VERSION" >> $GITHUB_OUTPUT
362434
363435
- name: Update resp-bench driver versions
@@ -377,12 +449,22 @@ jobs:
377449
fi
378450
379451
# Update primary driver version if a version/commit-id for it was supplied for standalone drivers. Otherwise use defaults.
452+
# If primary version is glide and it was built locally, update the pom.xml file to use this built version.
453+
# Otherwise, update the version supplied in the pom.xml.
380454
PRIMARY_VERSION="${{ steps.inputs.outputs.primary_version }}"
455+
PRIMARY_IS_COMMIT="${{ steps.driver-info.outputs.primary_is_commit }}"
381456
if [ "$DRIVER_ID" != "spring-data-valkey" ] && [ -n "$PRIMARY_VERSION" ]; then
382457
case "$DRIVER_ID" in
383458
valkey-glide)
384-
echo "Updating valkey-glide (primary) to $PRIMARY_VERSION"
385-
sed -i "s|<valkey-glide.version>.*</valkey-glide.version>|<valkey-glide.version>$PRIMARY_VERSION</valkey-glide.version>|" java/pom.xml
459+
if [ "$PRIMARY_IS_COMMIT" = "true" ]; then
460+
# Use the version from the local build
461+
GLIDE_VERSION="${{ steps.build-glide-primary.outputs.version }}"
462+
echo "Updating valkey-glide (primary) to locally built $GLIDE_VERSION"
463+
sed -i "s|<valkey-glide.version>.*</valkey-glide.version>|<valkey-glide.version>$GLIDE_VERSION</valkey-glide.version>|" java/pom.xml
464+
else
465+
echo "Updating valkey-glide (primary) to release version $PRIMARY_VERSION"
466+
sed -i "s|<valkey-glide.version>.*</valkey-glide.version>|<valkey-glide.version>$PRIMARY_VERSION</valkey-glide.version>|" java/pom.xml
467+
fi
386468
;;
387469
jedis)
388470
echo "Updating jedis (primary) to $PRIMARY_VERSION"
@@ -407,11 +489,11 @@ jobs:
407489
valkey-glide)
408490
if [ "$SECONDARY_IS_COMMIT" = "true" ]; then
409491
# Use the version from the local build
410-
GLIDE_VERSION="${{ steps.build-glide.outputs.version }}"
411-
echo "Updating valkey-glide to locally built $GLIDE_VERSION"
492+
GLIDE_VERSION="${{ steps.build-glide-secondary.outputs.version }}"
493+
echo "Updating valkey-glide (secondary) to locally built $GLIDE_VERSION"
412494
sed -i "s|<valkey-glide.version>.*</valkey-glide.version>|<valkey-glide.version>$GLIDE_VERSION</valkey-glide.version>|" java/pom.xml
413495
else
414-
echo "Updating valkey-glide to release version $SECONDARY_VERSION"
496+
echo "Updating valkey-glide (secondary) to release version $SECONDARY_VERSION"
415497
sed -i "s|<valkey-glide.version>.*</valkey-glide.version>|<valkey-glide.version>$SECONDARY_VERSION</valkey-glide.version>|" java/pom.xml
416498
fi
417499
;;

0 commit comments

Comments
 (0)