Polishing.

Remove lingering dockerfiles. Use custom docker image for Cassandra build and OpenJDK 17 image for artifact deployment.

Apply consistent formatting. Add missing since tag.

See #1170
This commit is contained in:
Mark Paluch
2021-09-22 09:51:39 +02:00
parent 89c7579fcd
commit d23b956473
8 changed files with 23 additions and 120 deletions

44
Jenkinsfile vendored
View File

@@ -3,7 +3,7 @@ pipeline {
triggers {
pollSCM 'H/10 * * * *'
upstream(upstreamProjects: "spring-data-commons/main", threshold: hudson.model.Result.SUCCESS)
upstream(upstreamProjects: "spring-data-commons/3.0.x", threshold: hudson.model.Result.SUCCESS)
}
options {
@@ -16,14 +16,14 @@ pipeline {
parallel {
stage('Publish JDK 17 + Cassandra 3.11') {
when {
changeset "ci/openjdk17-cassandra-3.11/**"
changeset "ci/openjdk17-8-cassandra-3.11/**"
}
agent { label 'data' }
options { timeout(time: 30, unit: 'MINUTES') }
steps {
script {
def image = docker.build("springci/spring-data-openjdk17-cassandra-3.11", "ci/openjdk17-cassandra-3.11/")
def image = docker.build("springci/spring-data-openjdk17-8-cassandra-3.11", "ci/openjdk17-8-cassandra-3.11/")
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
image.push()
}
@@ -33,7 +33,7 @@ pipeline {
}
}
stage("test: baseline (jdk17)") {
stage("test: baseline (Java 17)") {
when {
beforeAgent(true)
anyOf {
@@ -51,9 +51,9 @@ pipeline {
steps {
script {
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
docker.image('springci/spring-data-openjdk17-cassandra-3.11:latest').inside('-u root -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v $HOME:/tmp/jenkins-home') {
docker.image('springci/spring-data-openjdk17-8-cassandra-3.11:latest').inside('-v $HOME:/tmp/jenkins-home') {
sh 'mkdir -p /tmp/jenkins-home'
sh 'JAVA_HOME=/opt/java/openjdk /opt/cassandra/bin/cassandra -R &'
sh 'JAVA_HOME=/opt/java/openjdk8 /opt/cassandra/bin/cassandra -R &'
sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml -Pci,external-cassandra clean dependency:list verify -Dsort -U -B'
}
}
@@ -81,7 +81,7 @@ pipeline {
steps {
script {
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
docker.image('adoptopenjdk/openjdk17:latest').inside('-u root -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v $HOME:/tmp/jenkins-home') {
docker.image('openjdk:17-bullseye').inside('-v $HOME:/tmp/jenkins-home') {
sh 'mkdir -p /tmp/jenkins-home'
sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml -Pci,artifactory ' +
'-Dartifactory.server=https://repo.spring.io ' +
@@ -96,36 +96,6 @@ pipeline {
}
}
}
stage('Publish documentation') {
when {
branch 'main'
}
agent {
label 'data'
}
options { timeout(time: 20, unit: 'MINUTES') }
environment {
ARTIFACTORY = credentials('02bd1690-b54f-4c9f-819d-a77cb7a9822c')
}
steps {
script {
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
docker.image('adoptopenjdk/openjdk17:latest').inside('-u root -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v $HOME:/tmp/jenkins-home') {
sh 'mkdir -p /tmp/jenkins-home'
sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml -Pci,distribute ' +
'-Dartifactory.server=https://repo.spring.io ' +
"-Dartifactory.username=${ARTIFACTORY_USR} " +
"-Dartifactory.password=${ARTIFACTORY_PSW} " +
"-Dartifactory.distribution-repository=temp-private-local " +
'-Dmaven.test.skip=true clean deploy -U -B'
}
}
}
}
}
}
post {

View File

@@ -1,24 +0,0 @@
FROM adoptopenjdk/openjdk11:latest
RUN set -eux; \
CASSANDRA_URL='https://archive.apache.org/dist/cassandra/3.11.10/apache-cassandra-3.11.10-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/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10/OpenJDK8U-jdk_x64_linux_hotspot_8u292b10.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

View File

@@ -1,7 +1,7 @@
FROM openjdk:17-bullseye
RUN set -eux; \
CASSANDRA_URL='https://archive.apache.org/dist/cassandra/3.11.10/apache-cassandra-3.11.10-bin.tar.gz'; \
CASSANDRA_URL='https://archive.apache.org/dist/cassandra/3.11.11/apache-cassandra-3.11.11-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; \

View File

@@ -1,23 +0,0 @@
FROM adoptopenjdk/openjdk17:latest
RUN set -eux; \
CASSANDRA_URL='https://www-us.apache.org/dist/cassandra/3.11.11/apache-cassandra-3.11.11-bin.tar.gz'; \
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/AdoptOpenJDK/openjdk17-binaries/releases/download/jdk17/OpenJDK17-jdk_x64_linux_hotspot_17.tar.gz'; \
curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \
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/openjdk17/bin:$PATH"
ENV MAX_HEAP_SIZE=1500M
ENV HEAP_NEWSIZE=300M

View File

@@ -1,15 +0,0 @@
FROM adoptopenjdk/openjdk8:latest
RUN set -eux; \
CASSANDRA_URL='https://archive.apache.org/dist/cassandra/3.11.10/apache-cassandra-3.11.10-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;
ENV MAX_HEAP_SIZE=1500M
ENV HEAP_NEWSIZE=300M

View File

@@ -112,7 +112,7 @@
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jcdi_2.0_spec</artifactId>
<version>1.0.1</version>
<scope>test</scope>
<scope>provided</scope>
</dependency>
<dependency>

View File

@@ -121,12 +121,12 @@ public class QueryMapper {
field.getProperty().filter(CassandraPersistentProperty::isCompositePrimaryKey).ifPresent(it -> {
throw new IllegalArgumentException(
"Cannot use composite primary key directly. Reference a property of the composite primary key");
"Cannot use composite primary key directly. Reference a property of the composite primary key");
});
field.getProperty().filter(CassandraPersistentProperty::hasOrdinal).ifPresent(it -> {
throw new IllegalArgumentException(
String.format("Cannot reference tuple value elements, property [%s]", field.getMappedKey()));
String.format("Cannot reference tuple value elements, property [%s]", field.getMappedKey()));
});
Predicate predicate = criteriaDefinition.getPredicate();
@@ -224,9 +224,7 @@ public class QueryMapper {
}).toArray());
return functionCall.getAlias()
.map(mappedFunctionCall::as)
.orElse(mappedFunctionCall);
return functionCall.getAlias().map(mappedFunctionCall::as).orElse(mappedFunctionCall);
}
throw new IllegalArgumentException(String.format("Selector [%s] not supported", selector));
@@ -345,18 +343,16 @@ public class QueryMapper {
Field createPropertyField(@Nullable CassandraPersistentEntity<?> entity, ColumnName key) {
return Optional.ofNullable(entity)
.<Field>map(e -> new MetadataBackedField(key, e, getMappingContext()))
.orElseGet(() -> new Field(key));
return Optional.ofNullable(entity).<Field> map(e -> new MetadataBackedField(key, e, getMappingContext()))
.orElseGet(() -> new Field(key));
}
ColumnType getColumnType(Field field, @Nullable Object value, ColumnTypeTransformer operator) {
ColumnTypeResolver resolver = converter.getColumnTypeResolver();
return field.getProperty()
.map(it -> operator.transform(resolver.resolve(it), it))
.orElseGet(() -> resolver.resolve(value));
return field.getProperty().map(it -> operator.transform(resolver.resolve(it), it))
.orElseGet(() -> resolver.resolve(value));
}
/**
@@ -462,10 +458,8 @@ public class QueryMapper {
static ColumnTypeTransformer of(Field field, CriteriaDefinition.Operator operator) {
if (operator == CriteriaDefinition.Operators.CONTAINS) {
return field.getProperty()
.filter(CassandraPersistentProperty::isMapLike)
.map(it -> MAP_VALUE_TYPE)
.orElse(COLLECTION_COMPONENT_TYPE);
return field.getProperty().filter(CassandraPersistentProperty::isMapLike).map(it -> MAP_VALUE_TYPE)
.orElse(COLLECTION_COMPONENT_TYPE);
}
if (operator == CriteriaDefinition.Operators.CONTAINS_KEY) {

View File

@@ -134,12 +134,13 @@ public interface CassandraPersistentProperty
}
/**
* Determines whether this {@link CassandraPersistentProperty} is persisted (mapped) to an element ordinal
* when the owning type is a mapped tuple.
* Determines whether this {@link CassandraPersistentProperty} is persisted (mapped) to an element ordinal when the
* owning type is a mapped tuple.
*
* @return a boolean value indicating whether this {@link CassandraPersistentProperty} is persisted (mapped) to
* an element ordinal when the owning type is a mapped tuple.
* @return a boolean value indicating whether this {@link CassandraPersistentProperty} is persisted (mapped) to an
* element ordinal when the owning type is a mapped tuple.
* @see #getOrdinal()
* @since 4.0
*/
default boolean hasOrdinal() {
return getOrdinal() != null;