2022-01-24 15:28:02 +01:00
pipeline {
agent {
label 'Slave'
}
stages {
stage ( 'CleanWorkspace' ) {
steps {
cleanWs ( )
}
}
stage ( 'Checkout' ) {
steps {
checkout ( [
$class : 'GitSCM' ,
branches : [ [ name: "${DBZ_GIT_BRANCH}" ] ] ,
userRemoteConfigs: [ [ url: "${DBZ_GIT_REPOSITORY}" ] ] ,
extensions : [ [ $class : 'RelativeTargetDirectory' ,
relativeTargetDir: 'debezium' ] ] ,
] )
}
}
stage ( 'Checkout - Debezium DB2' ) {
steps {
checkout ( [
$class : 'GitSCM' ,
branches : [ [ name: "${DBZ_GIT_BRANCH_DB2}" ] ] ,
userRemoteConfigs: [ [ url: "${DBZ_GIT_REPOSITORY_DB2}" ] ] ,
extensions : [ [ $class : 'RelativeTargetDirectory' ,
relativeTargetDir: 'debezium-connector-db2' ] ] ,
] )
}
}
stage ( 'Configure' ) {
steps {
script {
// Configure images if provided
2022-10-18 14:53:03 +02:00
env . IMAGE_TAG_SUFFIX = "${BUILD_NUMBER}"
2022-01-24 15:28:02 +01:00
// Apicurio version
2022-10-18 14:53:03 +02:00
env . APICURIO_ARTIFACT_VERSION = "${APICURIO_VERSION}"
2022-01-24 15:28:02 +01:00
}
withCredentials ( [
usernamePassword ( credentialsId: "${QUAY_CREDENTIALS}" , usernameVariable: 'QUAY_USERNAME' , passwordVariable: 'QUAY_PASSWORD' ) ,
] ) {
sh '' '
set - x
2022-06-09 11:34:48 +02:00
cd $ { WORKSPACE } / debezium
2022-06-07 15:38:00 +02:00
ORACLE_ARTIFACT_VERSION = $ ( mvn - q - DforceStdout help: evaluate - Dexpression = version . oracle . driver )
2022-06-01 20:40:23 +02:00
ORACLE_ARTIFACT_DIR = "${HOME}/oracle-libs/${ORACLE_ARTIFACT_VERSION}.0"
2022-10-18 14:53:03 +02:00
2022-06-01 15:00:11 +02:00
mvn org . apache . maven . plugins : maven - dependency - plugin: 2.8 : get \ \
- Dartifact = io . apicurio : apicurio - registry - distro - connect - converter: $ { APICURIO_ARTIFACT_VERSION } : zip \ \
- Dmaven . repo . local = $ { WORKSPACE } /debezium/ local - maven - repo
2022-01-24 15:28:02 +01:00
cd $ { ORACLE_ARTIFACT_DIR }
2022-06-01 15:00:11 +02:00
mvn install: install - file - DgroupId = com . oracle . instantclient - DartifactId = ojdbc8 \ \
- Dversion = $ { ORACLE_ARTIFACT_VERSION } - Dpackaging = jar - Dfile = ojdbc8 . jar \ \
- Dmaven . repo . local = $ { WORKSPACE } /debezium/ local - maven - repo
mvn install: install - file - DgroupId = com . oracle . instantclient - DartifactId = xstreams \ \
- Dversion = $ { ORACLE_ARTIFACT_VERSION } - Dpackaging = jar - Dfile = xstreams . jar \ \
- Dmaven . repo . local = $ { WORKSPACE } /debezium/ local - maven - repo
2022-01-24 15:28:02 +01:00
'' '
}
}
}
stage ( 'Build debezium' ) {
steps {
// Build core & parent
sh '' '
set - x
cd "${WORKSPACE}/debezium"
2022-06-01 15:00:11 +02:00
mvn clean install - DskipTests - DskipITs - Dmaven . repo . local = local - maven - repo
2022-01-24 15:28:02 +01:00
'' '
// Build Oracle connector
sh '' '
set - x
cd $ { WORKSPACE } / debezium
2022-06-30 23:30:11 +02:00
mvn install - Passembly , oracle - all - DskipTests - DskipITs - Dmaven . repo . local = local - maven - repo
2022-01-24 15:28:02 +01:00
'' '
// Build DB2 Connector
sh '' '
set - x
cd $ { WORKSPACE } / debezium - connector - db2
2022-06-01 15:00:11 +02:00
mvn clean install - DskipTests - DskipITs - Passembly - Dmaven . repo . local = $ { WORKSPACE } /debezium/ local - maven - repo
2022-01-24 15:28:02 +01:00
'' '
}
}
2022-03-01 14:43:44 +01:00
stage ( 'Login to private Quay repository' ) {
when ( ) {
expression { params . ORACLE_INCLUDED }
}
steps {
withCredentials ( [
usernamePassword ( credentialsId: "${PRIVATE_QUAY_CREDENTIALS}" , usernameVariable: 'PRIVATE_QUAY_USERNAME' , passwordVariable: 'PRIVATE_QUAY_PASSWORD' ) ,
] ) {
sh '' '
set - x
docker login - u $ { PRIVATE_QUAY_USERNAME } - p $ { PRIVATE_QUAY_PASSWORD } quay . io
'' '
}
}
}
2022-01-24 15:28:02 +01:00
stage ( 'Build and push image' ) {
steps {
withCredentials ( [
usernamePassword ( credentialsId: "${QUAY_CREDENTIALS}" , usernameVariable: 'QUAY_USERNAME' , passwordVariable: 'QUAY_PASSWORD' ) ,
] ) {
sh '' '
set - x
cd "${WORKSPACE}/debezium"
. /jenkins-jobs/ scripts / upstream - artifact - server - prepare . sh \ \
- - dir = "${WORKSPACE}" \ \
- - tags = "${EXTRA_IMAGE_TAGS}" \ \
- - auto - tag = "${AUTO_TAG}" \ \
- - registry = "quay.io" - - organisation = "${QUAY_ORGANISATION}" \ \
- - dest - login = "${QUAY_USERNAME}" \ \
- - dest - pass = "${QUAY_PASSWORD}" \ \
2022-03-01 14:43:44 +01:00
- - img - output = "${WORKSPACE}/published_image_dbz.txt" \ \
2022-06-01 15:00:11 +02:00
- - oracle - included = "${ORACLE_INCLUDED}" \ \
- - maven - repo = $ { WORKSPACE } /debezium/ local - maven - repo
2022-01-24 15:28:02 +01:00
'' '
}
}
}
}
post {
always {
2023-01-04 13:54:58 +01:00
mail to: params . MAIL_TO , subject: "Debezium upstream artifact server preparation #${env.BUILD_NUMBER} finished with ${currentBuild.currentResult}" , body: "" "
2022-10-18 14:53:03 +02:00
$ { currentBuild . projectName } run $ { env . BUILD_URL } finished with result: $ { currentBuild . currentResult }
2022-01-24 15:28:02 +01:00
"" "
}
success {
archiveArtifacts "**/published_image*.txt"
}
}
}