DBZ-5678 fixing jenkins jobs to pass new teststuite introduced in jcasc repo
This commit is contained in:
parent
96e4326d35
commit
b9bf46dc4f
@ -24,7 +24,7 @@ pipelineJob('release-deploy-debezium-tool-images') {
|
||||
|
||||
definition {
|
||||
cps {
|
||||
script(readFileFromWorkspace('jenkins-jobs/pipelines/build-debezium-tool-images.groovy'))
|
||||
script(readFileFromWorkspace('jenkins-jobs/pipelines/build_debezium_tool_images_pipeline.groovy'))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ pipelineJob('release-deploy-container-images') {
|
||||
|
||||
definition {
|
||||
cps {
|
||||
script(readFileFromWorkspace('jenkins-jobs/pipelines/build-debezium-images.groovy'))
|
||||
script(readFileFromWorkspace('jenkins-jobs/pipelines/build_debezium_images_pipeline.groovy'))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ pipelineJob('ocp-cluster-deployment') {
|
||||
|
||||
definition {
|
||||
cps {
|
||||
script(readFileFromWorkspace('jenkins-jobs/pipelines/cluster_deployment.groovy'))
|
||||
script(readFileFromWorkspace('jenkins-jobs/pipelines/cluster_deployment_pipeline.groovy'))
|
||||
sandbox()
|
||||
}
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ freeStyleJob('release-debezium-nightly-image') {
|
||||
}
|
||||
|
||||
triggers {
|
||||
upstream('release-deploy-snapshots')
|
||||
upstream('release-deploy_snapshots_pipeline')
|
||||
}
|
||||
|
||||
publishers {
|
||||
|
@ -1,4 +1,4 @@
|
||||
pipelineJob('release-deploy-snapshots') {
|
||||
pipelineJob('release-deploy_snapshots_pipeline') {
|
||||
displayName('Debezium Deploy Snapshots')
|
||||
description('Deploy -SNAPSHOT versions to Maven Central')
|
||||
|
||||
@ -29,7 +29,7 @@ pipelineJob('release-deploy-snapshots') {
|
||||
|
||||
definition {
|
||||
cps {
|
||||
script(readFileFromWorkspace('jenkins-jobs/pipelines/deploy-snapshots.groovy'))
|
||||
script(readFileFromWorkspace('jenkins-jobs/pipelines/deploy_snapshots_pipeline.groovy'))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,11 @@
|
||||
import groovy.json.*
|
||||
import java.util.*
|
||||
import com.cloudbees.groovy.cps.NonCPS
|
||||
|
||||
IMAGES_DIR = 'images'
|
||||
TAG_REST_ENDPOINT = "https://api.github.com/repos/${DEBEZIUM_REPOSITORY}/tags"
|
||||
STREAMS_TO_BUILD_COUNT = STREAMS_TO_BUILD_COUNT.toInteger()
|
||||
TAGS_PER_STREAM_COUNT = TAGS_PER_STREAM_COUNT.toInteger()
|
||||
TAG_REST_ENDPOINT = "https://api.github.com/repos/${params.DEBEZIUM_REPOSITORY}/tags"
|
||||
STREAMS_TO_BUILD_COUNT = params.STREAMS_TO_BUILD_COUNT.toInteger()
|
||||
TAGS_PER_STREAM_COUNT = params.TAGS_PER_STREAM_COUNT.toInteger()
|
||||
GIT_CREDENTIALS_ID = 'debezium-github'
|
||||
DOCKER_CREDENTIALS_ID = 'debezium-dockerhub'
|
||||
QUAYIO_CREDENTIALS_ID = 'debezium-quay'
|
||||
@ -143,11 +144,11 @@ node('Slave') {
|
||||
deleteDir()
|
||||
}
|
||||
checkout([$class : 'GitSCM',
|
||||
branches : [[name: IMAGES_BRANCH]],
|
||||
branches : [[name: params.IMAGES_BRANCH]],
|
||||
doGenerateSubmoduleConfigurations: false,
|
||||
extensions : [[$class: 'RelativeTargetDirectory', relativeTargetDir: IMAGES_DIR]],
|
||||
submoduleCfg : [],
|
||||
userRemoteConfigs : [[url: "https://$IMAGES_REPOSITORY", credentialsId: GIT_CREDENTIALS_ID]]
|
||||
userRemoteConfigs : [[url: "https://$params.IMAGES_REPOSITORY", credentialsId: GIT_CREDENTIALS_ID]]
|
||||
]
|
||||
)
|
||||
withCredentials([usernamePassword(credentialsId: GIT_CREDENTIALS_ID, passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) {
|
||||
@ -198,6 +199,6 @@ node('Slave') {
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
mail to: MAIL_TO, subject: "${JOB_NAME} run #${BUILD_NUMBER} finished", body: "Run ${BUILD_URL} finished with result: ${currentBuild.currentResult}"
|
||||
mail to: params.MAIL_TO, subject: "${env.JOB_NAME} run #${env.BUILD_NUMBER} finished", body: "Run ${env.BUILD_URL} finished with result: ${currentBuild.currentResult}"
|
||||
}
|
||||
}
|
@ -13,11 +13,11 @@ node('Slave') {
|
||||
deleteDir()
|
||||
}
|
||||
checkout([$class : 'GitSCM',
|
||||
branches : [[name: IMAGES_BRANCH]],
|
||||
branches : [[name: params.IMAGES_BRANCH]],
|
||||
doGenerateSubmoduleConfigurations: false,
|
||||
extensions : [[$class: 'RelativeTargetDirectory', relativeTargetDir: IMAGES_DIR]],
|
||||
submoduleCfg : [],
|
||||
userRemoteConfigs : [[url: "https://$IMAGES_REPOSITORY", credentialsId: GIT_CREDENTIALS_ID]]
|
||||
userRemoteConfigs : [[url: "https://$params.IMAGES_REPOSITORY", credentialsId: GIT_CREDENTIALS_ID]]
|
||||
]
|
||||
)
|
||||
withCredentials([usernamePassword(credentialsId: DOCKER_CREDENTIALS_ID, passwordVariable: 'DOCKER_PASSWORD', usernameVariable: 'DOCKER_USERNAME')]) {
|
||||
@ -40,6 +40,6 @@ node('Slave') {
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
mail to: MAIL_TO, subject: "${JOB_NAME} run #${BUILD_NUMBER} finished", body: "Run ${BUILD_URL} finished with result: ${currentBuild.currentResult}"
|
||||
mail to: params.MAIL_TO, subject: "${env.JOB_NAME} run #${env.BUILD_NUMBER} finished", body: "Run ${env.BUILD_URL} finished with result: ${currentBuild.currentResult}"
|
||||
}
|
||||
}
|
@ -13,17 +13,17 @@ pipeline {
|
||||
stage('Checkout and prepare git') {
|
||||
steps {
|
||||
script {
|
||||
if (OSIA_GIT_REPOSITORY.isEmpty()) {
|
||||
if (params.OSIA_GIT_REPOSITORY.isEmpty()) {
|
||||
withCredentials([
|
||||
string(credentialsId: "${OSIA_GIT_SECRET}", variable: 'TMP_OSIA_GIT_REPOSITORY')
|
||||
string(credentialsId: "${params.OSIA_GIT_SECRET}", variable: 'TMP_OSIA_GIT_REPOSITORY')
|
||||
]){env.OSIA_GIT_REPOSITORY = TMP_OSIA_GIT_REPOSITORY}
|
||||
}
|
||||
}
|
||||
checkout([
|
||||
$class : 'GitSCM',
|
||||
branches : [[name: "${OSIA_GIT_BRANCH}"]],
|
||||
userRemoteConfigs: [[url: "${OSIA_GIT_REPOSITORY}",
|
||||
credentialsId: "${GITLAB_CREDENTIALS}"]],
|
||||
branches : [[name: "${params.OSIA_GIT_BRANCH}"]],
|
||||
userRemoteConfigs: [[url: "${params.OSIA_GIT_REPOSITORY}",
|
||||
credentialsId: "${params.GITLAB_CREDENTIALS}"]],
|
||||
extensions : [[$class: 'CleanCheckout'],
|
||||
[$class: 'RelativeTargetDirectory',
|
||||
relativeTargetDir: 'OSIA-dbz']] +
|
||||
@ -33,7 +33,7 @@ pipeline {
|
||||
])
|
||||
script {
|
||||
withCredentials([
|
||||
sshUserPrivateKey(credentialsId: "${GITLAB_CREDENTIALS}", keyFileVariable: 'TMP_SSH_KEY_FILE')
|
||||
sshUserPrivateKey(credentialsId: "${params.GITLAB_CREDENTIALS}", keyFileVariable: 'TMP_SSH_KEY_FILE')
|
||||
]){
|
||||
sh '''
|
||||
git config --global user.name "Debezium CI"
|
||||
@ -54,10 +54,10 @@ pipeline {
|
||||
}
|
||||
steps {
|
||||
withCredentials([
|
||||
string(credentialsId: "${ANSIBLE_VAULT_PASSWORD}", variable: 'ANSIBLE_PASSWORD')
|
||||
string(credentialsId: "${params.ANSIBLE_VAULT_PASSWORD}", variable: 'ANSIBLE_PASSWORD')
|
||||
]) {
|
||||
sh '''
|
||||
set -ex
|
||||
set -ex
|
||||
cd "${WORKSPACE}/OSIA-dbz/secrets"
|
||||
echo "${ANSIBLE_PASSWORD}" > ../password.txt
|
||||
ansible-vault decrypt --vault-password-file ../password.txt *
|
||||
@ -79,10 +79,10 @@ pipeline {
|
||||
}
|
||||
steps {
|
||||
withCredentials([
|
||||
string(credentialsId: "${ANSIBLE_VAULT_PASSWORD}", variable: 'ANSIBLE_PASSWORD')
|
||||
string(credentialsId: "${params.ANSIBLE_VAULT_PASSWORD}", variable: 'ANSIBLE_PASSWORD')
|
||||
]) {
|
||||
sh '''
|
||||
set -ex
|
||||
set -ex
|
||||
cd "${WORKSPACE}/OSIA-dbz/secrets"
|
||||
echo "${ANSIBLE_PASSWORD}" > ../password.txt
|
||||
ansible-vault decrypt --vault-password-file ../password.txt *
|
||||
@ -93,14 +93,12 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
post {
|
||||
always {
|
||||
mail to: 'debezium-qe@redhat.com', subject: "OCP cluster deployment/removal #${BUILD_NUMBER} finished", body: """
|
||||
${currentBuild.projectName} run ${BUILD_URL} finished with result: ${currentBuild.currentResult}
|
||||
mail to: 'debezium-qe@redhat.com', subject: "OCP cluster deployment/removal #${env.BUILD_NUMBER} finished", body: """
|
||||
${currentBuild.projectName} run ${env.BUILD_URL} finished with result: ${currentBuild.currentResult}
|
||||
"""
|
||||
}
|
||||
}
|
@ -2,9 +2,9 @@ import groovy.json.*
|
||||
import java.util.stream.*
|
||||
|
||||
if (
|
||||
!DEBEZIUM_REPOSITORY ||
|
||||
!DEBEZIUM_BRANCH ||
|
||||
!DEBEZIUM_ADDITIONAL_REPOSITORIES
|
||||
!params.DEBEZIUM_REPOSITORY ||
|
||||
!params.DEBEZIUM_BRANCH ||
|
||||
!params.DEBEZIUM_ADDITIONAL_REPOSITORIES
|
||||
) {
|
||||
error 'Input parameters not provided'
|
||||
}
|
||||
@ -22,14 +22,14 @@ node('Slave') {
|
||||
deleteDir()
|
||||
}
|
||||
checkout([$class : 'GitSCM',
|
||||
branches : [[name: "*/$DEBEZIUM_BRANCH"]],
|
||||
branches : [[name: "*/$params.DEBEZIUM_BRANCH"]],
|
||||
doGenerateSubmoduleConfigurations: false,
|
||||
extensions : [[$class: 'RelativeTargetDirectory', relativeTargetDir: DEBEZIUM_DIR]],
|
||||
submoduleCfg : [],
|
||||
userRemoteConfigs : [[url: "https://$DEBEZIUM_REPOSITORY", credentialsId: GIT_CREDENTIALS_ID]]
|
||||
userRemoteConfigs : [[url: "https://$params.DEBEZIUM_REPOSITORY", credentialsId: GIT_CREDENTIALS_ID]]
|
||||
]
|
||||
)
|
||||
DEBEZIUM_ADDITIONAL_REPOSITORIES.split().each {
|
||||
params.DEBEZIUM_ADDITIONAL_REPOSITORIES.split().each {
|
||||
def (id, repository, branch) = it.split('#')
|
||||
checkout([$class : 'GitSCM',
|
||||
branches : [[name: "*/$branch"]],
|
||||
@ -55,18 +55,18 @@ node('Slave') {
|
||||
|
||||
stage('Build and deploy Debezium') {
|
||||
dir(DEBEZIUM_DIR) {
|
||||
sh "mvn clean deploy -U -s $HOME/.m2/settings-snapshots.xml -DdeployAtEnd=true -DskipITs -DskipTests -Passembly,oracle-all,docs -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -Dmaven.wagon.http.pool=false -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.rto=20000 -Dmaven.wagon.http.retryHandler.count=1 -Dmaven.wagon.http.serviceUnavailableRetryStrategy.retryInterval=5000"
|
||||
sh "mvn clean deploy -U -s $env.HOME/.m2/settings-snapshots.xml -DdeployAtEnd=true -DskipITs -DskipTests -Passembly,oracle-all,docs -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -Dmaven.wagon.http.pool=false -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.rto=20000 -Dmaven.wagon.http.retryHandler.count=1 -Dmaven.wagon.http.serviceUnavailableRetryStrategy.retryInterval=5000"
|
||||
}
|
||||
}
|
||||
|
||||
additionalDirs.each { id ->
|
||||
stage("Build and deploy Debezium ${id.capitalize()}") {
|
||||
dir(id) {
|
||||
sh "mvn clean deploy -s $HOME/.m2/settings-snapshots.xml -DdeployAtEnd=true -DskipITs -DskipTests -Passembly,docs -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -Dmaven.wagon.http.pool=false -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.rto=20000 -Dmaven.wagon.http.retryHandler.count=1 -Dmaven.wagon.http.serviceUnavailableRetryStrategy.retryInterval=5000"
|
||||
sh "mvn clean deploy -s $env.HOME/.m2/settings-snapshots.xml -DdeployAtEnd=true -DskipITs -DskipTests -Passembly,docs -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -Dmaven.wagon.http.pool=false -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.rto=20000 -Dmaven.wagon.http.retryHandler.count=1 -Dmaven.wagon.http.serviceUnavailableRetryStrategy.retryInterval=5000"
|
||||
}
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
mail to: MAIL_TO, subject: "${JOB_NAME} run #${BUILD_NUMBER} finished", body: "Run ${BUILD_URL} finished with result: ${currentBuild.currentResult}"
|
||||
mail to: params.MAIL_TO, subject: "${env.JOB_NAME} run #${env.BUILD_NUMBER} finished", body: "Run ${env.BUILD_URL} finished with result: ${currentBuild.currentResult}"
|
||||
}
|
||||
}
|
@ -36,7 +36,7 @@ pipeline {
|
||||
stage('Copy Images & Process Resource') {
|
||||
steps {
|
||||
withCredentials([
|
||||
usernamePassword(credentialsId: "${QUAY_CREDENTIALS}", usernameVariable: 'QUAY_USERNAME', passwordVariable: 'QUAY_PASSWORD'),
|
||||
usernamePassword(credentialsId: "${params.QUAY_CREDENTIALS}", usernameVariable: 'QUAY_USERNAME', passwordVariable: 'QUAY_PASSWORD'),
|
||||
|
||||
]) {
|
||||
sh '''
|
||||
@ -50,7 +50,7 @@ pipeline {
|
||||
--dest-pass="${QUAY_PASSWORD}" \\
|
||||
--deployment-desc="${APIC_RESOURCES_DEPLOYMENT_DESCRIPTOR}" \\
|
||||
--img-output="${WORKSPACE}/published_images.txt" \\
|
||||
`if [ $PUSH_IMAGES = false ]; then echo " -s"; fi`
|
||||
`if [ $PUSH_IMAGES = false ]; then echo " -s"; fi`
|
||||
'''
|
||||
zip(archive: true, zipFile: 'apicurio-registry-install-examples.zip', dir: 'apicurio')
|
||||
|
||||
@ -68,9 +68,9 @@ pipeline {
|
||||
|
||||
post {
|
||||
always {
|
||||
mail to: MAIL_TO, subject: "Downstream apicurio preparation #${BUILD_NUMBER} finished", body: """
|
||||
${currentBuild.projectName} run ${BUILD_URL} finished with result: ${currentBuild.currentResult}
|
||||
"""
|
||||
mail(to: params.MAIL_TO, subject: "Downstream apicurio preparation #${env.BUILD_NUMBER} finished", body: """
|
||||
${currentBuild.projectName} run ${env.BUILD_URL} finished with result: ${currentBuild.currentResult}
|
||||
""")
|
||||
}
|
||||
success {
|
||||
archiveArtifacts "**/published_images*.txt"
|
||||
|
@ -49,8 +49,8 @@ pipeline {
|
||||
|
||||
post {
|
||||
always {
|
||||
mail to: MAIL_TO, subject: "Debezium artifact server preparation #${BUILD_NUMBER} finished", body: """
|
||||
${currentBuild.projectName} run ${BUILD_URL} finished with result: ${currentBuild.currentResult}
|
||||
mail to: params.MAIL_TO, subject: "Debezium artifact server preparation #${env.BUILD_NUMBER} finished", body: """
|
||||
${currentBuild.projectName} run ${env.BUILD_URL} finished with result: ${currentBuild.currentResult}
|
||||
"""
|
||||
}
|
||||
success {
|
||||
|
@ -11,49 +11,49 @@ pipeline {
|
||||
}
|
||||
steps {
|
||||
build job: 'ocp-downstream-artifact-server-prepare-job', parameters: [
|
||||
string(name: MAIL_TO, value: params.MAIL_TO),
|
||||
string(name: 'QUAY_CREDENTIALS', value: params.QUAY_CREDENTIALS),
|
||||
string(name: 'QUAY_ORGANISATION', value: params.QUAY_ORGANISATION),
|
||||
string(name: 'DBZ_GIT_REPOSITORY', value: params.DBZ_GIT_REPOSITORY),
|
||||
string(name: 'DBZ_GIT_BRANCH', value: params.DBZ_GIT_BRANCH),
|
||||
text(name: 'DBZ_EXTRA_LIBS', value: params.AS_DBZ_EXTRA_LIBS ),
|
||||
text(name: 'EXTRA_IMAGE_TAGS', value: params.AS_EXTRA_IMAGE_TAGS),
|
||||
booleanParam(name: 'AUTO_TAG', value: params.AUTO_TAG),
|
||||
text(name: 'DBZ_CONNECTOR_ARCHIVE_URLS', value: params.DBZ_CONNECTOR_ARCHIVE_URLS),
|
||||
string(name: MAIL_TO, value: params.MAIL_TO),
|
||||
string(name: 'QUAY_CREDENTIALS', value: params.QUAY_CREDENTIALS),
|
||||
string(name: 'QUAY_ORGANISATION', value: params.QUAY_ORGANISATION),
|
||||
string(name: 'DBZ_GIT_REPOSITORY', value: params.DBZ_GIT_REPOSITORY),
|
||||
string(name: 'DBZ_GIT_BRANCH', value: params.DBZ_GIT_BRANCH),
|
||||
text(name: 'DBZ_EXTRA_LIBS', value: params.AS_DBZ_EXTRA_LIBS),
|
||||
text(name: 'EXTRA_IMAGE_TAGS', value: params.AS_EXTRA_IMAGE_TAGS),
|
||||
booleanParam(name: 'AUTO_TAG', value: params.AUTO_TAG),
|
||||
text(name: 'DBZ_CONNECTOR_ARCHIVE_URLS', value: params.DBZ_CONNECTOR_ARCHIVE_URLS),
|
||||
]
|
||||
copyArtifacts(projectName: 'ocp-downstream-artifact-server-prepare-job', selector: lastCompleted())
|
||||
}
|
||||
}
|
||||
|
||||
stage('Invoke_downstream_strimzi') {
|
||||
when {
|
||||
expression { params.EXECUTE_STRIMZI }
|
||||
}
|
||||
steps {
|
||||
build job: 'ocp-downstream-strimzi-prepare-job', parameters: [
|
||||
string(name: MAIL_TO, value: params.MAIL_TO),
|
||||
string(name: 'QUAY_CREDENTIALS', value: params.QUAY_CREDENTIALS),
|
||||
string(name: 'QUAY_ORGANISATION', value: params.QUAY_ORGANISATION),
|
||||
string(name: 'STRZ_RESOURCES_ARCHIVE_URL', value: params.STRZ_RESOURCES_ARCHIVE_URL),
|
||||
string(name: 'STRZ_RESOURCES_DEPLOYMENT_DESCRIPTOR', value: params.STRZ_RESOURCES_DEPLOYMENT_DESCRIPTOR),
|
||||
text(name: 'STRZ_IMAGES', value: params.STRZ_IMAGES),
|
||||
string(name: 'DBZ_GIT_REPOSITORY', value: params.DBZ_GIT_REPOSITORY),
|
||||
string(name: 'DBZ_GIT_BRANCH', value: params.DBZ_GIT_BRANCH),
|
||||
booleanParam(name: 'DBZ_CONNECT_BUILD', value: params.STRZ_DBZ_CONNECT_BUILD),
|
||||
text(name: 'DBZ_CONNECTOR_ARCHIVE_URLS', value: params.DBZ_CONNECTOR_ARCHIVE_URLS),
|
||||
text(name: 'DBZ_EXTRA_LIBS', value: params.STRZ_DBZ_EXTRA_LIBS),
|
||||
]
|
||||
copyArtifacts(projectName: 'ocp-downstream-strimzi-prepare-job', selector: lastCompleted())
|
||||
stage('Invoke_downstream_strimzi') {
|
||||
when {
|
||||
expression { params.EXECUTE_STRIMZI }
|
||||
}
|
||||
steps {
|
||||
build job: 'ocp-downstream-strimzi-prepare-job', parameters: [
|
||||
string(name: MAIL_TO, value: params.MAIL_TO),
|
||||
string(name: 'QUAY_CREDENTIALS', value: params.QUAY_CREDENTIALS),
|
||||
string(name: 'QUAY_ORGANISATION', value: params.QUAY_ORGANISATION),
|
||||
string(name: 'STRZ_RESOURCES_ARCHIVE_URL', value: params.STRZ_RESOURCES_ARCHIVE_URL),
|
||||
string(name: 'STRZ_RESOURCES_DEPLOYMENT_DESCRIPTOR', value: params.STRZ_RESOURCES_DEPLOYMENT_DESCRIPTOR),
|
||||
text(name: 'STRZ_IMAGES', value: params.STRZ_IMAGES),
|
||||
string(name: 'DBZ_GIT_REPOSITORY', value: params.DBZ_GIT_REPOSITORY),
|
||||
string(name: 'DBZ_GIT_BRANCH', value: params.DBZ_GIT_BRANCH),
|
||||
booleanParam(name: 'DBZ_CONNECT_BUILD', value: params.STRZ_DBZ_CONNECT_BUILD),
|
||||
text(name: 'DBZ_CONNECTOR_ARCHIVE_URLS', value: params.DBZ_CONNECTOR_ARCHIVE_URLS),
|
||||
text(name: 'DBZ_EXTRA_LIBS', value: params.STRZ_DBZ_EXTRA_LIBS),
|
||||
]
|
||||
copyArtifacts(projectName: 'ocp-downstream-strimzi-prepare-job', selector: lastCompleted())
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
stage('Invoke_apicurio') {
|
||||
when {
|
||||
expression { params.EXECUTE_APICURIO }
|
||||
}
|
||||
steps {
|
||||
build job: 'ocp-downstream-apicurio-prepare-job', parameters: [
|
||||
stage('Invoke_apicurio') {
|
||||
when {
|
||||
expression { params.EXECUTE_APICURIO }
|
||||
}
|
||||
steps {
|
||||
build job: 'ocp-downstream-apicurio-prepare-job', parameters: [
|
||||
string(name: MAIL_TO, value: params.MAIL_TO),
|
||||
string(name: 'QUAY_CREDENTIALS', value: params.QUAY_CREDENTIALS),
|
||||
string(name: 'QUAY_ORGANISATION', value: params.QUAY_ORGANISATION),
|
||||
@ -63,10 +63,10 @@ pipeline {
|
||||
string(name: 'DBZ_GIT_REPOSITORY', value: params.DBZ_GIT_REPOSITORY),
|
||||
string(name: 'DBZ_GIT_BRANCH', value: params.DBZ_GIT_BRANCH),
|
||||
booleanParam(name: 'PUSH_IMAGES', value: params.PUSH_IMAGES),
|
||||
]
|
||||
]
|
||||
copyArtifacts(projectName: 'ocp-downstream-apicurio-prepare-job', selector: lastCompleted())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Invoke_rhel') {
|
||||
when {
|
||||
@ -74,17 +74,17 @@ pipeline {
|
||||
}
|
||||
steps {
|
||||
build job: 'rhel-downstream-prepare-job', parameters: [
|
||||
string(name: MAIL_TO, value: params.MAIL_TO),
|
||||
string(name: 'QUAY_CREDENTIALS', value: params.QUAY_CREDENTIALS),
|
||||
string(name: 'QUAY_ORGANISATION', value: params.QUAY_ORGANISATION),
|
||||
string(name: 'RHEL_IMAGE', value: params.RHEL_IMAGE),
|
||||
string(name: 'KAFKA_URL', value: params.KAFKA_URL),
|
||||
string(name: 'DBZ_GIT_REPOSITORY', value: params.DBZ_GIT_REPOSITORY),
|
||||
string(name: 'DBZ_GIT_BRANCH', value: params.DBZ_GIT_BRANCH),
|
||||
booleanParam(name: 'AUTO_TAG', value: params.AUTO_TAG),
|
||||
text(name: 'EXTRA_IMAGE_TAGS', value: params.EXTRA_IMAGE_TAGS),
|
||||
text(name: 'DBZ_CONNECTOR_ARCHIVE_URLS', value: params.DBZ_CONNECTOR_ARCHIVE_URLS),
|
||||
text(name: 'DBZ_EXTRA_LIBS', value: params.STRZ_DBZ_EXTRA_LIBS),
|
||||
string(name: MAIL_TO, value: params.MAIL_TO),
|
||||
string(name: 'QUAY_CREDENTIALS', value: params.QUAY_CREDENTIALS),
|
||||
string(name: 'QUAY_ORGANISATION', value: params.QUAY_ORGANISATION),
|
||||
string(name: 'RHEL_IMAGE', value: params.RHEL_IMAGE),
|
||||
string(name: 'KAFKA_URL', value: params.KAFKA_URL),
|
||||
string(name: 'DBZ_GIT_REPOSITORY', value: params.DBZ_GIT_REPOSITORY),
|
||||
string(name: 'DBZ_GIT_BRANCH', value: params.DBZ_GIT_BRANCH),
|
||||
booleanParam(name: 'AUTO_TAG', value: params.AUTO_TAG),
|
||||
text(name: 'EXTRA_IMAGE_TAGS', value: params.EXTRA_IMAGE_TAGS),
|
||||
text(name: 'DBZ_CONNECTOR_ARCHIVE_URLS', value: params.DBZ_CONNECTOR_ARCHIVE_URLS),
|
||||
text(name: 'DBZ_EXTRA_LIBS', value: params.STRZ_DBZ_EXTRA_LIBS),
|
||||
]
|
||||
copyArtifacts(projectName: 'rhel-downstream-prepare-job', selector: lastCompleted())
|
||||
}
|
||||
@ -100,14 +100,14 @@ pipeline {
|
||||
jobMap.put("ocp-downstream-artifact-server-prepare-job", params.EXECUTE_AS)
|
||||
jobMap.put("ocp-downstream-strimzi-prepare-job", params.EXECUTE_STRIMZI)
|
||||
jobMap.put("rhel-downstream-prepare-job", params.EXECUTE_RHEL)
|
||||
jobMap.put("ocp-downstream-apicurio-prepare-job", EXECUTE_APICURIO)
|
||||
jobMap.put("ocp-downstream-apicurio-prepare-job", params.EXECUTE_APICURIO)
|
||||
|
||||
jobMap.each { entry ->
|
||||
if (!entry.value) {
|
||||
return
|
||||
}
|
||||
|
||||
def build = jenkins.model.Jenkins.instance.getItem("${entry.key}").getLastCompletedBuild()
|
||||
def build = jenkins.model.Jenkins.get().getItem("${entry.key}").getLastCompletedBuild()
|
||||
|
||||
if (!build) {
|
||||
println "No build of ${entry.key} found!"
|
||||
|
@ -46,7 +46,7 @@ pipeline {
|
||||
--dest-login="${QUAY_USERNAME}" \\
|
||||
--dest-pass="${QUAY_PASSWORD}" \\
|
||||
--deployment-desc="${STRZ_RESOURCES_DEPLOYMENT_DESCRIPTOR}" \\
|
||||
--img-output="${WORKSPACE}/published_images.txt"
|
||||
--img-output="${WORKSPACE}/published_images.txt"
|
||||
'''
|
||||
zip(archive: true, zipFile: 'amq-streams-install-examples.zip', dir: 'strimzi')
|
||||
}
|
||||
@ -95,8 +95,8 @@ pipeline {
|
||||
|
||||
post {
|
||||
always {
|
||||
mail to: MAIL_TO, subject: "Debezium OpenShift test run #${BUILD_NUMBER} finished", body: """
|
||||
${currentBuild.projectName} run ${BUILD_URL} finished with result: ${currentBuild.currentResult}
|
||||
mail to: params.MAIL_TO, subject: "Debezium OpenShift test run #${env.BUILD_NUMBER} finished", body: """
|
||||
${currentBuild.projectName} run ${env.BUILD_URL} finished with result: ${currentBuild.currentResult}
|
||||
"""
|
||||
}
|
||||
success {
|
||||
|
@ -63,8 +63,8 @@ pipeline {
|
||||
|
||||
post {
|
||||
always {
|
||||
mail to: 'debezium-qe@redhat.com', subject: "Jenkins node image snapshot #${BUILD_NUMBER} finished", body: """
|
||||
${currentBuild.projectName} run ${BUILD_URL} finished with result: ${currentBuild.currentResult}
|
||||
mail to: 'debezium-qe@redhat.com', subject: "Jenkins node image snapshot #${env.BUILD_NUMBER} finished", body: """
|
||||
${currentBuild.projectName} run ${env.BUILD_URL} finished with result: ${currentBuild.currentResult}
|
||||
"""
|
||||
}
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ pipeline {
|
||||
cp ${OS_AUTH} ./clouds.yaml
|
||||
cp ${WORKSPACE}/debezium/jenkins-jobs/scripts/cleanup_images_ansible.yml ./cleanup_images_ansible.yml
|
||||
ansible-galaxy collection install openstack.cloud
|
||||
ansible-playbook cleanup_images_ansible.yml --extra-vars "cloud_name="${CLOUD_NAME}" snapshot_name="${SNAPSHOT_NAME}""
|
||||
ansible-playbook cleanup_images_ansible.yml --extra-vars "cloud_name="${CLOUD_NAME}" snapshot_name="${SNAPSHOT_NAME}""
|
||||
'''
|
||||
}
|
||||
}
|
||||
@ -40,8 +40,8 @@ pipeline {
|
||||
}
|
||||
post {
|
||||
always {
|
||||
mail to: 'debezium-qe@redhat.com', subject: "Jenkins node image snapshot history cleanup #${BUILD_NUMBER} finished", body: """
|
||||
${currentBuild.projectName} run ${BUILD_URL} finished with result: ${currentBuild.currentResult}
|
||||
mail to: 'debezium-qe@redhat.com', subject: "Jenkins node image snapshot history cleanup #${env.BUILD_NUMBER} finished", body: """
|
||||
${currentBuild.projectName} run ${env.BUILD_URL} finished with result: ${currentBuild.currentResult}
|
||||
"""
|
||||
}
|
||||
}
|
||||
|
@ -37,7 +37,10 @@ pipeline {
|
||||
expression { !params.APICURIO_PREPARE_BUILD_NUMBER }
|
||||
}
|
||||
steps {
|
||||
copyArtifacts projectName: 'ocp-downstream-apicurio-prepare-job', target: "${WORKSPACE}/apicurio" ,filter: 'apicurio-registry-install-examples.zip', selector: lastSuccessful()
|
||||
copyArtifacts projectName: 'ocp-downstream-apicurio-prepare-job',
|
||||
target: "${WORKSPACE}/apicurio",
|
||||
filter: 'apicurio-registry-install-examples.zip',
|
||||
selector: lastSuccessful()
|
||||
}
|
||||
}
|
||||
stage('Copy apicurio artifacts') {
|
||||
@ -45,7 +48,10 @@ pipeline {
|
||||
expression { params.APICURIO_PREPARE_BUILD_NUMBER }
|
||||
}
|
||||
steps {
|
||||
copyArtifacts projectName: 'ocp-downstream-apicurio-prepare-job', target: "${WORKSPACE}/apicurio" , filter: 'apicurio-registry-install-examples.zip', selector: specific(params.APICURIO_PREPARE_BUILD_NUMBER)
|
||||
copyArtifacts projectName: 'ocp-downstream-apicurio-prepare-job',
|
||||
target: "${WORKSPACE}/apicurio",
|
||||
filter: 'apicurio-registry-install-examples.zip',
|
||||
selector: specific(params.APICURIO_PREPARE_BUILD_NUMBER)
|
||||
}
|
||||
}
|
||||
|
||||
@ -54,7 +60,10 @@ pipeline {
|
||||
expression { !params.STRIMZI_PREPARE_BUILD_NUMBER }
|
||||
}
|
||||
steps {
|
||||
copyArtifacts projectName: 'ocp-downstream-strimzi-prepare-job', target: "${WORKSPACE}/strimzi" , filter: 'amq-streams-install-examples.zip', selector: lastSuccessful()
|
||||
copyArtifacts projectName: 'ocp-downstream-strimzi-prepare-job',
|
||||
target: "${WORKSPACE}/strimzi",
|
||||
filter: 'amq-streams-install-examples.zip',
|
||||
selector: lastSuccessful()
|
||||
}
|
||||
}
|
||||
stage('Copy strimzi artifacts') {
|
||||
@ -62,7 +71,10 @@ pipeline {
|
||||
expression { params.STRIMZI_PREPARE_BUILD_NUMBER }
|
||||
}
|
||||
steps {
|
||||
copyArtifacts projectName: 'ocp-downstream-strimzi-prepare-job', target: "${WORKSPACE}/strimzi" , filter: 'amq-streams-install-examples.zip', selector: specific(params.STRIMZI_PREPARE_BUILD_NUMBER)
|
||||
copyArtifacts projectName: 'ocp-downstream-strimzi-prepare-job',
|
||||
target: "${WORKSPACE}/strimzi",
|
||||
filter: 'amq-streams-install-examples.zip',
|
||||
selector: specific(params.STRIMZI_PREPARE_BUILD_NUMBER)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -72,7 +84,7 @@ pipeline {
|
||||
steps {
|
||||
withCredentials([
|
||||
usernamePassword(credentialsId: "${OCP_CREDENTIALS}", usernameVariable: 'OCP_USERNAME', passwordVariable: 'OCP_PASSWORD'),
|
||||
file(credentialsId: "${PULL_SECRET}", variable: 'SECRET_PATH'),
|
||||
file(credentialsId: "${params.PULL_SECRET}", variable: 'SECRET_PATH'),
|
||||
]) {
|
||||
sh '''
|
||||
oc login -u "${OCP_USERNAME}" -p "${OCP_PASSWORD}" --insecure-skip-tls-verify=true "${OCP_URL}"
|
||||
@ -128,7 +140,7 @@ pipeline {
|
||||
}
|
||||
steps {
|
||||
withCredentials([
|
||||
file(credentialsId: "${PULL_SECRET}", variable: 'SECRET_PATH'),
|
||||
file(credentialsId: "${params.PULL_SECRET}", variable: 'SECRET_PATH'),
|
||||
]) {
|
||||
sh '''
|
||||
source ${DEBEZIUM_LOCATION}/${OCP_PROJECT_NAME}.ocp.env
|
||||
@ -150,7 +162,7 @@ pipeline {
|
||||
}
|
||||
steps {
|
||||
withCredentials([
|
||||
file(credentialsId: "${PULL_SECRET}", variable: 'SECRET_PATH'),
|
||||
file(credentialsId: "${params.PULL_SECRET}", variable: 'SECRET_PATH'),
|
||||
]) {
|
||||
sh '''
|
||||
source ${DEBEZIUM_LOCATION}/${OCP_PROJECT_NAME}.ocp.env
|
||||
@ -170,7 +182,7 @@ pipeline {
|
||||
steps {
|
||||
withCredentials([
|
||||
usernamePassword(credentialsId: "${OCP_CREDENTIALS}", usernameVariable: 'OCP_USERNAME', passwordVariable: 'OCP_PASSWORD'),
|
||||
file(credentialsId: "${PULL_SECRET}", variable: 'SECRET_PATH'),
|
||||
file(credentialsId: "${params.PULL_SECRET}", variable: 'SECRET_PATH'),
|
||||
]) {
|
||||
sh '''
|
||||
cd ${DEBEZIUM_LOCATION}
|
||||
|
@ -1,6 +1,8 @@
|
||||
import groovy.json.*
|
||||
import java.util.stream.*
|
||||
|
||||
import com.cloudbees.groovy.cps.NonCPS
|
||||
|
||||
if (
|
||||
!RELEASE_VERSION ||
|
||||
!DEVELOPMENT_VERSION ||
|
||||
|
@ -52,8 +52,8 @@ pipeline {
|
||||
|
||||
post {
|
||||
always {
|
||||
mail to: MAIL_TO, subject: "Rhel downstream preparation #${BUILD_NUMBER} finished", body: """
|
||||
${currentBuild.projectName} run ${BUILD_URL} finished with result: ${currentBuild.currentResult}
|
||||
mail to: params.MAIL_TO, subject: "Rhel downstream preparation #${env.BUILD_NUMBER} finished", body: """
|
||||
${currentBuild.projectName} run ${env.BUILD_URL} finished with result: ${currentBuild.currentResult}
|
||||
"""
|
||||
}
|
||||
success {
|
||||
|
@ -94,7 +94,7 @@ pipeline {
|
||||
env.TEST_CONNECT_STRZ_BUILD = params.IMAGE_CONNECT_STRZ ? false : true
|
||||
|
||||
// Configure images if provided
|
||||
env.IMAGE_TAG_SUFFIX="${BUILD_NUMBER}"
|
||||
env.IMAGE_TAG_SUFFIX = "${BUILD_NUMBER}"
|
||||
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}" : ""
|
||||
@ -117,13 +117,13 @@ pipeline {
|
||||
|
||||
]) {
|
||||
sh '''
|
||||
set -x
|
||||
set -x
|
||||
docker login -u=${QUAY_USERNAME} -p=${QUAY_PASSWORD} quay.io
|
||||
oc login ${OCP_URL} -u "${OCP_USERNAME}" --password="${OCP_PASSWORD}" --insecure-skip-tls-verify=true >/dev/null
|
||||
'''
|
||||
|
||||
sh '''
|
||||
set -x
|
||||
set -x
|
||||
cd "${WORKSPACE}/debezium"
|
||||
./jenkins-jobs/scripts/ocp-projects.sh --create -t "${BUILD_NUMBER}" --envfile "${OCP_ENV_FILE}"
|
||||
source "${OCP_ENV_FILE}"
|
||||
@ -131,10 +131,10 @@ pipeline {
|
||||
|
||||
sh '''
|
||||
set -x
|
||||
cd ${WORKSPACE}/debezium
|
||||
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
|
||||
@ -151,7 +151,6 @@ pipeline {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
stage('Configure - Apicurio') {
|
||||
when {
|
||||
expression { params.TEST_APICURIO_REGISTRY }
|
||||
@ -166,7 +165,7 @@ pipeline {
|
||||
|
||||
]) {
|
||||
sh '''
|
||||
set -x
|
||||
set -x
|
||||
oc login ${OCP_URL} -u "${OCP_USERNAME}" --password="${OCP_PASSWORD}" --insecure-skip-tls-verify=true >/dev/null
|
||||
'''
|
||||
sh '''
|
||||
@ -207,7 +206,7 @@ pipeline {
|
||||
sh '''
|
||||
set -x
|
||||
cd ${WORKSPACE}/debezium
|
||||
mvn install -Passembly,oracle-all -DskipTests -DskipITs
|
||||
mvn install -Passembly,oracle-all -DskipTests -DskipITs
|
||||
'''
|
||||
}
|
||||
}
|
||||
@ -218,7 +217,7 @@ pipeline {
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
env.MAVEN_OPTS="-DforkCount=0 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=*:5005"
|
||||
env.MAVEN_OPTS = "-DforkCount=0 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=*:5005"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -227,13 +226,13 @@ pipeline {
|
||||
steps {
|
||||
withCredentials([
|
||||
usernamePassword(credentialsId: "${OCP_CREDENTIALS}", usernameVariable: 'OCP_USERNAME', passwordVariable: 'OCP_PASSWORD'),
|
||||
file(credentialsId: "${PULL_SECRET}", variable: 'SECRET_PATH'),
|
||||
file(credentialsId: "${params.PULL_SECRET}", variable: 'SECRET_PATH'),
|
||||
]) {
|
||||
sh '''
|
||||
set -x
|
||||
cd ${WORKSPACE}/debezium
|
||||
source "${OCP_ENV_FILE}"
|
||||
|
||||
|
||||
mvn install -pl debezium-testing/debezium-testing-system -PsystemITs,oracleITs \\
|
||||
${MVN_PROFILE_PROD} \\
|
||||
-Docp.project.debezium="${OCP_PROJECT_DEBEZIUM}" \\
|
||||
@ -257,7 +256,7 @@ pipeline {
|
||||
${MVN_VERSION_KAFKA} \\
|
||||
${MVN_VERSION_AS_DEBEZIUM} \\
|
||||
${MVN_VERSION_AS_APICURIO} \\
|
||||
-Dgroups="${TEST_TAG_EXPRESSION}"
|
||||
-Dgroups="${TEST_TAG_EXPRESSION}"
|
||||
'''
|
||||
}
|
||||
}
|
||||
@ -273,8 +272,8 @@ pipeline {
|
||||
archiveArtifacts '**/target/failsafe-reports/*.xml'
|
||||
junit '**/target/failsafe-reports/*.xml'
|
||||
|
||||
mail to: MAIL_TO, subject: "Debezium OpenShift test run #${BUILD_NUMBER} finished", body: """
|
||||
OpenShift interoperability test run ${BUILD_URL} finished with result: ${currentBuild.currentResult}
|
||||
mail to: params.MAIL_TO, subject: "Debezium OpenShift test run #${env.BUILD_NUMBER} finished", body: """
|
||||
OpenShift interoperability test run ${env.BUILD_URL} finished with result: ${currentBuild.currentResult}
|
||||
"""
|
||||
withCredentials([
|
||||
usernamePassword(credentialsId: "rh-integration-quay-creds", usernameVariable: 'QUAY_USERNAME', passwordVariable: 'QUAY_PASSWORD'),
|
||||
|
@ -38,10 +38,10 @@ pipeline {
|
||||
steps {
|
||||
script {
|
||||
// Configure images if provided
|
||||
env.IMAGE_TAG_SUFFIX="${BUILD_NUMBER}"
|
||||
env.IMAGE_TAG_SUFFIX = "${BUILD_NUMBER}"
|
||||
|
||||
// Apicurio version
|
||||
env.APICURIO_ARTIFACT_VERSION="${APICURIO_VERSION}"
|
||||
env.APICURIO_ARTIFACT_VERSION = "${APICURIO_VERSION}"
|
||||
}
|
||||
withCredentials([
|
||||
usernamePassword(credentialsId: "${QUAY_CREDENTIALS}", usernameVariable: 'QUAY_USERNAME', passwordVariable: 'QUAY_PASSWORD'),
|
||||
@ -52,7 +52,7 @@ pipeline {
|
||||
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"
|
||||
|
||||
|
||||
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
|
||||
@ -133,8 +133,8 @@ pipeline {
|
||||
|
||||
post {
|
||||
always {
|
||||
mail to: MAIL_TO, subject: "Debezium upstream artifact server preparation #${BUILD_NUMBER} finished", body: """
|
||||
${currentBuild.projectName} run ${BUILD_URL} finished with result: ${currentBuild.currentResult}
|
||||
mail to: params.MAIL_TO, subject: "Debezium upstream artifact server preparation #${env.BUILD_NUMBER} finished", body: """
|
||||
${currentBuild.projectName} run ${env.BUILD_URL} finished with result: ${currentBuild.currentResult}
|
||||
"""
|
||||
}
|
||||
success {
|
||||
|
@ -38,10 +38,10 @@ pipeline {
|
||||
steps {
|
||||
script {
|
||||
// Configure images if provided
|
||||
env.IMAGE_TAG_SUFFIX="${BUILD_NUMBER}"
|
||||
env.IMAGE_TAG_SUFFIX = "${BUILD_NUMBER}"
|
||||
|
||||
// Apicurio version
|
||||
env.APICURIO_ARTIFACT_VERSION="${APICURIO_VERSION}"
|
||||
env.APICURIO_ARTIFACT_VERSION = "${APICURIO_VERSION}"
|
||||
}
|
||||
withCredentials([
|
||||
usernamePassword(credentialsId: "${QUAY_CREDENTIALS}", usernameVariable: 'QUAY_USERNAME', passwordVariable: 'QUAY_PASSWORD'),
|
||||
@ -52,7 +52,7 @@ pipeline {
|
||||
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"
|
||||
|
||||
|
||||
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
|
||||
@ -136,8 +136,8 @@ pipeline {
|
||||
|
||||
post {
|
||||
always {
|
||||
mail to: MAIL_TO, subject: "Debezium upstream kafka connect image preparation #${BUILD_NUMBER} finished", body: """
|
||||
${currentBuild.projectName} run ${BUILD_URL} finished with result: ${currentBuild.currentResult}
|
||||
mail to: params.MAIL_TO, subject: "Debezium upstream kafka connect image preparation #${env.BUILD_NUMBER} finished", body: """
|
||||
${currentBuild.projectName} run ${env.BUILD_URL} finished with result: ${currentBuild.currentResult}
|
||||
"""
|
||||
}
|
||||
success {
|
||||
|
@ -1,570 +0,0 @@
|
||||
import groovy.json.*
|
||||
import java.util.stream.*
|
||||
|
||||
if (
|
||||
!RELEASE_VERSION ||
|
||||
!DEVELOPMENT_VERSION ||
|
||||
!DEBEZIUM_REPOSITORY ||
|
||||
!DEBEZIUM_BRANCH ||
|
||||
!DEBEZIUM_ADDITIONAL_REPOSITORIES ||
|
||||
!IMAGES_REPOSITORY ||
|
||||
!IMAGES_BRANCH ||
|
||||
!POSTGRES_DECODER_REPOSITORY ||
|
||||
!POSTGRES_DECODER_BRANCH ||
|
||||
!MAVEN_CENTRAL_SYNC_TIMEOUT
|
||||
) {
|
||||
error 'Input parameters not provided'
|
||||
}
|
||||
|
||||
if (DRY_RUN == null) {
|
||||
DRY_RUN = false
|
||||
}
|
||||
else if (DRY_RUN instanceof String) {
|
||||
DRY_RUN = Boolean.valueOf(DRY_RUN)
|
||||
}
|
||||
echo "Dry run: ${DRY_RUN}"
|
||||
|
||||
GIT_CREDENTIALS_ID = 'debezium-github'
|
||||
JIRA_CREDENTIALS_ID = 'debezium-jira'
|
||||
HOME_DIR = '/home/centos'
|
||||
GPG_DIR = 'gpg'
|
||||
|
||||
DEBEZIUM_DIR = 'debezium'
|
||||
IMAGES_DIR = 'images'
|
||||
POSTGRES_DECODER_DIR = 'postgres-decoder'
|
||||
ORACLE_ARTIFACT_DIR = "$HOME_DIR/oracle-libs/12.2.0.1.0"
|
||||
ORACLE_ARTIFACT_VERSION = '12.2.0.1'
|
||||
|
||||
VERSION_TAG = "v$RELEASE_VERSION"
|
||||
VERSION_PARTS = RELEASE_VERSION.split('\\.')
|
||||
VERSION_MAJOR_MINOR = "${VERSION_PARTS[0]}.${VERSION_PARTS[1]}"
|
||||
IMAGE_TAG = VERSION_MAJOR_MINOR
|
||||
|
||||
POSTGRES_TAGS = ['9.6', '9.6-alpine', '10', '10-alpine', '11', '11-alpine', '12', '12-alpine']
|
||||
CONNECTORS_PER_VERSION = [
|
||||
'0.8' : ['mongodb', 'mysql', 'postgres', 'oracle'],
|
||||
'0.9' : ['mongodb', 'mysql', 'postgres', 'sqlserver', 'oracle'],
|
||||
'0.10': ['mongodb', 'mysql', 'postgres', 'sqlserver', 'oracle'],
|
||||
'1.0' : ['mongodb', 'mysql', 'postgres', 'sqlserver', 'oracle', 'cassandra'],
|
||||
'1.1' : ['mongodb', 'mysql', 'postgres', 'sqlserver', 'oracle', 'cassandra', 'db2'],
|
||||
'1.2' : ['mongodb', 'mysql', 'postgres', 'sqlserver', 'oracle', 'cassandra', 'db2'],
|
||||
'1.3' : ['mongodb', 'mysql', 'postgres', 'sqlserver', 'oracle', 'cassandra', 'db2'],
|
||||
'1.4' : ['mongodb', 'mysql', 'postgres', 'sqlserver', 'oracle', 'cassandra', 'db2', 'vitess']
|
||||
]
|
||||
|
||||
CONNECTORS = CONNECTORS_PER_VERSION[VERSION_MAJOR_MINOR]
|
||||
if (CONNECTORS == null) {
|
||||
error "List of connectors not available"
|
||||
}
|
||||
echo "Connectors to be released: $CONNECTORS"
|
||||
|
||||
ADDITIONAL_REPOSITORIES = [:]
|
||||
DEBEZIUM_ADDITIONAL_REPOSITORIES.split().each {
|
||||
def (id, repository, branch) = it.split('#')
|
||||
ADDITIONAL_REPOSITORIES[id] = ['git': repository, 'branch': branch]
|
||||
echo "Additional repository $repository will be used"
|
||||
}
|
||||
|
||||
IMAGES = ['connect', 'connect-base', 'examples/mysql', 'examples/mysql-gtids', 'examples/postgres', 'examples/mongodb', 'kafka', 'server', 'zookeeper']
|
||||
MAVEN_CENTRAL = 'https://repo1.maven.org/maven2'
|
||||
STAGING_REPO = 'https://oss.sonatype.org/content/repositories'
|
||||
STAGING_REPO_ID = null
|
||||
ADDITIONAL_STAGING_REPO_ID = [:]
|
||||
LOCAL_MAVEN_REPO = "$HOME_DIR/.m2/repository"
|
||||
|
||||
withCredentials([usernamePassword(credentialsId: JIRA_CREDENTIALS_ID, passwordVariable: 'PASSWORD', usernameVariable: 'USERNAME')]) {
|
||||
JIRA_USERNAME = USERNAME
|
||||
JIRA_PASSWORD = PASSWORD
|
||||
JIRA_BASE_URL = "https://issues.jboss.org/rest/api/2"
|
||||
}
|
||||
|
||||
JIRA_PROJECT = 'DBZ'
|
||||
JIRA_VERSION = RELEASE_VERSION
|
||||
|
||||
JIRA_CLOSE_ISSUE = """
|
||||
{
|
||||
"update": {
|
||||
"comment": [
|
||||
{
|
||||
"add": {
|
||||
"body": "Released"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"transition": {
|
||||
"id": "701"
|
||||
}
|
||||
}
|
||||
"""
|
||||
JIRA_CLOSE_RELEASE = """
|
||||
{
|
||||
"released": true,
|
||||
"releaseDate": "${new Date().format('yyyy-MM-dd')}"
|
||||
}
|
||||
"""
|
||||
|
||||
|
||||
def modifyFile(filename, modClosure) {
|
||||
echo "========================================================================"
|
||||
echo "Modifying file $filename"
|
||||
echo "========================================================================"
|
||||
def originalFile = readFile(filename)
|
||||
echo "Content to be modified:\n$originalFile"
|
||||
echo "========================================================================"
|
||||
def updatedFile = modClosure.call(originalFile)
|
||||
echo "Content after modification:\n$updatedFile"
|
||||
echo "========================================================================"
|
||||
writeFile(
|
||||
file: filename,
|
||||
text: updatedFile
|
||||
)
|
||||
}
|
||||
|
||||
@NonCPS
|
||||
def jiraURL(path, params = [:]) {
|
||||
def url = "$JIRA_BASE_URL/$path"
|
||||
if (params) {
|
||||
url <<= '?' << params.collect {k, v -> "$k=${URLEncoder.encode(v, 'US-ASCII')}"}.join('&')
|
||||
}
|
||||
return url.toString().toURL()
|
||||
}
|
||||
|
||||
@NonCPS
|
||||
def jiraGET(path, params = [:]) {
|
||||
jiraURL(path, params).openConnection().with {
|
||||
doOutput = true
|
||||
requestMethod = 'GET'
|
||||
setRequestProperty('Content-Type', 'application/json')
|
||||
setRequestProperty('Authorization', 'Basic ' + "$JIRA_USERNAME:$JIRA_PASSWORD".bytes.encodeBase64().toString())
|
||||
new JsonSlurper().parse(new StringReader(content.text))
|
||||
}
|
||||
}
|
||||
|
||||
@NonCPS
|
||||
def jiraUpdate(path, payload, method = 'POST') {
|
||||
path.toURL().openConnection().with {
|
||||
doOutput = true
|
||||
requestMethod = method
|
||||
setRequestProperty('Content-Type', 'application/json')
|
||||
setRequestProperty('Authorization', 'Basic ' + "$JIRA_USERNAME:$JIRA_PASSWORD".bytes.encodeBase64().toString())
|
||||
outputStream.withWriter { writer ->
|
||||
writer << payload
|
||||
}
|
||||
println content.text
|
||||
}
|
||||
}
|
||||
|
||||
@NonCPS
|
||||
def unresolvedIssuesFromJira() {
|
||||
jiraGET('search', [
|
||||
'jql': "project=$JIRA_PROJECT AND fixVersion=$JIRA_VERSION AND status NOT IN ('Resolved', 'Closed')",
|
||||
'fields': 'key'
|
||||
]).issues.collect { it.key }
|
||||
}
|
||||
|
||||
@NonCPS
|
||||
def issuesWithoutComponentsFromJira() {
|
||||
jiraGET('search', [
|
||||
'jql': "project=$JIRA_PROJECT AND fixVersion=$JIRA_VERSION AND component IS EMPTY",
|
||||
'fields': 'key'
|
||||
]).issues.collect { it.key }
|
||||
}
|
||||
|
||||
@NonCPS
|
||||
def resolvedIssuesFromJira() {
|
||||
jiraGET('search', [
|
||||
'jql': "project=$JIRA_PROJECT AND fixVersion=$JIRA_VERSION AND status='Resolved'",
|
||||
'fields': 'key'
|
||||
]).issues.collect { it.self }
|
||||
}
|
||||
|
||||
@NonCPS
|
||||
def closeJiraIssues() {
|
||||
resolvedIssuesFromJira().each { issue -> jiraUpdate("${issue}/transitions", JIRA_CLOSE_ISSUE) }
|
||||
}
|
||||
|
||||
@NonCPS
|
||||
def closeJiraRelease() {
|
||||
jiraUpdate(jiraGET('project/DBZ/versions').find { it.name == JIRA_VERSION }.self, JIRA_CLOSE_RELEASE, 'PUT')
|
||||
}
|
||||
|
||||
def mvnRelease(repoDir, repoName, branchName, buildArgs = '') {
|
||||
def repoId = null
|
||||
dir(repoDir) {
|
||||
sh "mvn release:clean release:prepare -DreleaseVersion=$RELEASE_VERSION -Dtag=$VERSION_TAG -DdevelopmentVersion=$DEVELOPMENT_VERSION -DpushChanges=${!DRY_RUN} -Darguments=\"-DskipTests -DskipITs -Passembly $buildArgs\" $buildArgs"
|
||||
if (!DRY_RUN) {
|
||||
withCredentials([usernamePassword(credentialsId: GIT_CREDENTIALS_ID, passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) {
|
||||
sh "git push \"https://\${GIT_USERNAME}:\${GIT_PASSWORD}@${repoName}\" HEAD:$branchName --follow-tags"
|
||||
}
|
||||
}
|
||||
withCredentials([
|
||||
string(credentialsId: 'debezium-ci-gpg-passphrase', variable: 'GPG_PASSPHRASE'),
|
||||
usernamePassword(credentialsId: GIT_CREDENTIALS_ID, passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) {
|
||||
def mvnlog = sh(script: "mvn release:perform -DlocalCheckout=$DRY_RUN -DconnectionUrl=scm:git:https://\${GIT_USERNAME}:\${GIT_PASSWORD}@${repoName} -Darguments=\"-s $HOME/.m2/settings-snapshots.xml -Dgpg.homedir=\$WORKSPACE/$GPG_DIR -Dgpg.passphrase=$GPG_PASSPHRASE -DskipTests -DskipITs $buildArgs\" $buildArgs", returnStdout: true).trim()
|
||||
echo mvnlog
|
||||
def match = mvnlog =~ /Created staging repository with ID \"(iodebezium-.+)\"/
|
||||
if (!match[0]) {
|
||||
error 'Could not find staging repository ID'
|
||||
}
|
||||
repoId = match[0][1]
|
||||
echo "Using staging repository $repoId"
|
||||
}
|
||||
}
|
||||
return repoId
|
||||
}
|
||||
|
||||
node('Slave') {
|
||||
|
||||
stage ('Validate parameters') {
|
||||
if (!(RELEASE_VERSION ==~ /\d+\.\d+.\d+\.(Final|(Alpha|Beta|CR)\d+)/)) {
|
||||
error "Release version '$RELEASE_VERSION' is not of the required format x.y.z.suffix"
|
||||
}
|
||||
if (!(DEVELOPMENT_VERSION ==~ /\d+\.\d+.\d+\-SNAPSHOT/)) {
|
||||
error "Development version '$DEVELOPMENT_VERSION' is not of the required format x.y.z-SNAPSHOT"
|
||||
}
|
||||
}
|
||||
|
||||
stage ('Initialize') {
|
||||
dir('.') {
|
||||
deleteDir()
|
||||
sh "git config user.email || git config --global user.email \"debezium@gmail.com\" && git config --global user.name \"Debezium Builder\""
|
||||
sh "ssh-keyscan github.com >> $HOME_DIR/.ssh/known_hosts"
|
||||
}
|
||||
dir(GPG_DIR) {
|
||||
withCredentials([
|
||||
string(credentialsId: 'debezium-ci-gpg-passphrase', variable: 'PASSPHRASE'),
|
||||
[$class: 'FileBinding', credentialsId: 'debezium-ci-secret-key', variable: 'SECRET_KEY_FILE']]) {
|
||||
echo 'Creating GPG directory'
|
||||
def gpglog = sh(script: "gpg --import --batch --passphrase $PASSPHRASE --homedir . $SECRET_KEY_FILE", returnStdout: true).trim()
|
||||
echo gpglog
|
||||
}
|
||||
}
|
||||
checkout([$class: 'GitSCM',
|
||||
branches: [[name: "*/$DEBEZIUM_BRANCH"]],
|
||||
doGenerateSubmoduleConfigurations: false,
|
||||
extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: DEBEZIUM_DIR]],
|
||||
submoduleCfg: [],
|
||||
userRemoteConfigs: [[url: "https://$DEBEZIUM_REPOSITORY", credentialsId: GIT_CREDENTIALS_ID]]
|
||||
]
|
||||
)
|
||||
ADDITIONAL_REPOSITORIES.each { id, repo ->
|
||||
checkout([$class: 'GitSCM',
|
||||
branches: [[name: "*/${repo.branch}"]],
|
||||
doGenerateSubmoduleConfigurations: false,
|
||||
extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: id]],
|
||||
submoduleCfg: [],
|
||||
userRemoteConfigs: [[url: "https://${repo.git}", credentialsId: GIT_CREDENTIALS_ID]]
|
||||
]
|
||||
)
|
||||
}
|
||||
checkout([$class: 'GitSCM',
|
||||
branches: [[name: "*/$IMAGES_BRANCH"]],
|
||||
doGenerateSubmoduleConfigurations: false,
|
||||
extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: IMAGES_DIR]],
|
||||
submoduleCfg: [],
|
||||
userRemoteConfigs: [[url: "https://$IMAGES_REPOSITORY", credentialsId: GIT_CREDENTIALS_ID]]
|
||||
]
|
||||
)
|
||||
checkout([$class: 'GitSCM',
|
||||
branches: [[name: "*/$POSTGRES_DECODER_BRANCH"]],
|
||||
doGenerateSubmoduleConfigurations: false,
|
||||
extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: POSTGRES_DECODER_DIR]],
|
||||
submoduleCfg: [],
|
||||
userRemoteConfigs: [[url: "https://$POSTGRES_DECODER_REPOSITORY", credentialsId: GIT_CREDENTIALS_ID]]
|
||||
]
|
||||
)
|
||||
echo "Images tagged with $IMAGE_TAG will be used"
|
||||
dir(ORACLE_ARTIFACT_DIR) {
|
||||
sh "mvn install:install-file -DgroupId=com.oracle.instantclient -DartifactId=ojdbc8 -Dversion=$ORACLE_ARTIFACT_VERSION -Dpackaging=jar -Dfile=ojdbc8.jar"
|
||||
sh "mvn install:install-file -DgroupId=com.oracle.instantclient -DartifactId=xstreams -Dversion=$ORACLE_ARTIFACT_VERSION -Dpackaging=jar -Dfile=xstreams.jar"
|
||||
}
|
||||
}
|
||||
|
||||
stage ('Check Contributors') {
|
||||
if (!DRY_RUN) {
|
||||
dir (DEBEZIUM_DIR) {
|
||||
def rc = sh(script: "jenkins-jobs/scripts/check-contributors.sh", returnStatus: true)
|
||||
if (rc != 0) {
|
||||
error "Error, not all contributors have been added to COPYRIGHT.txt. See log for details."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage ('Check Jira') {
|
||||
if (!DRY_RUN) {
|
||||
unresolvedIssues = unresolvedIssuesFromJira()
|
||||
issuesWithoutComponents = issuesWithoutComponentsFromJira()
|
||||
if (!resolvedIssuesFromJira()) {
|
||||
error "Error, there are no resolved issues for the release"
|
||||
}
|
||||
if (unresolvedIssues) {
|
||||
error "Error, issues ${unresolvedIssues.toString()} must be resolved"
|
||||
}
|
||||
if (issuesWithoutComponents) {
|
||||
error "Error, issues ${issuesWithoutComponents.toString()} must have component set"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage ('Check changelog') {
|
||||
if (!DRY_RUN) {
|
||||
if (!new URL("https://raw.githubusercontent.com/debezium/debezium/$DEBEZIUM_BRANCH/CHANGELOG.md").text.contains(RELEASE_VERSION) ||
|
||||
!new URL("https://raw.githubusercontent.com/debezium/debezium.github.io/develop/_data/releases/$VERSION_MAJOR_MINOR/${RELEASE_VERSION}.yml").text.contains('summary:') ||
|
||||
!new URL("https://raw.githubusercontent.com/debezium/debezium.github.io/develop/releases/$VERSION_MAJOR_MINOR/release-notes.asciidoc").text.contains(RELEASE_VERSION)
|
||||
) {
|
||||
error 'Changelog was not modified to include release information'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage ('Dockerfiles present') {
|
||||
def missingImages = []
|
||||
for (i = 0; i < IMAGES.size(); i++) {
|
||||
def image = IMAGES[i]
|
||||
if (!fileExists("$IMAGES_DIR/$image/$IMAGE_TAG/Dockerfile")) {
|
||||
missingImages << image
|
||||
}
|
||||
}
|
||||
if (missingImages) {
|
||||
error "Dockerfile(s) not present for $missingImages tag $IMAGE_TAG"
|
||||
}
|
||||
}
|
||||
|
||||
stage ('Prepare release') {
|
||||
dir(DEBEZIUM_DIR) {
|
||||
sh "mvn clean install -DskipTests -DskipITs -Poracle-all"
|
||||
}
|
||||
STAGING_REPO_ID = mvnRelease(DEBEZIUM_DIR, DEBEZIUM_REPOSITORY, DEBEZIUM_BRANCH)
|
||||
ADDITIONAL_REPOSITORIES.each { id, repo ->
|
||||
dir(id) {
|
||||
modifyFile("pom.xml") {
|
||||
it.replaceFirst('<version>.+</version>\n </parent>', "<version>$RELEASE_VERSION</version>\n </parent>")
|
||||
}
|
||||
sh "git commit -a -m '[release] Stable parent $RELEASE_VERSION for release'"
|
||||
sh "mvn clean install -DskipTests -DskipITs"
|
||||
}
|
||||
ADDITIONAL_REPOSITORIES[id].mavenRepoId = mvnRelease(id, repo.git, repo.branch, "-Dversion.debezium=$RELEASE_VERSION")
|
||||
dir(id) {
|
||||
modifyFile("pom.xml") {
|
||||
it.replaceFirst('<version>.+</version>\n </parent>', "<version>$DEVELOPMENT_VERSION</version>\n </parent>")
|
||||
}
|
||||
sh "git commit -a -m '[release] New parent $DEVELOPMENT_VERSION for development'"
|
||||
if (!DRY_RUN) {
|
||||
withCredentials([usernamePassword(credentialsId: GIT_CREDENTIALS_ID, passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) {
|
||||
sh """
|
||||
git push https://\${GIT_USERNAME}:\${GIT_PASSWORD}@${repo.git} HEAD:${repo.branch}
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage ('Verify images') {
|
||||
def sums = [:]
|
||||
for (i = 0; i < CONNECTORS.size(); i++) {
|
||||
def connector = CONNECTORS[i]
|
||||
dir ("$LOCAL_MAVEN_REPO/io/debezium/debezium-connector-$connector/$RELEASE_VERSION") {
|
||||
def md5sum = sh (script: "md5sum -b debezium-connector-${connector}-${RELEASE_VERSION}-plugin.tar.gz | awk '{print \$1}'", returnStdout: true).trim()
|
||||
sums["${connector.toUpperCase()}"] = md5sum
|
||||
}
|
||||
}
|
||||
echo "MD5 sums calculated: ${sums}"
|
||||
def serverSum = sh (script: "md5sum -b $LOCAL_MAVEN_REPO/io/debezium/debezium-server-dist/$RELEASE_VERSION/debezium-server-dist-${RELEASE_VERSION}.tar.gz | awk '{print \$1}'", returnStdout: true).trim()
|
||||
sums['SCRIPTING'] = sh (script: "md5sum -b $LOCAL_MAVEN_REPO/io/debezium/debezium-scripting/$RELEASE_VERSION/debezium-scripting-${RELEASE_VERSION}.tar.gz | awk '{print \$1}'", returnStdout: true).trim()
|
||||
dir ("$IMAGES_DIR/connect/$IMAGE_TAG") {
|
||||
echo "Modifying main Dockerfile"
|
||||
def additionalRepoList = ADDITIONAL_REPOSITORIES.collect({ id, repo -> "${id.toUpperCase()}=$STAGING_REPO/${repo.mavenRepoId}" }).join(' ')
|
||||
modifyFile('Dockerfile') {
|
||||
def ret = it
|
||||
.replaceFirst('DEBEZIUM_VERSION="\\S+"', "DEBEZIUM_VERSION=\"$RELEASE_VERSION\"")
|
||||
.replaceFirst('MAVEN_REPO_CENTRAL="[^"]*"', "MAVEN_REPO_CENTRAL=\"$STAGING_REPO/$STAGING_REPO_ID/\"")
|
||||
.replaceFirst('MAVEN_REPOS_ADDITIONAL="[^"]*"', "MAVEN_REPOS_ADDITIONAL=\"$additionalRepoList\"")
|
||||
for (entry in sums) {
|
||||
ret = ret.replaceFirst("${entry.key}_MD5=\\S+", "${entry.key}_MD5=${entry.value}")
|
||||
}
|
||||
return ret
|
||||
}
|
||||
modifyFile('Dockerfile.local') {
|
||||
it
|
||||
.replaceFirst('DEBEZIUM_VERSION=\\S+', "DEBEZIUM_VERSION=$RELEASE_VERSION")
|
||||
}
|
||||
}
|
||||
echo "Modifying snapshot Dockerfile"
|
||||
dir ("$IMAGES_DIR/connect/snapshot") {
|
||||
modifyFile('Dockerfile') {
|
||||
it.replaceFirst('DEBEZIUM_VERSION=\\S+', "DEBEZIUM_VERSION=$DEVELOPMENT_VERSION")
|
||||
}
|
||||
}
|
||||
echo "Modifying Server Dockerfile"
|
||||
dir ("$IMAGES_DIR/server/$IMAGE_TAG") {
|
||||
modifyFile('Dockerfile') {
|
||||
it
|
||||
.replaceFirst('MAVEN_REPO_CENTRAL="[^"]*"', "MAVEN_REPO_CENTRAL=\"$STAGING_REPO/$STAGING_REPO_ID/\"")
|
||||
.replaceFirst('DEBEZIUM_VERSION=\\S+', "DEBEZIUM_VERSION=$RELEASE_VERSION")
|
||||
.replaceFirst('SERVER_MD5=\\S+', "SERVER_MD5=$serverSum")
|
||||
}
|
||||
}
|
||||
dir ("$IMAGES_DIR") {
|
||||
modifyFile('build-all.sh') {
|
||||
it.replaceFirst('DEBEZIUM_VERSION=\"\\S+\"', "DEBEZIUM_VERSION=\"$IMAGE_TAG\"")
|
||||
}
|
||||
}
|
||||
dir(IMAGES_DIR) {
|
||||
sh "./build-all.sh"
|
||||
}
|
||||
sh """
|
||||
docker rm -f connect zookeeper kafka mysql || true
|
||||
docker run -it -d --name mysql -p 53306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw debezium/example-mysql:$IMAGE_TAG
|
||||
docker run -it -d --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 debezium/zookeeper:$IMAGE_TAG
|
||||
sleep 10
|
||||
docker run -it -d --name kafka -p 9092:9092 --link zookeeper:zookeeper debezium/kafka:$IMAGE_TAG
|
||||
sleep 10
|
||||
docker run -it -d --name connect -p 8083:8083 -e GROUP_ID=1 -e CONFIG_STORAGE_TOPIC=my_connect_configs -e OFFSET_STORAGE_TOPIC=my_connect_offsets --link zookeeper:zookeeper --link kafka:kafka --link mysql:mysql debezium/connect:$IMAGE_TAG
|
||||
sleep 30
|
||||
|
||||
curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" localhost:8083/connectors/ -d '
|
||||
{
|
||||
"name": "inventory-connector",
|
||||
"config": {
|
||||
"name": "inventory-connector",
|
||||
"connector.class": "io.debezium.connector.mysql.MySqlConnector",
|
||||
"tasks.max": "1",
|
||||
"database.hostname": "mysql",
|
||||
"database.port": "3306",
|
||||
"database.user": "debezium",
|
||||
"database.password": "dbz",
|
||||
"database.server.id": "184054",
|
||||
"topic.prefix": "dbserver1",
|
||||
"database.include.list": "inventory",
|
||||
"schema.history.internal.kafka.bootstrap.servers": "kafka:9092",
|
||||
"schema.history.internal.kafka.topic": "schema-changes.inventory"
|
||||
}
|
||||
}
|
||||
'
|
||||
sleep 10
|
||||
"""
|
||||
timeout (time: 2, unit: java.util.concurrent.TimeUnit.MINUTES) {
|
||||
def watcherlog = sh(script: "docker run --name watcher --rm --link zookeeper:zookeeper --link kafka:kafka debezium/kafka:$IMAGE_TAG watch-topic -a -k dbserver1.inventory.customers --max-messages 2 2>&1", returnStdout: true).trim()
|
||||
echo watcherlog
|
||||
sh 'docker rm -f connect zookeeper kafka mysql'
|
||||
if (!watcherlog.contains('Processed a total of 2 messages')) {
|
||||
error 'Tutorial watcher did not reported messages'
|
||||
}
|
||||
}
|
||||
dir ("$IMAGES_DIR/connect/$IMAGE_TAG") {
|
||||
modifyFile('Dockerfile') {
|
||||
it
|
||||
.replaceFirst('MAVEN_REPO_CENTRAL="[^"]+"', "MAVEN_REPO_CENTRAL=\"\"")
|
||||
.replaceFirst('MAVEN_REPOS_ADDITIONAL="[^"]+"', "MAVEN_REPOS_ADDITIONAL=\"\"")
|
||||
}
|
||||
modifyFile('Dockerfile.local') {
|
||||
it
|
||||
.replaceFirst('DEBEZIUM_VERSION=\"\\S+\"', "DEBEZIUM_VERSION=\"$RELEASE_VERSION\"")
|
||||
}
|
||||
}
|
||||
dir ("$IMAGES_DIR/server/$IMAGE_TAG") {
|
||||
modifyFile('Dockerfile') {
|
||||
it
|
||||
.replaceFirst('MAVEN_REPO_CENTRAL="[^"]*"', "MAVEN_REPO_CENTRAL=\"$MAVEN_CENTRAL\"")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage ('Push to Central') {
|
||||
echo '================================================================================='
|
||||
echo '| |'
|
||||
echo '| |'
|
||||
echo '| Log in into the OSS Central and release the staging repo" |'
|
||||
echo '| |'
|
||||
echo '| |'
|
||||
echo '================================================================================='
|
||||
}
|
||||
|
||||
stage ('Wait for Central sync') {
|
||||
if (!DRY_RUN) {
|
||||
timeout (time: MAVEN_CENTRAL_SYNC_TIMEOUT as int, unit: java.util.concurrent.TimeUnit.HOURS) {
|
||||
while (true) {
|
||||
failed = false
|
||||
for (i = 0; i < CONNECTORS.size(); i++) {
|
||||
def connector = CONNECTORS[i]
|
||||
def curl = sh(returnStatus: true, script: "curl -IfskL -o /dev/null https://repo1.maven.org/maven2/io/debezium/debezium-connector-$connector/${RELEASE_VERSION}/debezium-connector-$connector-${RELEASE_VERSION}-plugin.tar.gz")
|
||||
if (curl) {
|
||||
echo "Connector $connector not yet in Maven Central"
|
||||
failed = true
|
||||
}
|
||||
}
|
||||
if (!failed) {
|
||||
break
|
||||
}
|
||||
sleep 30
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage ('Cleanup Jira') {
|
||||
if (!DRY_RUN) {
|
||||
closeJiraIssues()
|
||||
closeJiraRelease()
|
||||
}
|
||||
}
|
||||
|
||||
stage('PostgreSQL Decoder') {
|
||||
if (!DRY_RUN) {
|
||||
dir(POSTGRES_DECODER_DIR) {
|
||||
withCredentials([usernamePassword(credentialsId: GIT_CREDENTIALS_ID, passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) {
|
||||
sh "git tag $VERSION_TAG && git push \"https://\${GIT_USERNAME}:\${GIT_PASSWORD}@${POSTGRES_DECODER_REPOSITORY}\" $VERSION_TAG"
|
||||
}
|
||||
}
|
||||
}
|
||||
dir ("$IMAGES_DIR") {
|
||||
for (tag in POSTGRES_TAGS) {
|
||||
modifyFile("postgres/$tag/Dockerfile") {
|
||||
it.replaceFirst('PLUGIN_VERSION=\\S+', "PLUGIN_VERSION=$VERSION_TAG")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage ('Update images') {
|
||||
dir ("$IMAGES_DIR") {
|
||||
// Change of major/minor version - need to provide a new image tag for next releases
|
||||
if (!DEVELOPMENT_VERSION.startsWith(IMAGE_TAG)) {
|
||||
def version = DEVELOPMENT_VERSION.split('\\.')
|
||||
def nextTag = "${version[0]}.${version[1]}"
|
||||
for (i = 0; i < IMAGES.size(); i++) {
|
||||
def image = IMAGES[i]
|
||||
if ((new File("$image/$nextTag")).exists()) {
|
||||
continue
|
||||
}
|
||||
sh "cp -r $image/$IMAGE_TAG $image/$nextTag && git add $image/$nextTag"
|
||||
}
|
||||
modifyFile('connect/snapshot/Dockerfile') {
|
||||
it.replaceFirst('FROM \\S+', "FROM debezium/connect-base:$nextTag")
|
||||
}
|
||||
modifyFile("connect/$nextTag/Dockerfile") {
|
||||
it.replaceFirst('FROM \\S+', "FROM debezium/connect-base:$nextTag")
|
||||
}
|
||||
modifyFile("connect/$nextTag/Dockerfile.local") {
|
||||
it
|
||||
.replaceFirst('FROM \\S+', "FROM debezium/connect-base:$nextTag")
|
||||
.replaceFirst('DEBEZIUM_VERSION=\\S+', "DEBEZIUM_VERSION=${DEVELOPMENT_VERSION - '-SNAPSHOT'}")
|
||||
}
|
||||
modifyFile("connect-base/$nextTag/Dockerfile") {
|
||||
it.replaceFirst('FROM \\S+', "FROM debezium/kafka:$nextTag")
|
||||
}
|
||||
}
|
||||
if (!DRY_RUN) {
|
||||
withCredentials([usernamePassword(credentialsId: GIT_CREDENTIALS_ID, passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) {
|
||||
sh """
|
||||
git commit -a -m "Updated container images for release $RELEASE_VERSION" && git push https://\${GIT_USERNAME}:\${GIT_PASSWORD}@${IMAGES_REPOSITORY} HEAD:$IMAGES_BRANCH
|
||||
git tag $VERSION_TAG && git push https://\${GIT_USERNAME}:\${GIT_PASSWORD}@${IMAGES_REPOSITORY} $VERSION_TAG
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user