matrixJob('connector-debezium-oracle-matrix-test') { displayName('Debezium Oracle Connector Test Matrix') description('Executes tests for Oracle connector with Oracle matrix') label('Slave') axes { text('ORACLE_VERSION', '21.3.0', '19.3.0', '19.3.0-noncdb', '12.2.0.1') label("Node", "NodeXL") } properties { githubProjectUrl('https://github.com/debezium/debezium') } parameters { stringParam('REPOSITORY', 'https://github.com/debezium/debezium', 'Repository from which Debezium is built') stringParam('BRANCH', 'main', 'A branch/tag from which Debezium is built') // QUAY CONFIG stringParam('QUAY_CREDENTIALS', 'rh-integration-quay-creds', 'Quay.io credentials id') // PRODUCT CONFIG stringParam('SOURCE_URL', "", "URL to productised sources") booleanParam('PRODUCT_BUILD', false, 'Is this a productised build?') } triggers { cron('H 04 * * *') } wrappers { preBuildCleanup() timeout { noActivity(1200) } credentialsBinding{ usernamePassword('QUAY_USERNAME', 'QUAY_PASSWORD', 'rh-integration-quay-creds') } } publishers { archiveJunit('**/target/surefire-reports/*.xml') archiveJunit('**/target/failsafe-reports/*.xml') mailer('debezium-qe@redhat.com', false, true) } logRotator { daysToKeep(7) numToKeep(10) } steps { shell (''' # Ensure WS cleaup ls -A1 | xargs rm -rf set -x # Retrieve sources if [ "$PRODUCT_BUILD" == true ] ; then export MAVEN_OPTS="-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true" PROFILE_PROD="-Ppnc" curl -OJs $SOURCE_URL && unzip debezium-*-src.zip pushd debezium-*-src pushd $(ls | grep -P 'debezium-[^-]+.Final') else git clone $REPOSITORY . git checkout $BRANCH fi # Run database docker login -u=${QUAY_USERNAME} -p=${QUAY_PASSWORD} quay.io docker run --name oracledb -d -p 1521:1521 quay.io/rh_integration/dbz-oracle:${ORACLE_VERSION} until docker inspect oracledb | grep '"Status": "healthy"' 2>/dev/null do echo "waiting for database container to start" sleep 10 done # Prepare tests ORACLE_ARTIFACT_VERSION=$(mvn -s $HOME/.m2/settings-snapshots.xml -q -DforceStdout help:evaluate -Dexpression=version.oracle.driver ${MVN_PROFILE}) ORACLE_ARTIFACT_DIR="${HOME}/oracle-libs/${ORACLE_ARTIFACT_VERSION}.0" pushd ${ORACLE_ARTIFACT_DIR} mvn install:install-file -DgroupId=com.oracle.instantclient -DartifactId=ojdbc8 -Dversion=${ORACLE_ARTIFACT_VERSION} -Dpackaging=jar -Dfile=ojdbc8.jar mvn install:install-file -DgroupId=com.oracle.instantclient -DartifactId=xstreams -Dversion=${ORACLE_ARTIFACT_VERSION} -Dpackaging=jar -Dfile=xstreams.jar popd # Run tests if [[ ${ORACLE_VERSION} =~ .*noncdb$ ]] ; then MVN_PROP_PDB_NAME='-Ddatabase.pdb.name=' MVN_PROP_DATABASE_NAME='-Ddatabase.dbname=ORCLCDB' MVN_PROP_USER_NAME='dbzuser' else MVN_PROP_USER_NAME='c##dbzuser' fi mvn clean install -U -s $HOME/.m2/settings-snapshots.xml -pl debezium-connector-oracle -am -fae \\ -Poracle-tests \\ -Ddatabase.hostname=0.0.0.0 \\ -Ddatabase.admin.hostname=0.0.0.0 \\ -Dinstantclient.dir=${HOME}/oracle-libs \\ -Dmaven.test.failure.ignore=true \\ -Dinsecure.repositories=WARN \\ -Ddatabase.user=${MVN_PROP_USER_NAME} \\ ${MVN_PROP_PDB_NAME} \\ ${MVN_PROP_DATABASE_NAME} \\ ${MVN_PROFILE} # Cleanup docker stop $(docker ps -a -q) || true docker rm $(docker ps -a -q) || true ''') } }