You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2021/02/14 06:53:56 UTC
[james-project] 06/18: JAMES-3500 Reuse Cassandra image accross
maven projects
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit f3eb2cf71dd1ebe7c02cf4269c11ca60b86ff262
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Sat Feb 13 09:14:26 2021 +0700
JAMES-3500 Reuse Cassandra image accross maven projects
- Set up a unique BUILD_ID env variable in Jenkinsfile
- Append it to the Cassandra image
---
Jenkinsfile | 1 +
.../james/backends/cassandra/DockerCassandra.java | 31 +++++++++++++++-------
2 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/Jenkinsfile b/Jenkinsfile
index 05f6645..b027b18 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -32,6 +32,7 @@ pipeline {
environment {
// ... setup any environment variables ...
+ BUILD_ID = UUID.randomUUID().toString()
MVN_LOCAL_REPO_OPT = '-Dmaven.repo.local=.repository'
MVN_TEST_FAIL_IGNORE = '-Dmaven.test.failure.ignore=true'
MVN_SHOW_TIMESTAMPS="-Dorg.slf4j.simpleLogger.showDateTime=true -Dorg.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss,SSS"
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandra.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandra.java
index 3d18326..b5be0eb 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandra.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandra.java
@@ -19,10 +19,11 @@
package org.apache.james.backends.cassandra;
-import com.github.dockerjava.api.async.ResultCallback;
-import com.github.dockerjava.api.command.EventsCmd;
-import com.github.dockerjava.api.model.Event;
-import com.github.dockerjava.api.model.EventType;
+import java.io.Closeable;
+import java.io.IOException;
+import java.util.Optional;
+import java.util.UUID;
+
import org.apache.james.backends.cassandra.init.ClusterFactory;
import org.apache.james.backends.cassandra.init.KeyspaceFactory;
import org.apache.james.backends.cassandra.init.configuration.CassandraConsistenciesConfiguration;
@@ -40,12 +41,12 @@ import org.testcontainers.images.builder.dockerfile.DockerfileBuilder;
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;
import com.github.dockerjava.api.DockerClient;
+import com.github.dockerjava.api.async.ResultCallback;
+import com.github.dockerjava.api.command.EventsCmd;
+import com.github.dockerjava.api.model.Event;
+import com.github.dockerjava.api.model.EventType;
import com.google.common.collect.ImmutableMap;
-import java.io.Closeable;
-import java.io.IOException;
-import java.util.UUID;
-
public class DockerCassandra {
/**
@@ -115,6 +116,18 @@ public class DockerCassandra {
DockerfileBuilder applyStep(DockerfileBuilder builder);
}
+ /**
+ * @return a string to append to image names in order to avoid conflict with concurrent builds
+ */
+ private static String buildSpecificImageDiscriminator() {
+ // If available try to access the image shared by all maven projects
+ // This avoids rebuilding one for each maven surefire fork.
+ // BUILD_ID should be set by the execution context, here JenkinsFile
+ return Optional.ofNullable(System.getenv("BUILD_ID"))
+ // Default to an image discriminator specific to this JVM
+ .orElse(UUID.randomUUID().toString());
+ }
+
private static final int CASSANDRA_PORT = 9042;
private static final int CASSANDRA_MEMORY = 650;
@@ -126,7 +139,7 @@ public class DockerCassandra {
@SuppressWarnings("resource")
public DockerCassandra() {
- this("cassandra_3_11_3-"+ UUID.randomUUID().toString(), AdditionalDockerFileStep.IDENTITY);
+ this("cassandra_3_11_3-" + buildSpecificImageDiscriminator(), AdditionalDockerFileStep.IDENTITY);
}
private DockerCassandra(String imageName, AdditionalDockerFileStep additionalSteps) {
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org