Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
07cd8b4
Go: Add MUSL support (#4476)
jamesx-improving Sep 5, 2025
976e2aa
Java: Migration guide for Jedis compatibility layer (#4672) (#4681)
prateek-kumar-improving Sep 8, 2025
d2731ec
[Backport to 2.1] Python: Add Multi-Database Support for Cluster Mode…
affonsov Sep 8, 2025
fe35eeb
[Backport 2.1] Go: Add Multi-Database Support for Cluster Mode Valkey…
affonsov Sep 8, 2025
8342c16
[Backport 2.1] Java: Multi-Database Support for Cluster Mode Valkey 9…
affonsov Sep 8, 2025
62dac03
[Backport 2.1] Node: Add Multi-Database Support for Cluster Mode (Val…
affonsov Sep 9, 2025
fcb569e
[Backport 2.1] Python sync: removed select command (#4705)
liorsve Sep 10, 2025
31990de
[Backport 2.1] CI/CD: Added self hosted macOS ARM runners (#4706)
liorsve Sep 10, 2025
236d967
[backport 2.1] Python: fixed pypi-cd workflow, fixed release tests (#…
liorsve Sep 10, 2025
7ec1131
Fix FFI tests for non-alpine distros (#4711)
jeremyprime Sep 10, 2025
5d2de8d
MUSL Java Build Fixes (#4712)
alexr-bq Sep 10, 2025
60a3b36
Revert go upload step change (#4716)
alexr-bq Sep 10, 2025
a6c64bb
CD: Fix Node CD delete artifact issue (#4717)
jamesx-improving Sep 10, 2025
2c009b1
CD: Fix Go musl CD issue (#4719)
jamesx-improving Sep 10, 2025
33538ba
CD: Fix Node CD delete artifact issue 2nd try (#4718)
jamesx-improving Sep 10, 2025
24fed43
Python: Update ExpiryType enum references in hash field expiration do…
affonsov Sep 10, 2025
a1ff195
[Backport 2.1] Python sync/CD: added description to pypi package of t…
liorsve Sep 11, 2025
f0c9818
Java: Compatibility layer module (#4692)
prateek-kumar-improving Sep 11, 2025
0d60e3a
Fix: Copy GPG secring to jedis-compatibility in Java CD workflow (#4723)
jbrinkman Sep 11, 2025
6b71f64
[Backport 2.1] Python Sync: revert license format (#4732)
liorsve Sep 14, 2025
743f87a
Java: Fix Jedis compatibility layer valkey-glide dependency (#4737)
prateek-kumar-improving Sep 15, 2025
25f509c
[Backport 2.1] Python: improve UDS socket error handling (#4733) (#4755)
jbrinkman Sep 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions .github/json_matrices/build-matrix.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,14 @@
"PACKAGE_MANAGERS": ["pypi", "npm", "maven", "pkg_go_dev"],
"languages": ["python", "node", "java", "go"]
},
{
"OS": "macos",
"NAMED_OS": "darwin",
"RUNNER": ["self-hosted", "macOS", "ARM64", "ephemeral"],
"ARCH": "arm64",
"TARGET": "aarch64-apple-darwin",
"languages": ["python", "node", "java", "go"]
},
{
"OS": "macos",
"NAMED_OS": "darwin",
Expand All @@ -45,11 +53,11 @@
"ARCH": "arm64",
"TARGET": "aarch64-unknown-linux-musl",
"CD_TARGET": "aarch64-unknown-linux-gnu",
"RUNNER": "ubuntu-latest-arm",
"RUNNER": "ubuntu-24.04-arm",
"CD_RUNNER": "ubuntu-24.04-arm",
"IMAGE": "node:lts-alpine",
"CONTAINER_OPTIONS": "--user root --privileged --rm",
"PACKAGE_MANAGERS": ["npm", "maven"],
"PACKAGE_MANAGERS": ["npm", "maven", "pkg_go_dev"],
"languages": []
},
{
Expand All @@ -61,8 +69,8 @@
"RUNNER": "ubuntu-latest",
"IMAGE": "node:lts-alpine",
"CONTAINER_OPTIONS": "--user root --privileged",
"PACKAGE_MANAGERS": ["npm", "maven"],
"languages": ["node", "java"]
"PACKAGE_MANAGERS": ["npm", "maven", "pkg_go_dev"],
"languages": ["node", "java", "go"]
},
{
"OS": "amazon-linux",
Expand Down
18 changes: 12 additions & 6 deletions .github/workflows/create-test-matrices/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,11 @@ inputs:
required: true
type: boolean
run-with-macos:
description: "Run with macos included"
type: boolean
type: choice
options:
- false
- use-self-hosted
- use-github
default: false
containers:
description: "Run in containers"
Expand Down Expand Up @@ -83,10 +86,13 @@ runs:
fi

# Add macOS runners if specified
if [[ "$RUN_WITH_MACOS" == "true" ]]; then
echo "Including macOS runners separately"
MAC_RUNNERS=$(jq --arg lang "$LANGUAGE_NAME" -c '[.[] | select(.languages? and any(.languages[] == $lang; .) and '"$CONDITION"' and .TARGET == "aarch64-apple-darwin")]' < .github/json_matrices/build-matrix.json)

if [[ "$RUN_WITH_MACOS" == "use-self-hosted" ]]; then
echo "Including only self-hosted macOS runners"
MAC_RUNNERS=$(jq --arg lang "$LANGUAGE_NAME" -c '[.[] | select(.languages? and any(.languages[] == $lang; .) and '"$CONDITION"' and .TARGET == "aarch64-apple-darwin" and (.RUNNER == ["self-hosted","macOS","ARM64","ephemeral"]))]' < .github/json_matrices/build-matrix.json)
FINAL_MATRIX=$(echo "$BASE_MATRIX" "$MAC_RUNNERS" | jq -sc 'add')
elif [[ "$RUN_WITH_MACOS" == "use-github" ]]; then
echo "Including only GitHub-hosted macOS runners"
MAC_RUNNERS=$(jq --arg lang "$LANGUAGE_NAME" -c '[.[] | select(.languages? and any(.languages[] == $lang; .) and '"$CONDITION"' and .TARGET == "aarch64-apple-darwin" and .RUNNER == "macos-15")]' < .github/json_matrices/build-matrix.json)
FINAL_MATRIX=$(echo "$BASE_MATRIX" "$MAC_RUNNERS" | jq -sc 'add')
else
FINAL_MATRIX="$BASE_MATRIX"
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/full-matrix-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,12 @@ on:
default: true

run-with-macos:
description: "Run with macos included (only when necessary)"
type: boolean
description: "Run with macos inclauded (only when necessary)"
type: choice
options:
- false
- use-self-hosted
- use-github
default: false

run-modules-tests:
Expand Down
12 changes: 9 additions & 3 deletions .github/workflows/go-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -116,17 +116,17 @@ jobs:
uses: ./.github/workflows/install-shared-dependencies
with:
os: ${{ matrix.host.OS }}
target: ${{ matrix.host.TARGET }}
target: ${{ matrix.host.CD_TARGET || matrix.host.TARGET }}
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Build Go client
working-directory: go
env:
RELEASE_VERSION: ${{ needs.validate-release-version.outputs.RELEASE_VERSION }}
run: |
make install-build-tools
make build GLIDE_VERSION="${RELEASE_VERSION}"
make build GLIDE_VERSION="${RELEASE_VERSION}" TARGET_TRIPLET="${{ matrix.host.TARGET }}"
- name: Move FFI artifacts on linux
if: ${{ contains(matrix.host.TARGET, 'linux-gnu') }}
if: ${{ contains(matrix.host.TARGET, 'linux') }}
run: |
mkdir -p $GITHUB_WORKSPACE/ffi/target/release
cp ffi/target/*/release/libglide_ffi.a $GITHUB_WORKSPACE/ffi/target/release/
Expand Down Expand Up @@ -187,6 +187,12 @@ jobs:
fail-fast: false
matrix:
host: ${{ fromJson(needs.load-platform-matrix.outputs.PLATFORM_MATRIX) }}
# Excluding musl targets for testing for now as there are issues with the runners
exclude:
- host:
TARGET: aarch64-unknown-linux-musl
- host:
TARGET: x86_64-unknown-linux-musl
runs-on: ${{ matrix.host.RUNNER }}
steps:
- name: Setup self-hosted runner access
Expand Down
40 changes: 32 additions & 8 deletions .github/workflows/go.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,11 @@ on:
default: false
run-with-macos:
description: "Run with macos included (only when needed)"
type: boolean
type: choice
options:
- false
- use-self-hosted
- use-github
default: false
rc-version:
required: false
Expand All @@ -61,8 +65,8 @@ on:
workflow_call:
inputs:
run-with-macos:
description: "Run with macos included (only when needed)"
type: boolean
description: "Run with macos included (only when necessary)"
type: string
default: false

concurrency:
Expand Down Expand Up @@ -92,7 +96,7 @@ jobs:
language-name: go
# Run full test matrix if job started by cron or it was explictly specified by a person who triggered the workflow
run-full-matrix: ${{ github.event.inputs.full-matrix == 'true' || github.event_name == 'schedule' }}
run-with-macos: ${{ github.event.inputs.run-with-macos == 'true' }}
run-with-macos: ${{ github.event.inputs.run-with-macos }}

test-go:
name: Go Tests - ${{ matrix.go }}, EngineVersion - ${{ matrix.engine.version }}, Target - ${{ matrix.host.TARGET }}
Expand Down Expand Up @@ -255,10 +259,17 @@ jobs:
steps:
- name: Install git
run: |
yum update
yum install -y git tar
git config --global --add safe.directory "$GITHUB_WORKSPACE"
echo IMAGE=amazonlinux:latest | sed -r 's/:/-/g' >> $GITHUB_ENV
if [[ "${{ matrix.host.OS }}" == "amazon-linux" ]]; then
yum update
yum install -y git tar
git config --global --add safe.directory "$GITHUB_WORKSPACE"
echo IMAGE=amazonlinux:latest | sed -r 's/:/-/g' >> $GITHUB_ENV
elif [[ "${{ matrix.host.TARGET }}" == *"musl"* ]]; then
apk update
apk add git bash tar
git config --global --add safe.directory "$GITHUB_WORKSPACE"
fi

# Replace `:` in the variable otherwise it can't be used in `upload-artifact`
- uses: actions/checkout@v4
with:
Expand All @@ -278,6 +289,19 @@ jobs:
github-token: ${{ secrets.GITHUB_TOKEN }}
engine-version: ${{ matrix.engine.version }}

- name: Install Musl Dependencies
if: ${{ contains(matrix.host.TARGET, 'musl') }}
run: |
apk add clang lld compiler-rt
# Ensure Rust is in PATH for container environments
echo "$HOME/.cargo/bin:$PATH" >> $GITHUB_PATH

- name: Install zig
if: ${{ contains(matrix.host.TARGET, 'musl') }}
uses: ./.github/workflows/install-zig
with:
target: ${{ matrix.host.TARGET }}

- uses: actions/cache@v4
with:
path: |
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/install-zig/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,14 @@ runs:
run: |
if [[ `cat /etc/os-release | grep "Amazon Linux"` ]]; then
yum install -y python3-pip
pip3 install ziglang
elif [[ `cat /etc/os-release | grep "Alpine"` ]]; then
apk add py3-pip
pip3 install ziglang --break-system-packages
else
sudo apt install -y python3-pip
pip3 install ziglang
fi
pip3 install ziglang
cargo install --locked cargo-zigbuild

# Set environment variable to prevent cargo-zigbuild from auto-detecting malformed targets
Expand Down
55 changes: 49 additions & 6 deletions .github/workflows/java-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ jobs:
export PLATFORM_MATRIX=$(jq 'map(
select(.PACKAGE_MANAGERS != null and (.PACKAGE_MANAGERS | contains(["maven"])))
| .RUNNER = (
if (.RUNNER | type == "array")
then (.RUNNER | map(if . == "ephemeral" then "persistent" else . end))
else (if .RUNNER == "ephemeral" then "persistent" else .RUNNER end)
if (.RUNNER | type == "array")
then (.RUNNER | map(if . == "ephemeral" then "persistent" else . end))
else (if .RUNNER == "ephemeral" then "persistent" else .RUNNER end)
end
)
)' < .github/json_matrices/build-matrix.json | jq -c .)
Expand Down Expand Up @@ -129,45 +129,77 @@ jobs:
${{ runner.os }}-gradle-cd-
${{ runner.os }}-gradle-

- name: Create secret key ring file
- name: Create secret key ring file for all Java submodules
working-directory: java/client
run: |
# Decode the provided base64 GPG key into the client module
echo "$SECRING_GPG" | base64 --decode > ./secring.gpg
ls -ltr

# Copy the key ring file into the jedis-compatibility module which also performs signing
if [ -d ../jedis-compatibility ]; then
cp ./secring.gpg ../jedis-compatibility/secring.gpg
else
echo "jedis-compatibility module directory not found" >&2
exit 1
fi

echo "Listing key ring files to verify presence:"
ls -l ./secring.gpg ../jedis-compatibility/secring.gpg
env:
SECRING_GPG: ${{ secrets.SECRING_GPG }}

- name: Build java client
working-directory: java
run: |
if [[ "${{ matrix.host.TARGET }}" == *"musl"* ]]; then
# Build and publish client first
./gradlew --build-cache :client:publishToMavenLocal -Psigning.secretKeyRingFile=secring.gpg \
-Psigning.password="${{ secrets.GPG_PASSWORD }}" -Psigning.keyId=${{ secrets.GPG_KEY_ID }} \
-Ptarget=${{ matrix.host.TARGET }}

# Then build jedis-compatibility
./gradlew --build-cache :jedis-compatibility:publishToMavenLocal -Psigning.secretKeyRingFile=secring.gpg \
-Psigning.password="${{ secrets.GPG_PASSWORD }}" -Psigning.keyId=${{ secrets.GPG_KEY_ID }} \
-Ptarget=${{ matrix.host.TARGET }}
else
# Build and publish client first
./gradlew --build-cache :client:publishToMavenLocal -Psigning.secretKeyRingFile=secring.gpg \
-Psigning.password="${{ secrets.GPG_PASSWORD }}" -Psigning.keyId=${{ secrets.GPG_KEY_ID }}

# Then build jedis-compatibility
./gradlew --build-cache :jedis-compatibility:publishToMavenLocal -Psigning.secretKeyRingFile=secring.gpg \
-Psigning.password="${{ secrets.GPG_PASSWORD }}" -Psigning.keyId=${{ secrets.GPG_KEY_ID }}
fi
env:
GLIDE_RELEASE_VERSION: ${{ env.RELEASE_VERSION }}

- name: Bundle JAR
working-directory: java
run: |
# Bundle client JAR
src_folder=~/.m2/repository/io/valkey/valkey-glide/${{ env.RELEASE_VERSION }}
cd $src_folder
jar -cvf bundle.jar *
ls -ltr
cd -
cp $src_folder/bundle.jar bundle-${{ matrix.host.TARGET }}.jar

# Bundle jedis-compatibility JAR
jedis_src_folder=~/.m2/repository/io/valkey/valkey-glide-jedis-compatibility/${{ env.RELEASE_VERSION }}
cd $jedis_src_folder
jar -cvf jedis-bundle.jar *
ls -ltr
cd -
cp $jedis_src_folder/jedis-bundle.jar jedis-bundle-${{ matrix.host.TARGET }}.jar

- name: Upload artifacts to publish
continue-on-error: true
uses: actions/upload-artifact@v4
with:
name: java-${{ matrix.host.TARGET }}
path: |
java/bundle*.jar
java/jedis-bundle*.jar

publish-to-maven-central-deployment:
if: ${{ inputs.maven_publish == true || github.event_name == 'push' }}
Expand Down Expand Up @@ -196,8 +228,16 @@ jobs:
- name: Move files to the correct directory tree
run: |
mkdir -p build/io/valkey/valkey-glide/${{ env.RELEASE_VERSION }}
cp -a maven-files/* build/io/valkey/valkey-glide/${{ env.RELEASE_VERSION }}
mkdir -p build/io/valkey/valkey-glide-jedis-compatibility/${{ env.RELEASE_VERSION }}

# Move jedis-compatibility files first
cp -a maven-files/valkey-glide-jedis-compatibility* build/io/valkey/valkey-glide-jedis-compatibility/${{ env.RELEASE_VERSION }}

# Move client files (exclude jedis-compatibility files)
find maven-files -name "valkey-glide-*" ! -name "*jedis-compatibility*" -exec cp {} build/io/valkey/valkey-glide/${{ env.RELEASE_VERSION }}/ \;

rm -rf build/io/valkey/valkey-glide/${{ env.RELEASE_VERSION }}/META-INF
rm -rf build/io/valkey/valkey-glide-jedis-compatibility/${{ env.RELEASE_VERSION }}/META-INF
cd build
zip -r ../build io

Expand Down Expand Up @@ -253,6 +293,9 @@ jobs:
fail-fast: false
matrix:
host: ${{ fromJson(needs.load-platform-matrix.outputs.PLATFORM_MATRIX) }}
exclude:
- host:
TARGET: aarch64-unknown-linux-musl
runs-on: ${{ matrix.host.test-runner || matrix.host.runner }}
container:
image: ${{ matrix.host.IMAGE || ''}}
Expand Down
15 changes: 12 additions & 3 deletions .github/workflows/java.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,11 @@ on:
default: false
run-with-macos:
description: "Run with macos included (only when necessary)"
type: boolean
type: choice
options:
- false
- use-self-hosted
- use-github
default: false
name:
required: false
Expand All @@ -59,7 +63,7 @@ on:
inputs:
run-with-macos:
description: "Run with macos included (only when necessary)"
type: boolean
type: string
default: false

concurrency:
Expand All @@ -85,7 +89,7 @@ jobs:
language-name: java
# Run full test matrix if job started by cron or it was explictly specified by a person who triggered the workflow
run-full-matrix: ${{ github.event.inputs.full-matrix == 'true' || github.event_name == 'schedule' }}
run-with-macos: ${{ (github.event.inputs.run-with-macos == 'true') }}
run-with-macos: ${{ (github.event.inputs.run-with-macos) }}

test-java:
name: Java Tests - ${{ matrix.java }}, EngineVersion - ${{ matrix.engine.version }}, Target - ${{ matrix.host.TARGET }}
Expand Down Expand Up @@ -327,8 +331,13 @@ jobs:
- name: Setup Rust Build
if: ${{ contains(matrix.host.TARGET, 'musl') }}
run: |
export PATH="$HOME/.cargo/bin:$PATH"
echo "PATH=$HOME/.cargo/bin:$PATH" >> $GITHUB_ENV

# Install ziglang and zigbuild
pip3 install ziglang --break-system-packages
cargo install --locked cargo-zigbuild

- uses: actions/cache@v4
with:
path: |
Expand Down
Loading
Loading