63
Jenkinsfile
vendored
63
Jenkinsfile
vendored
@@ -20,10 +20,10 @@ pipeline {
|
||||
stages {
|
||||
stage("Docker images") {
|
||||
parallel {
|
||||
stage('Publish JDK 17 + Cassandra 3.11') {
|
||||
stage('Publish JDK 17 + Cassandra 5') {
|
||||
when {
|
||||
anyOf {
|
||||
changeset "ci/openjdk17-8-cassandra-3.11/**"
|
||||
changeset "ci/openjdk17-cassandra-5/**"
|
||||
changeset "ci/pipeline.properties"
|
||||
}
|
||||
}
|
||||
@@ -31,25 +31,7 @@ pipeline {
|
||||
options { timeout(time: 30, unit: 'MINUTES') }
|
||||
steps {
|
||||
script {
|
||||
def image = docker.build("springci/spring-data-with-cassandra-3.11:${p['java.main.tag']}", "--build-arg BASE=${p['docker.java.main.image']} --build-arg CASSANDRA=${p['docker.cassandra.3.version']} ci/openjdk17-8-cassandra-3.11/")
|
||||
docker.withRegistry(p['docker.registry'], p['docker.credentials']) {
|
||||
image.push()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Publish JDK.next + Cassandra 3.11') {
|
||||
when {
|
||||
anyOf {
|
||||
changeset "ci/openjdk23-8-cassandra-3.11/**"
|
||||
changeset "ci/pipeline.properties"
|
||||
}
|
||||
}
|
||||
agent { label 'data' }
|
||||
options { timeout(time: 30, unit: 'MINUTES') }
|
||||
steps {
|
||||
script {
|
||||
def image = docker.build("springci/spring-data-with-cassandra-3.11:${p['java.next.tag']}", "--build-arg BASE=${p['docker.java.next.image']} --build-arg CASSANDRA=${p['docker.cassandra.3.version']} ci/openjdk23-8-cassandra-3.11/")
|
||||
def image = docker.build("springci/spring-data-with-cassandra-5:${p['java.main.tag']}", "--build-arg BASE=${p['docker.java.main.image']} --build-arg CASSANDRA=${p['docker.cassandra.3.version']} ci/openjdk17-cassandra-5/")
|
||||
docker.withRegistry(p['docker.registry'], p['docker.credentials']) {
|
||||
image.push()
|
||||
}
|
||||
@@ -78,9 +60,9 @@ pipeline {
|
||||
steps {
|
||||
script {
|
||||
docker.withRegistry(p['docker.proxy.registry'], p['docker.proxy.credentials']) {
|
||||
docker.image("springci/spring-data-with-cassandra-3.11:${p['java.main.tag']}").inside(p['docker.java.inside.docker']) {
|
||||
docker.image("springci/spring-data-with-cassandra-5:${p['java.main.tag']}").inside(p['docker.java.inside.docker']) {
|
||||
sh 'mkdir -p /tmp/jenkins-home'
|
||||
sh 'JAVA_HOME=/opt/java/openjdk8 /opt/cassandra/bin/cassandra -R &'
|
||||
sh 'JAVA_HOME=/opt/java/openjdk17 /opt/cassandra/bin/cassandra -R &'
|
||||
sh 'MAVEN_OPTS="-Duser.name=' + "${p['jenkins.user.name']}" + ' -Duser.home=/tmp/jenkins-home" ' +
|
||||
"./mvnw -s settings.xml -Pci,external-cassandra -Ddevelocity.storage.directory=/tmp/jenkins-home/.develocity-root -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-cassandra " +
|
||||
"clean dependency:list verify -Dsort -U -B"
|
||||
@@ -90,41 +72,6 @@ pipeline {
|
||||
}
|
||||
}
|
||||
|
||||
stage("Test other configurations") {
|
||||
when {
|
||||
beforeAgent(true)
|
||||
allOf {
|
||||
branch(pattern: "main|(\\d\\.\\d\\.x)", comparator: "REGEXP")
|
||||
not { triggeredBy 'UpstreamCause' }
|
||||
}
|
||||
}
|
||||
parallel {
|
||||
stage("test: baseline (next)") {
|
||||
agent {
|
||||
label 'data'
|
||||
}
|
||||
options { timeout(time: 30, unit: 'MINUTES') }
|
||||
environment {
|
||||
ARTIFACTORY = credentials("${p['artifactory.credentials']}")
|
||||
DEVELOCITY_ACCESS_KEY = credentials("${p['develocity.access-key']}")
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
docker.withRegistry(p['docker.proxy.registry'], p['docker.proxy.credentials']) {
|
||||
docker.image("springci/spring-data-with-cassandra-3.11:${p['java.next.tag']}").inside(p['docker.java.inside.docker']) {
|
||||
sh 'mkdir -p /tmp/jenkins-home'
|
||||
sh 'JAVA_HOME=/opt/java/openjdk8 /opt/cassandra/bin/cassandra -R &'
|
||||
sh 'MAVEN_OPTS="-Duser.name=' + "${p['jenkins.user.name']}" + ' -Duser.home=/tmp/jenkins-home" ' +
|
||||
"./mvnw -s settings.xml -Pci,external-cassandra -Ddevelocity.storage.directory=/tmp/jenkins-home/.develocity-root -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-cassandra " +
|
||||
"clean dependency:list verify -Dsort -U -B"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Release to artifactory') {
|
||||
when {
|
||||
beforeAgent(true)
|
||||
|
||||
@@ -15,13 +15,12 @@ RUN set -eux; \
|
||||
useradd -d /home/jenkins-docker -m -u 1001 -U jenkins-docker;
|
||||
|
||||
RUN set -eux; \
|
||||
BINARY_URL='https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_x64_linux_hotspot_8u322b06.tar.gz'; \
|
||||
BINARY_URL='https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.14%2B7/OpenJDK17U-jdk_x64_linux_hotspot_17.0.14_7.tar.gz'; \
|
||||
curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \
|
||||
mkdir -p /opt/java/openjdk8; \
|
||||
cd /opt/java/openjdk8; \
|
||||
mkdir -p /opt/java/openjdk17; \
|
||||
cd /opt/java/openjdk17; \
|
||||
tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
|
||||
rm -rf /tmp/openjdk.tar.gz;
|
||||
|
||||
ENV PATH="/opt/java/openjdk8/bin:$PATH"
|
||||
ENV MAX_HEAP_SIZE=1500M
|
||||
ENV HEAP_NEWSIZE=300M
|
||||
@@ -1,34 +0,0 @@
|
||||
ARG BASE
|
||||
FROM ${BASE}
|
||||
# Any ARG statements before FROM are cleared.
|
||||
ARG CASSANDRA
|
||||
|
||||
RUN set -eux; \
|
||||
# sed -i -e 's/http/https/g' /etc/apt/sources.list ; \
|
||||
apt-get update ; \
|
||||
apt-get install -y curl; \
|
||||
apt-get clean; \
|
||||
rm -rf /var/lib/apt/lists/*;
|
||||
|
||||
RUN set -eux; \
|
||||
CASSANDRA_URL="https://archive.apache.org/dist/cassandra/${CASSANDRA}/apache-cassandra-${CASSANDRA}-bin.tar.gz"; \
|
||||
sed -i -e 's/http/https/g' /etc/apt/sources.list ; \
|
||||
curl -LfsSo /tmp/cassandra.tar.gz ${CASSANDRA_URL}; \
|
||||
mkdir -p /opt/cassandra /opt/cassandra/data /opt/cassandra/logs; \
|
||||
cd /opt/cassandra; \
|
||||
tar -xf /tmp/cassandra.tar.gz --strip-components=1; \
|
||||
rm -rf /tmp/cassandra.tar.gz; \
|
||||
chmod -R a+rwx /opt/cassandra; \
|
||||
useradd -d /home/jenkins-docker -m -u 1001 -U jenkins-docker;
|
||||
|
||||
RUN set -eux; \
|
||||
BINARY_URL='https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_x64_linux_hotspot_8u322b06.tar.gz'; \
|
||||
curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \
|
||||
mkdir -p /opt/java/openjdk8; \
|
||||
cd /opt/java/openjdk8; \
|
||||
tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
|
||||
rm -rf /tmp/openjdk.tar.gz;
|
||||
|
||||
ENV PATH="/opt/java/openjdk8/bin:$PATH"
|
||||
ENV MAX_HEAP_SIZE=1500M
|
||||
ENV HEAP_NEWSIZE=300M
|
||||
@@ -18,7 +18,7 @@ docker.redis.6.version=6.2.13
|
||||
docker.redis.7.version=7.2.4
|
||||
|
||||
# Supported versions of Cassandra
|
||||
docker.cassandra.3.version=3.11.16
|
||||
docker.cassandra.5.version=5.0.3
|
||||
|
||||
# Docker environment settings
|
||||
docker.java.inside.basic=-v $HOME:/tmp/jenkins-home
|
||||
|
||||
19
pom.xml
19
pom.xml
@@ -89,7 +89,7 @@
|
||||
<build.cassandra.rpc_port>19160</build.cassandra.rpc_port>
|
||||
<build.cassandra.ssl_storage_port>17001</build.cassandra.ssl_storage_port>
|
||||
<build.cassandra.storage_port>17000</build.cassandra.storage_port>
|
||||
<cassandra.version>3.11.12</cassandra.version>
|
||||
<cassandra.version>5.0.3</cassandra.version>
|
||||
<cassandra-driver.version>4.19.0</cassandra-driver.version>
|
||||
<dist.id>spring-data-cassandra</dist.id>
|
||||
<el.version>1.0</el.version>
|
||||
@@ -130,23 +130,6 @@
|
||||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.cassandra</groupId>
|
||||
<artifactId>cassandra-thrift</artifactId>
|
||||
<version>${cassandra.version}</version>
|
||||
<scope>test</scope>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-core</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>io.netty</groupId>
|
||||
<artifactId>netty-all</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.assertj</groupId>
|
||||
<artifactId>assertj-core</artifactId>
|
||||
|
||||
@@ -108,6 +108,13 @@
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.googlecode.json-simple</groupId>
|
||||
<artifactId>json-simple</artifactId>
|
||||
<version>1.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Reactor -->
|
||||
<dependency>
|
||||
<groupId>io.projectreactor</groupId>
|
||||
@@ -163,11 +170,6 @@
|
||||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.cassandra</groupId>
|
||||
<artifactId>cassandra-thrift</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.testcontainers</groupId>
|
||||
<artifactId>cassandra</artifactId>
|
||||
|
||||
@@ -33,7 +33,7 @@ import org.springframework.lang.NonNull;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import org.testcontainers.containers.CassandraContainer;
|
||||
import org.testcontainers.cassandra.CassandraContainer;
|
||||
import org.testcontainers.utility.DockerImageName;
|
||||
import org.testcontainers.utility.MountableFile;
|
||||
|
||||
@@ -61,7 +61,7 @@ import com.datastax.oss.driver.api.core.metadata.Node;
|
||||
*/
|
||||
class CassandraDelegate {
|
||||
|
||||
private static CassandraContainer<?> container;
|
||||
private static CassandraContainer container;
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(CassandraDelegate.class);
|
||||
|
||||
@@ -276,7 +276,8 @@ class CassandraDelegate {
|
||||
|
||||
if (container == null) {
|
||||
|
||||
container = getCassandraDockerImageName().map(CassandraContainer::new).orElseGet(CassandraContainer::new);
|
||||
container = getCassandraDockerImageName().map(CassandraContainer::new)
|
||||
.orElseGet(() -> new CassandraContainer("cassandra:5.0.3"));
|
||||
|
||||
DockerImageName imageName = DockerImageName.parse(container.getDockerImageName());
|
||||
String versionPart = imageName.getVersionPart();
|
||||
|
||||
@@ -101,15 +101,6 @@ class EmbeddedCassandraServerHelper {
|
||||
return DatabaseDescriptor.getNativeTransportPort();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get embedded cassandra RPC port.
|
||||
*
|
||||
* @return the cassandra RPC port
|
||||
*/
|
||||
public static int getRpcPort() {
|
||||
return DatabaseDescriptor.getRpcPort();
|
||||
}
|
||||
|
||||
/**
|
||||
* Start an embedded Cassandra instance.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user