Make docker image for dtests configurable
Also build against Java 11 if on trunk and Java 11 is available
(Java 8 is still used for test execution)
diff --git a/build-scripts/cassandra-dtest-pytest.sh b/build-scripts/cassandra-dtest-pytest.sh
index 7eae11e..9602cf9 100755
--- a/build-scripts/cassandra-dtest-pytest.sh
+++ b/build-scripts/cassandra-dtest-pytest.sh
@@ -21,6 +21,13 @@
#Have Cassandra skip all fsyncs to improve test performance and reliability
export CASSANDRA_SKIP_SYNC=true
+# set JAVA_HOME environment to enable multi-version jar files for >4.0
+# both JAVA8/11_HOME env variables must exist
+grep -q _build_multi_java $CASSANDRA_DIR/build.xml
+if [ $? -eq 0 -a -n "$JAVA8_HOME" -a -n "$JAVA11_HOME" ]; then
+ export JAVA_HOME="$JAVA11_HOME"
+fi
+
# Loop to prevent failure due to maven-ant-tasks not downloading a jar..
for x in $(seq 1 3); do
ant clean jar
@@ -35,6 +42,11 @@
exit ${RETURN}
fi
+# restore JAVA_HOME to Java 8 version we intent to run tests with
+if [ -n "$JAVA8_HOME" ]; then
+ export JAVA_HOME="$JAVA8_HOME"
+fi
+
# Set up venv with dtest dependencies
set -e # enable immediate exit if venv setup fails
virtualenv --python=python3 --no-site-packages venv
diff --git a/docker/jenkins/jenkinscommand.sh b/docker/jenkins/jenkinscommand.sh
index 8a29dd7..e342ed4 100644
--- a/docker/jenkins/jenkinscommand.sh
+++ b/docker/jenkins/jenkinscommand.sh
@@ -1,15 +1,20 @@
#!/bin/sh
-DOCKER_IMAGE="kjellman/cassandra-test:0.4.4"
+if [ "$#" -lt 7 ]; then
+ echo "Usage: jenkinscommand.sh GITHUB_USER BRANCH DTEST_REPO_URL DTEST_BRANCH BUILDS_REPO_URL BUILDS_BRANCH DOCKER_IMAGE [target]"
+ exit 1
+fi
BUILDSREPO=$5
BUILDSBRANCH=$6
+DOCKER_IMAGE=$7
+TARGET=$8
cat > env.list <<EOF
REPO=$1
BRANCH=$2
DTEST_REPO=$3
DTEST_BRANCH=$4
EOF
-echo "jenkinscommand.sh: running: git clone --branch $BUILDSBRANCH $BUILDSREPO; sh ./cassandra-builds/docker/jenkins/dtest.sh $7"
-ID=$(docker run --env-file env.list -dt $DOCKER_IMAGE dumb-init bash -ilc "git clone --branch $BUILDSBRANCH $BUILDSREPO; sh ./cassandra-builds/docker/jenkins/dtest.sh $7")
+echo "jenkinscommand.sh: running: git clone --branch $BUILDSBRANCH $BUILDSREPO; sh ./cassandra-builds/docker/jenkins/dtest.sh $TARGET"
+ID=$(docker run --env-file env.list -dt $DOCKER_IMAGE dumb-init bash -ilc "git clone --branch $BUILDSBRANCH $BUILDSREPO; sh ./cassandra-builds/docker/jenkins/dtest.sh $TARGET")
# use docker attach instead of docker wait to get output
docker attach --no-stdin $ID
echo "$ID done, copying files"
diff --git a/jenkins-dsl/cassandra_job_dsl_seed.groovy b/jenkins-dsl/cassandra_job_dsl_seed.groovy
index 3bda0dc..71a0d9d 100644
--- a/jenkins-dsl/cassandra_job_dsl_seed.groovy
+++ b/jenkins-dsl/cassandra_job_dsl_seed.groovy
@@ -50,6 +50,10 @@
if(binding.hasVariable("CASSANDRA_DTEST_TEST_TARGETS")) {
dtestTargets = "${CASSANDRA_DTEST_TEST_TARGETS}".split(",")
}
+def dtestDockerImage = 'kjellman/cassandra-test:0.4.4'
+if(binding.hasVariable("CASSANDRA_DOCKER_IMAGE")) {
+ dtestDockerImage = "${CASSANDRA_DOCKER_IMAGE}"
+}
////////////////////////////////////////////////////////////
//
@@ -344,7 +348,7 @@
scm(triggerInterval)
}
steps {
- shell("sh ./cassandra-builds/docker/jenkins/jenkinscommand.sh apache ${branchName} https://github.com/apache/cassandra-dtest.git master ${buildsRepo} ${buildsBranch} ${targetName}")
+ shell("sh ./cassandra-builds/docker/jenkins/jenkinscommand.sh apache ${branchName} https://github.com/apache/cassandra-dtest.git master ${buildsRepo} ${buildsBranch} ${dtestDockerImage} ${targetName}")
}
}
}
@@ -446,6 +450,7 @@
stringParam('BRANCH', 'trunk', 'The branch of cassandra to checkout')
stringParam('DTEST_REPO', "${dtestRepo}", 'The cassandra-dtest repo URL')
stringParam('DTEST_BRANCH', 'master', 'The branch of cassandra-dtest to checkout')
+ stringParam('DOCKER_IMAGE', "${dtestDockerImage}", 'Docker image for running dtests')
}
scm {
git {
@@ -461,7 +466,7 @@
steps {
buildDescription('', buildDescStr)
shell("git clean -xdff ; git clone -b ${buildsBranch} ${buildsRepo}")
- shell("sh ./cassandra-builds/docker/jenkins/jenkinscommand.sh \$REPO \$BRANCH \$DTEST_REPO \$DTEST_BRANCH ${buildsRepo} ${buildsBranch}")
+ shell("sh ./cassandra-builds/docker/jenkins/jenkinscommand.sh \$REPO \$BRANCH \$DTEST_REPO \$DTEST_BRANCH ${buildsRepo} ${buildsBranch} \$DOCKER_IMAGE")
}
publishers {
archiveArtifacts('test_stdout.txt')