This is an automated email from the ASF dual-hosted git repository. drazzib pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/gora.git
The following commit(s) were added to refs/heads/master by this push: new c361db5 GORA-668 Add Jenkinsfile (#229) c361db5 is described below commit c361db5f750bb8227e419c2106709468f677c79e Author: Damien Raude-Morvan <damien.raude-mor...@verteego.com> AuthorDate: Thu Oct 29 10:01:13 2020 +0100 GORA-668 Add Jenkinsfile (#229) * GORA-668 Add Jenkinsfile * GORA-668 Always capture surefire-reports * GORA-668 Use IP address that test container may be reached on * GORA-668 Use warnError to avoid failure of build * GORA-668 Override properties (reads from gora.properties) using test container configuration (defined in #setUpClass) --- Jenkinsfile | 94 ++++++++++++++++++++++ .../gora/aerospike/GoraAerospikeTestDriver.java | 2 +- .../mapreduce/TestAerospikeStoreCountQuery.java | 2 +- .../TestAerospikeStoreMapReduceSerialization.java | 2 +- .../mapreduce/TestAerospikeStoreWordCount.java | 2 +- .../apache/gora/rethinkdb/RethinkDBTestDriver.java | 13 ++- 6 files changed, 108 insertions(+), 7 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..b3eebee --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,94 @@ +#!groovy + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +def AGENT_LABEL = env.AGENT_LABEL ?: 'ubuntu' +def JDK_NAME = env.JDK_NAME ?: 'jdk_1.8_latest' +def MVN_NAME = env.MVN_NAME ?: 'maven_3_latest' + +// ================================================================= +// https://cwiki.apache.org/confluence/display/INFRA/Jenkins +// https://cwiki.apache.org/confluence/display/INFRA/Multibranch+Pipeline+recipes +// ================================================================= + +// general pipeline documentation: https://jenkins.io/doc/book/pipeline/syntax/ +pipeline { + + // https://jenkins.io/doc/book/pipeline/syntax/#agent + agent { + node { + label AGENT_LABEL + } + } + + tools { + maven MVN_NAME + jdk JDK_NAME + } + + // https://jenkins.io/doc/book/pipeline/syntax/#options + options { + // support ANSI colors in stdout/stderr + ansiColor 'xterm' + // only keep the latest 10 builds + buildDiscarder logRotator(numToKeepStr: '10') + // cancel build if not complete within two hours of scheduling + timeout time: 2, unit: 'HOURS' + disableConcurrentBuilds() + } + + environment { + LANG = 'C.UTF-8' + // --batch-mode Run in non-interactive (batch) mode + // --error Produce execution error messages + // --fail-at-end Only fail the build afterwards; allow all non-impacted builds to continue + // --show-version Display version information WITHOUT stopping build + // --no-transfer-progress Do not display transfer progress when downloading or uploading + MAVEN_CLI_OPTS = "--batch-mode --errors --fail-at-end --show-version --no-transfer-progress" + } + + stages { + stage('Build') { + steps { + sh "mvn $MAVEN_CLI_OPTS -DskipTests clean install" + } + + post { + success { + archiveArtifacts '**/target/*.jar' + } + } + } + + stage('Test') { + steps { + warnError(message: "Failure during tests execution") { + sh "mvn $MAVEN_CLI_OPTS verify" + } + } + + post { + always { + junit '**/target/surefire-reports/TEST-*.xml' + } + } + } + } +} diff --git a/gora-aerospike/src/test/java/org/apache/gora/aerospike/GoraAerospikeTestDriver.java b/gora-aerospike/src/test/java/org/apache/gora/aerospike/GoraAerospikeTestDriver.java index cc11347..9c8a369 100644 --- a/gora-aerospike/src/test/java/org/apache/gora/aerospike/GoraAerospikeTestDriver.java +++ b/gora-aerospike/src/test/java/org/apache/gora/aerospike/GoraAerospikeTestDriver.java @@ -45,7 +45,7 @@ public class GoraAerospikeTestDriver extends GoraTestDriver { @Override public void setUpClass() throws Exception { log.info("Setting up Aerospike test driver"); - conf.set("gora.aerospikestore.server.ip", "localhost"); + conf.set("gora.aerospikestore.server.ip", aerospikeContainer.getContainerIpAddress()); conf.set("gora.aerospikestore.server.port", aerospikeContainer.getMappedPort(3000).toString()); } diff --git a/gora-aerospike/src/test/java/org/apache/gora/aerospike/mapreduce/TestAerospikeStoreCountQuery.java b/gora-aerospike/src/test/java/org/apache/gora/aerospike/mapreduce/TestAerospikeStoreCountQuery.java index f710f07..72a2ba5 100644 --- a/gora-aerospike/src/test/java/org/apache/gora/aerospike/mapreduce/TestAerospikeStoreCountQuery.java +++ b/gora-aerospike/src/test/java/org/apache/gora/aerospike/mapreduce/TestAerospikeStoreCountQuery.java @@ -49,7 +49,7 @@ public class TestAerospikeStoreCountQuery { @Before public void setUp() throws Exception { - conf.set("gora.aerospikestore.server.ip", "localhost"); + conf.set("gora.aerospikestore.server.ip", aerospikeContainer.getContainerIpAddress()); conf.set("gora.aerospikestore.server.port", aerospikeContainer.getMappedPort(3000).toString()); webPageStore = DataStoreFactory diff --git a/gora-aerospike/src/test/java/org/apache/gora/aerospike/mapreduce/TestAerospikeStoreMapReduceSerialization.java b/gora-aerospike/src/test/java/org/apache/gora/aerospike/mapreduce/TestAerospikeStoreMapReduceSerialization.java index a2cc51c..b8f281e 100644 --- a/gora-aerospike/src/test/java/org/apache/gora/aerospike/mapreduce/TestAerospikeStoreMapReduceSerialization.java +++ b/gora-aerospike/src/test/java/org/apache/gora/aerospike/mapreduce/TestAerospikeStoreMapReduceSerialization.java @@ -50,7 +50,7 @@ public class TestAerospikeStoreMapReduceSerialization { @Before public void setUp() throws Exception { - conf.set("gora.aerospikestore.server.ip", "localhost"); + conf.set("gora.aerospikestore.server.ip", aerospikeContainer.getContainerIpAddress()); conf.set("gora.aerospikestore.server.port", aerospikeContainer.getMappedPort(3000).toString()); webPageStore = DataStoreFactory diff --git a/gora-aerospike/src/test/java/org/apache/gora/aerospike/mapreduce/TestAerospikeStoreWordCount.java b/gora-aerospike/src/test/java/org/apache/gora/aerospike/mapreduce/TestAerospikeStoreWordCount.java index 8d9d7e9..5e31f56 100644 --- a/gora-aerospike/src/test/java/org/apache/gora/aerospike/mapreduce/TestAerospikeStoreWordCount.java +++ b/gora-aerospike/src/test/java/org/apache/gora/aerospike/mapreduce/TestAerospikeStoreWordCount.java @@ -52,7 +52,7 @@ public class TestAerospikeStoreWordCount { @Before public void setUp() throws Exception { - conf.set("gora.aerospikestore.server.ip", "localhost"); + conf.set("gora.aerospikestore.server.ip", aerospikeContainer.getContainerIpAddress()); conf.set("gora.aerospikestore.server.port", aerospikeContainer.getMappedPort(3000).toString()); webPageStore = DataStoreFactory diff --git a/gora-rethinkdb/src/test/java/org/apache/gora/rethinkdb/RethinkDBTestDriver.java b/gora-rethinkdb/src/test/java/org/apache/gora/rethinkdb/RethinkDBTestDriver.java index 2f8d0c7..3df6758 100644 --- a/gora-rethinkdb/src/test/java/org/apache/gora/rethinkdb/RethinkDBTestDriver.java +++ b/gora-rethinkdb/src/test/java/org/apache/gora/rethinkdb/RethinkDBTestDriver.java @@ -29,6 +29,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testcontainers.containers.GenericContainer; +import java.util.Properties; + /** * Driver to set up an embedded RethinkDB database instance for Gora * dataStore specific integration tests. @@ -56,7 +58,7 @@ public class RethinkDBTestDriver extends GoraTestDriver { @Override public void setUpClass() throws Exception { log.info("Setting up RethinkDB test driver"); - conf.set(RethinkDBStoreParameters.RETHINK_DB_SERVER_HOST, "localhost"); + conf.set(RethinkDBStoreParameters.RETHINK_DB_SERVER_HOST, rethinkdbContainer.getContainerIpAddress()); conf.set(RethinkDBStoreParameters.RETHINK_DB_SERVER_PORT, rethinkdbContainer.getMappedPort(28015).toString()); log.info("RethinkDB Embedded Server started successfully."); @@ -73,10 +75,15 @@ public class RethinkDBTestDriver extends GoraTestDriver { @Override public <K, T extends Persistent> DataStore<K, T> createDataStore(Class<K> keyClass, Class<T> persistentClass) throws GoraException { - + // Override properties (reads from gora.properties) using test container configuration (defined in #setUpClass) + Properties props = DataStoreFactory.createProps(); + props.setProperty(RethinkDBStoreParameters.RETHINK_DB_SERVER_HOST, + conf.get(RethinkDBStoreParameters.RETHINK_DB_SERVER_HOST)); + props.setProperty(RethinkDBStoreParameters.RETHINK_DB_SERVER_PORT, + conf.get(RethinkDBStoreParameters.RETHINK_DB_SERVER_PORT)); final DataStore<K, T> dataStore = DataStoreFactory .createDataStore((Class<? extends DataStore<K, T>>) dataStoreClass, keyClass, - persistentClass, conf); + persistentClass, conf, props); dataStores.add(dataStore); log.info("Datastore for {} was added.", persistentClass); return dataStore;