@@ -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