2020-02-20 14:45:48 +01:00
|
|
|
pipeline {
|
|
|
|
agent {
|
2022-01-11 16:53:10 +01:00
|
|
|
label 'NodeXL'
|
2020-02-20 14:45:48 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
stages {
|
|
|
|
stage('Checkout - Debezium') {
|
|
|
|
steps {
|
|
|
|
checkout([
|
|
|
|
$class : 'GitSCM',
|
|
|
|
branches : [[name: "${DBZ_GIT_BRANCH}"]],
|
|
|
|
userRemoteConfigs: [[url: "${DBZ_GIT_REPOSITORY}"]],
|
|
|
|
extensions : [[$class : 'RelativeTargetDirectory',
|
|
|
|
relativeTargetDir: 'debezium']],
|
|
|
|
])
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-11-10 14:25:07 +01:00
|
|
|
stage('Checkout - Debezium DB2 connector') {
|
|
|
|
when {
|
|
|
|
expression { !params.PRODUCT_BUILD }
|
|
|
|
}
|
|
|
|
steps {
|
|
|
|
checkout([
|
|
|
|
$class : 'GitSCM',
|
|
|
|
branches : [[name: "${DBZ_GIT_BRANCH_DB2}"]],
|
|
|
|
userRemoteConfigs: [[url: "${DBZ_GIT_REPOSITORY_DB2}"]],
|
|
|
|
extensions : [[$class : 'RelativeTargetDirectory',
|
|
|
|
relativeTargetDir: 'debezium-connector-db2']],
|
|
|
|
])
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-02-20 14:45:48 +01:00
|
|
|
stage('Configure') {
|
|
|
|
steps {
|
|
|
|
script {
|
2022-11-24 15:01:05 +01:00
|
|
|
if (!params.PRODUCT_BUILD && params.STRIMZI_PREPARE_BUILD_NUMBER) {
|
|
|
|
error("Using productised strimzi archive in upstream build")
|
|
|
|
}
|
|
|
|
|
2022-01-18 14:41:13 +01:00
|
|
|
env.OCP_ENV_FILE = "${WORKSPACE}/debezium-${BUILD_NUMBER}.ocp.env"
|
2021-11-10 14:25:07 +01:00
|
|
|
env.MVN_PROFILE_PROD = params.PRODUCT_BUILD ? "-Pproduct" : ""
|
2022-11-24 15:01:05 +01:00
|
|
|
env.PREPARE_STRIMZI_OPERATOR = params.STRIMZI_PREPARE_BUILD_NUMBER ? "-Dprepare.strimzi=false" : ""
|
|
|
|
env.OCP_PROJECT_DEBEZIUM = "debezium-${currentBuild.number}"
|
2021-11-10 14:25:07 +01:00
|
|
|
|
2022-01-18 14:41:13 +01:00
|
|
|
// Use strimzi build mechanism unless pre-built KC image is provided
|
2022-02-22 11:42:04 +01:00
|
|
|
env.TEST_CONNECT_STRZ_BUILD = params.IMAGE_CONNECT_STRZ ? false : true
|
2021-11-10 14:25:07 +01:00
|
|
|
|
2022-01-18 14:41:13 +01:00
|
|
|
// Configure images if provided
|
2021-11-10 14:25:07 +01:00
|
|
|
env.MVN_IMAGE_CONNECT_STRZ = params.IMAGE_CONNECT_STRZ ? "-Dimage.kc=${params.IMAGE_CONNECT_STRZ}" : ""
|
|
|
|
env.MVN_IMAGE_CONNECT_RHEL = params.IMAGE_CONNECT_RHEL ? "-Ddocker.image.kc=${params.IMAGE_CONNECT_RHEL}" : ""
|
|
|
|
env.MVN_IMAGE_DBZ_AS = params.IMAGE_DBZ_AS ? "-Dimage.as=${params.IMAGE_DBZ_AS}" : ""
|
|
|
|
|
2022-01-18 14:41:13 +01:00
|
|
|
// Test tag configuration
|
2021-12-01 15:36:49 +01:00
|
|
|
env.TEST_TAG_EXPRESSION = params.TEST_TAGS
|
|
|
|
if (!params.TEST_APICURIO_REGISTRY) {
|
|
|
|
env.TEST_TAG_EXPRESSION = [env.TEST_TAG_EXPRESSION, "!avro"].findAll().join(" & ")
|
|
|
|
}
|
2021-11-10 14:25:07 +01:00
|
|
|
|
2022-01-18 14:41:13 +01:00
|
|
|
// Version configuration
|
2021-11-10 14:25:07 +01:00
|
|
|
env.MVN_VERSION_KAFKA = params.TEST_VERSION_KAFKA ? "-Dversion.kafka=${params.TEST_VERSION_KAFKA}" : ""
|
|
|
|
env.MVN_VERSION_AS_DEBEZIUM = params.AS_VERSION_DEBEZIUM ? "-Das.debezium.version=${params.AS_VERSION_DEBEZIUM}" : ""
|
|
|
|
env.MVN_VERSION_AS_APICURIO = params.AS_VERSION_APICURIO ? "-Das.apicurio.version=${params.AS_VERSION_APICURIO}" : ""
|
|
|
|
|
2020-02-20 14:45:48 +01:00
|
|
|
}
|
2022-11-24 15:01:05 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
stage('Checkout Downstream AMQ Streams') {
|
|
|
|
when {
|
|
|
|
expression { params.PRODUCT_BUILD && params.STRIMZI_PREPARE_BUILD_NUMBER }
|
|
|
|
}
|
|
|
|
steps {
|
|
|
|
copyArtifacts projectName: 'ocp-downstream-strimzi-prepare-job',
|
|
|
|
filter: 'amq-streams-install-examples.zip',
|
|
|
|
selector: specific(params.STRIMZI_PREPARE_BUILD_NUMBER)
|
|
|
|
unzip zipFile: 'amq-streams-install-examples.zip', dir: 'strimzi'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
stage('Prepare Downstream AMQ Streams') {
|
|
|
|
when {
|
|
|
|
expression { params.PRODUCT_BUILD && params.STRIMZI_PREPARE_BUILD_NUMBER }
|
|
|
|
}
|
|
|
|
steps {
|
|
|
|
script {
|
|
|
|
env.STRZ_RESOURCES = "${env.WORKSPACE}/strimzi/install/cluster-operator"
|
|
|
|
}
|
2020-02-20 14:45:48 +01:00
|
|
|
withCredentials([
|
|
|
|
usernamePassword(credentialsId: "${OCP_CREDENTIALS}", usernameVariable: 'OCP_USERNAME', passwordVariable: 'OCP_PASSWORD'),
|
|
|
|
usernamePassword(credentialsId: "${QUAY_CREDENTIALS}", usernameVariable: 'QUAY_USERNAME', passwordVariable: 'QUAY_PASSWORD'),
|
|
|
|
|
|
|
|
]) {
|
2022-01-18 14:41:13 +01:00
|
|
|
sh '''
|
2022-10-18 14:53:03 +02:00
|
|
|
set -x
|
2022-01-18 14:41:13 +01:00
|
|
|
cd "${WORKSPACE}/debezium"
|
2022-11-24 15:01:05 +01:00
|
|
|
oc login ${OCP_URL} -u "${OCP_USERNAME}" --password="${OCP_PASSWORD}" --insecure-skip-tls-verify=true >/dev/null
|
2022-01-18 14:41:13 +01:00
|
|
|
./jenkins-jobs/scripts/ocp-projects.sh --create -t "${BUILD_NUMBER}" --envfile "${OCP_ENV_FILE}"
|
|
|
|
source "${OCP_ENV_FILE}"
|
2022-11-24 15:01:05 +01:00
|
|
|
|
|
|
|
sed -i "s/namespace: .*/namespace: ${OCP_PROJECT_DEBEZIUM}/" ${WORKSPACE}/strimzi/install/cluster-operator/*RoleBinding*.yaml
|
2021-08-10 14:27:45 +02:00
|
|
|
oc delete -f ${STRZ_RESOURCES} -n ${OCP_PROJECT_DEBEZIUM} --ignore-not-found
|
2021-04-14 10:17:03 +02:00
|
|
|
oc create -f ${STRZ_RESOURCES} -n ${OCP_PROJECT_DEBEZIUM}
|
2020-02-20 14:45:48 +01:00
|
|
|
'''
|
2022-01-18 14:41:13 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-11-24 15:01:05 +01:00
|
|
|
stage('Build') {
|
2022-01-18 14:41:13 +01:00
|
|
|
steps {
|
|
|
|
withCredentials([
|
|
|
|
usernamePassword(credentialsId: "${OCP_CREDENTIALS}", usernameVariable: 'OCP_USERNAME', passwordVariable: 'OCP_PASSWORD'),
|
|
|
|
usernamePassword(credentialsId: "${QUAY_CREDENTIALS}", usernameVariable: 'QUAY_USERNAME', passwordVariable: 'QUAY_PASSWORD'),
|
|
|
|
|
|
|
|
]) {
|
2020-02-20 14:45:48 +01:00
|
|
|
sh '''
|
2022-10-18 14:53:03 +02:00
|
|
|
set -x
|
2022-11-24 15:01:05 +01:00
|
|
|
docker login -u=${QUAY_USERNAME} -p=${QUAY_PASSWORD} quay.io
|
2022-01-18 14:41:13 +01:00
|
|
|
oc login ${OCP_URL} -u "${OCP_USERNAME}" --password="${OCP_PASSWORD}" --insecure-skip-tls-verify=true >/dev/null
|
2020-06-01 19:07:24 +02:00
|
|
|
'''
|
2022-11-24 15:01:05 +01:00
|
|
|
|
2020-06-01 19:07:24 +02:00
|
|
|
sh '''
|
|
|
|
set -x
|
2022-11-24 15:01:05 +01:00
|
|
|
cd ${WORKSPACE}/debezium
|
|
|
|
ORACLE_ARTIFACT_VERSION=$(mvn -q -DforceStdout help:evaluate -Dexpression=version.oracle.driver)
|
|
|
|
ORACLE_ARTIFACT_DIR="${HOME}/oracle-libs/${ORACLE_ARTIFACT_VERSION}.0"
|
|
|
|
|
|
|
|
cd ${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
|
2020-02-20 14:45:48 +01:00
|
|
|
'''
|
|
|
|
}
|
|
|
|
|
|
|
|
sh '''
|
|
|
|
set -x
|
2022-01-18 14:41:13 +01:00
|
|
|
cd "${WORKSPACE}/debezium"
|
2021-11-10 14:25:07 +01:00
|
|
|
mvn clean install -DskipTests -DskipITs
|
|
|
|
'''
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
stage('Build -- Upstream') {
|
|
|
|
when {
|
|
|
|
expression { !params.PRODUCT_BUILD }
|
|
|
|
}
|
|
|
|
steps {
|
|
|
|
// Build DB2 Connector
|
|
|
|
sh '''
|
|
|
|
set -x
|
|
|
|
cd ${WORKSPACE}/debezium-connector-db2
|
2020-02-20 14:45:48 +01:00
|
|
|
mvn clean install -DskipTests -DskipITs -Passembly
|
|
|
|
'''
|
2021-11-10 14:25:07 +01:00
|
|
|
// Build Oracle connector
|
|
|
|
sh '''
|
|
|
|
set -x
|
|
|
|
cd ${WORKSPACE}/debezium
|
2022-10-18 14:53:03 +02:00
|
|
|
mvn install -Passembly,oracle-all -DskipTests -DskipITs
|
2021-11-10 14:25:07 +01:00
|
|
|
'''
|
2020-02-20 14:45:48 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-11-10 14:25:07 +01:00
|
|
|
stage('Enable debug') {
|
|
|
|
when {
|
|
|
|
expression { params.DEBUG_MODE }
|
|
|
|
}
|
|
|
|
steps {
|
|
|
|
script {
|
2022-10-18 14:53:03 +02:00
|
|
|
env.MAVEN_OPTS = "-DforkCount=0 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=*:5005"
|
2021-11-10 14:25:07 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-02-20 14:45:48 +01:00
|
|
|
stage('Test') {
|
|
|
|
steps {
|
|
|
|
withCredentials([
|
2021-11-10 14:25:07 +01:00
|
|
|
usernamePassword(credentialsId: "${OCP_CREDENTIALS}", usernameVariable: 'OCP_USERNAME', passwordVariable: 'OCP_PASSWORD'),
|
2022-10-18 14:53:03 +02:00
|
|
|
file(credentialsId: "${params.PULL_SECRET}", variable: 'SECRET_PATH'),
|
2020-02-20 14:45:48 +01:00
|
|
|
]) {
|
|
|
|
sh '''
|
|
|
|
set -x
|
|
|
|
cd ${WORKSPACE}/debezium
|
2022-10-18 14:53:03 +02:00
|
|
|
|
2021-11-10 14:25:07 +01:00
|
|
|
mvn install -pl debezium-testing/debezium-testing-system -PsystemITs,oracleITs \\
|
|
|
|
${MVN_PROFILE_PROD} \\
|
2022-11-24 15:01:05 +01:00
|
|
|
${PREPARE_STRIMZI_OPERATOR} \\
|
2021-11-10 14:25:07 +01:00
|
|
|
-Docp.project.debezium="${OCP_PROJECT_DEBEZIUM}" \\
|
|
|
|
-Docp.username="${OCP_USERNAME}" \\
|
|
|
|
-Docp.password="${OCP_PASSWORD}" \\
|
|
|
|
-Docp.url="${OCP_URL}" \\
|
|
|
|
-Docp.pull.secret.paths="${SECRET_PATH}" \\
|
|
|
|
-Dstrimzi.kc.build=${TEST_CONNECT_STRZ_BUILD} \\
|
2020-09-06 19:57:09 +02:00
|
|
|
-Dtest.wait.scale="${TEST_WAIT_SCALE}" \\
|
2021-11-10 14:25:07 +01:00
|
|
|
${MVN_IMAGE_CONNECT_STRZ} \\
|
|
|
|
${MVN_IMAGE_CONNECT_RHEL} \\
|
|
|
|
${MVN_IMAGE_DBZ_AS} \\
|
|
|
|
${MVN_VERSION_KAFKA} \\
|
|
|
|
${MVN_VERSION_AS_DEBEZIUM} \\
|
|
|
|
${MVN_VERSION_AS_APICURIO} \\
|
2022-11-24 15:01:05 +01:00
|
|
|
-Dstrimzi.operator.channel=${STRIMZI_OPERATOR_CHANNEL} \\
|
|
|
|
-Dapicurio.operator.channel=${APICURIO_OPERATOR_CHANNEL} \\
|
2022-10-18 14:53:03 +02:00
|
|
|
-Dgroups="${TEST_TAG_EXPRESSION}"
|
2020-02-20 14:45:48 +01:00
|
|
|
'''
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
post {
|
|
|
|
always {
|
|
|
|
archiveArtifacts '**/target/failsafe-reports/*.xml'
|
|
|
|
junit '**/target/failsafe-reports/*.xml'
|
|
|
|
|
2023-01-04 13:54:58 +01:00
|
|
|
mail to: params.MAIL_TO, subject: "Debezium OpenShift test run #${env.BUILD_NUMBER} finished with ${currentBuild.currentResult}", body: """
|
2022-10-18 14:53:03 +02:00
|
|
|
OpenShift interoperability test run ${env.BUILD_URL} finished with result: ${currentBuild.currentResult}
|
2020-02-20 14:45:48 +01:00
|
|
|
"""
|
2022-10-11 12:52:46 +02:00
|
|
|
withCredentials([
|
|
|
|
usernamePassword(credentialsId: "rh-integration-quay-creds", usernameVariable: 'QUAY_USERNAME', passwordVariable: 'QUAY_PASSWORD'),
|
|
|
|
string(credentialsId: "report-portal-token", variable: 'RP_TOKEN'),
|
|
|
|
]) {
|
|
|
|
sh '''
|
|
|
|
if [ "$PRODUCT_BUILD" == true ] ; then
|
|
|
|
export ATTRIBUTES="downstream"
|
|
|
|
else
|
|
|
|
export ATTRIBUTES="upstream"
|
|
|
|
fi
|
|
|
|
|
|
|
|
RESULTS_FOLDER=final-results
|
|
|
|
RESULTS_PATH=$RESULTS_FOLDER/results
|
|
|
|
|
|
|
|
mkdir -p $RESULTS_PATH
|
|
|
|
cp debezium/debezium-testing/debezium-testing-system/target/failsafe-reports/*.xml $RESULTS_PATH
|
|
|
|
rm -rf $RESULTS_PATH/failsafe-summary.xml
|
|
|
|
|
|
|
|
docker login quay.io -u "$QUAY_USERNAME" -p "$QUAY_PASSWORD"
|
|
|
|
|
|
|
|
./debezium/jenkins-jobs/scripts/report.sh --connector false --env-file env-file.env --results-folder $RESULTS_FOLDER --attributes $ATTRIBUTES
|
|
|
|
'''
|
|
|
|
}
|
2020-02-20 14:45:48 +01:00
|
|
|
}
|
|
|
|
}
|
2020-11-11 06:46:47 +01:00
|
|
|
}
|