From eb7871188829f2b64a4c4d8a36a9aff5cf76f2e7 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Wed, 5 Jun 2024 11:24:41 +0200 Subject: [PATCH] Add CI stage testing against valkey. Closes #2923 --- Jenkinsfile | 45 ++++++++++++++++++++++++++++-- Makefile | 14 +++++----- ci/openjdk17-redis-6.2/Dockerfile | 5 ++-- ci/openjdk17-redis-7.2/Dockerfile | 6 ++-- ci/openjdk17-valkey-7.2/Dockerfile | 19 +++++++++++++ ci/openjdk21-redis-6.2/Dockerfile | 5 ++-- ci/pipeline.properties | 2 +- 7 files changed, 78 insertions(+), 18 deletions(-) create mode 100644 ci/openjdk17-valkey-7.2/Dockerfile diff --git a/Jenkinsfile b/Jenkinsfile index 61b5d0f3b..2d0e08279 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -33,7 +33,7 @@ pipeline { steps { script { - def image = docker.build("springci/spring-data-with-redis-6.2:${p['java.main.tag']}", "--build-arg BASE=${p['docker.java.main.image']} --build-arg REDIS=${p['docker.redis.6.version']} -f ci/openjdk17-redis-6.2/Dockerfile .") + def image = docker.build("springci/spring-data-with-redis-6.2:${p['java.main.tag']}", "--build-arg BASE=${p['docker.java.main.image']} --build-arg VERSION=${p['docker.redis.6.version']} -f ci/openjdk17-redis-6.2/Dockerfile .") docker.withRegistry(p['docker.registry'], p['docker.credentials']) { image.push() } @@ -53,7 +53,27 @@ pipeline { steps { script { - def image = docker.build("springci/spring-data-with-redis-7.2:${p['java.main.tag']}", "--build-arg BASE=${p['docker.java.main.image']} --build-arg REDIS=${p['docker.redis.7.version']} -f ci/openjdk17-redis-7.2/Dockerfile .") + def image = docker.build("springci/spring-data-with-redis-7.2:${p['java.main.tag']}", "--build-arg BASE=${p['docker.java.main.image']} --build-arg VERSION=${p['docker.redis.7.version']} -f ci/openjdk17-redis-7.2/Dockerfile .") + docker.withRegistry(p['docker.registry'], p['docker.credentials']) { + image.push() + } + } + } + } + stage('Publish JDK 17 + Valkey 7.2 Docker Image') { + when { + anyOf { + changeset "ci/openjdk17-valkey-7.2/Dockerfile" + changeset "Makefile" + changeset "ci/pipeline.properties" + } + } + agent { label 'data' } + options { timeout(time: 20, unit: 'MINUTES') } + + steps { + script { + def image = docker.build("springci/spring-data-with-valkey-7.2:${p['java.main.tag']}", "--build-arg BASE=${p['docker.java.main.image']} --build-arg VERSION=${p['docker.redis.7.version']} -f ci/openjdk17-redis-7.2/Dockerfile .") docker.withRegistry(p['docker.registry'], p['docker.credentials']) { image.push() } @@ -73,7 +93,7 @@ pipeline { steps { script { - def image = docker.build("springci/spring-data-with-redis-6.2:${p['java.next.tag']}", "--build-arg BASE=${p['docker.java.next.image']} --build-arg REDIS=${p['docker.redis.6.version']} -f ci/openjdk21-redis-6.2/Dockerfile .") + def image = docker.build("springci/spring-data-with-redis-6.2:${p['java.next.tag']}", "--build-arg BASE=${p['docker.java.next.image']} --build-arg VERSION=${p['docker.redis.6.version']} -f ci/openjdk21-redis-6.2/Dockerfile .") docker.withRegistry(p['docker.registry'], p['docker.credentials']) { image.push() } @@ -172,6 +192,25 @@ pipeline { } } } + + stage("test: Valkey 7") { + agent { + label 'data' + } + options { timeout(time: 30, unit: 'MINUTES') } + environment { + ARTIFACTORY = credentials("${p['artifactory.credentials']}") + DEVELOCITY_CACHE = credentials("${p['develocity.cache.credentials']}") + DEVELOCITY_ACCESS_KEY = credentials("${p['develocity.access-key']}") + } + steps { + script { + docker.image("harbor-repo.vmware.com/dockerhub-proxy-cache/springci/spring-data-with-valkey-7.2:${p['java.main.tag']}").inside('-v $HOME:/tmp/jenkins-home') { + sh "PROFILE=none LONG_TESTS=true JENKINS_USER_NAME=${p['jenkins.user.name']} ci/test.sh" + } + } + } + } } } diff --git a/Makefile b/Makefile index 7d58ad657..304a2648b 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -REDIS_VERSION:=7.2.5 +VERSION:=7.2.5 PROJECT?=redis GH_ORG?=redis SPRING_PROFILE?=ci @@ -177,10 +177,10 @@ clobber: work/$(PROJECT)/bin/$(PROJECT)-cli work/$(PROJECT)/bin/$(PROJECT)-server: @mkdir -p work/$(PROJECT) - curl -sSL https://github.com/$(GH_ORG)/$(PROJECT)/archive/refs/tags/$(REDIS_VERSION).tar.gz | tar xzf - -C work - $(MAKE) -C work/$(PROJECT)-$(REDIS_VERSION) -j - $(MAKE) -C work/$(PROJECT)-$(REDIS_VERSION) PREFIX=$(shell pwd)/work/$(PROJECT) install - rm -rf work/$(PROJECT)-$(REDIS_VERSION) + curl -sSL https://github.com/$(GH_ORG)/$(PROJECT)/archive/refs/tags/$(VERSION).tar.gz | tar xzf - -C work + $(MAKE) -C work/$(PROJECT)-$(VERSION) -j + $(MAKE) -C work/$(PROJECT)-$(VERSION) PREFIX=$(shell pwd)/work/$(PROJECT) install + rm -rf work/$(PROJECT)-$(VERSION) start: server-start sentinel-start cluster-init @@ -198,14 +198,14 @@ stop: server-stop sentinel-stop cluster-stop test: $(MAKE) start sleep 1 - ./mvnw clean test -U -P$(SPRING_PROFILE) -Dredis.server.version=$(REDIS_VERSION) || (echo "maven failed $$?"; exit 1) + ./mvnw clean test -U -P$(SPRING_PROFILE) || (echo "maven failed $$?"; exit 1) $(MAKE) stop $(MAKE) clean all-tests: $(MAKE) start sleep 1 - ./mvnw clean test -U -DrunLongTests=true -P$(SPRING_PROFILE) -Dredis.server.version=$(REDIS_VERSION) || (echo "maven failed $$?"; exit 1) + ./mvnw clean test -U -DrunLongTests=true -P$(SPRING_PROFILE) || (echo "maven failed $$?"; exit 1) $(MAKE) stop $(MAKE) clean diff --git a/ci/openjdk17-redis-6.2/Dockerfile b/ci/openjdk17-redis-6.2/Dockerfile index b983e39fb..d20826b6c 100644 --- a/ci/openjdk17-redis-6.2/Dockerfile +++ b/ci/openjdk17-redis-6.2/Dockerfile @@ -1,7 +1,8 @@ ARG BASE FROM ${BASE} # Any ARG statements before FROM are cleared. -ARG REDIS +ARG VERSION +ENV VERSION=${VERSION} # Copy Spring Data Redis's Makefile into the container COPY ./Makefile / @@ -10,7 +11,7 @@ RUN set -eux; \ # sed -i -e 's/http/https/g' /etc/apt/sources.list ; \ apt-get update ; \ apt-get install -y build-essential ; \ - make work/redis/bin/redis-cli work/redis/bin/redis-server REDIS_VERSION=${REDIS}; \ + make work/redis/bin/redis-cli work/redis/bin/redis-server VERSION=${VERSION}; \ chmod -R o+rw work; \ apt-get clean; \ rm -rf /var/lib/apt/lists/*; diff --git a/ci/openjdk17-redis-7.2/Dockerfile b/ci/openjdk17-redis-7.2/Dockerfile index 625177218..d20826b6c 100644 --- a/ci/openjdk17-redis-7.2/Dockerfile +++ b/ci/openjdk17-redis-7.2/Dockerfile @@ -1,8 +1,8 @@ ARG BASE FROM ${BASE} # Any ARG statements before FROM are cleared. -ARG REDIS -ENV REDIS_VERSION=${REDIS} +ARG VERSION +ENV VERSION=${VERSION} # Copy Spring Data Redis's Makefile into the container COPY ./Makefile / @@ -11,7 +11,7 @@ RUN set -eux; \ # sed -i -e 's/http/https/g' /etc/apt/sources.list ; \ apt-get update ; \ apt-get install -y build-essential ; \ - make work/redis/bin/redis-cli work/redis/bin/redis-server REDIS_VERSION=${REDIS}; \ + make work/redis/bin/redis-cli work/redis/bin/redis-server VERSION=${VERSION}; \ chmod -R o+rw work; \ apt-get clean; \ rm -rf /var/lib/apt/lists/*; diff --git a/ci/openjdk17-valkey-7.2/Dockerfile b/ci/openjdk17-valkey-7.2/Dockerfile new file mode 100644 index 000000000..1b89b923a --- /dev/null +++ b/ci/openjdk17-valkey-7.2/Dockerfile @@ -0,0 +1,19 @@ +ARG BASE +FROM ${BASE} +# Any ARG statements before FROM are cleared. +ARG VERSION +ENV VERSION=${VERSION} +ENV PROJECT=valkey +ENV GH_ORG=valkey-io + +# Copy Spring Data Redis's Makefile into the container +COPY ./Makefile / + +RUN set -eux; \ +# sed -i -e 's/http/https/g' /etc/apt/sources.list ; \ + apt-get update ; \ + apt-get install -y build-essential ; \ + make work/valkey/bin/valkey-cli work/valkey/bin/valkey-server VERSION=${VERSION}; \ + chmod -R o+rw work; \ + apt-get clean; \ + rm -rf /var/lib/apt/lists/*; diff --git a/ci/openjdk21-redis-6.2/Dockerfile b/ci/openjdk21-redis-6.2/Dockerfile index b983e39fb..d20826b6c 100644 --- a/ci/openjdk21-redis-6.2/Dockerfile +++ b/ci/openjdk21-redis-6.2/Dockerfile @@ -1,7 +1,8 @@ ARG BASE FROM ${BASE} # Any ARG statements before FROM are cleared. -ARG REDIS +ARG VERSION +ENV VERSION=${VERSION} # Copy Spring Data Redis's Makefile into the container COPY ./Makefile / @@ -10,7 +11,7 @@ RUN set -eux; \ # sed -i -e 's/http/https/g' /etc/apt/sources.list ; \ apt-get update ; \ apt-get install -y build-essential ; \ - make work/redis/bin/redis-cli work/redis/bin/redis-server REDIS_VERSION=${REDIS}; \ + make work/redis/bin/redis-cli work/redis/bin/redis-server VERSION=${VERSION}; \ chmod -R o+rw work; \ apt-get clean; \ rm -rf /var/lib/apt/lists/*; diff --git a/ci/pipeline.properties b/ci/pipeline.properties index 6ff93899b..ed67f6703 100644 --- a/ci/pipeline.properties +++ b/ci/pipeline.properties @@ -14,7 +14,7 @@ docker.mongodb.7.0.version=7.0.2 # Supported versions of Redis docker.redis.6.version=6.2.13 -docker.redis.7.version=7.2.4 +docker.redis.7.version=7.2.5 # Supported versions of Cassandra docker.cassandra.3.version=3.11.16