From dbb2434465f328ebfc987918cc7452ea6229c8b5 Mon Sep 17 00:00:00 2001 From: Jiri Pechanec Date: Tue, 5 Mar 2024 14:50:22 +0100 Subject: [PATCH] DBZ-2002 Add IBMI connector to CI and release --- .../actions/build-debezium-ibmi/action.yml | 47 +++++++++++++++++++ .github/workflows/debezium-workflow-pr.yml | 31 +++++++++++- .github/workflows/debezium-workflow-push.yml | 28 +++++++++++ .github/workflows/jdk-outreach-workflow.yml | 46 ++++++++++++++++++ .../release/release_deploy_snapshots.groovy | 2 +- .../job-dsl/release/release_upstream.groovy | 2 +- .../pipelines/release/release-pipeline.groovy | 2 +- jenkins-jobs/scripts/check-contributors.sh | 2 +- 8 files changed, 155 insertions(+), 5 deletions(-) create mode 100644 .github/actions/build-debezium-ibmi/action.yml diff --git a/.github/actions/build-debezium-ibmi/action.yml b/.github/actions/build-debezium-ibmi/action.yml new file mode 100644 index 000000000..275249a4a --- /dev/null +++ b/.github/actions/build-debezium-ibmi/action.yml @@ -0,0 +1,47 @@ +name: "Build IBMi" +description: "Builds the Debezium IBMi connector" + +inputs: + path-core: + description: "Debezium core repository checkout path" + required: true + path-ibmi: + description: "Debezium IBMi repository checkout path" + required: true + shell: + description: "The shell to use" + required: false + default: bash + +runs: + using: "composite" + steps: + - name: Build Debezium (Core) + shell: ${{ inputs.shell }} + run: > + ./${{ inputs.path-core }}/mvnw clean install -B -ntp -f ${{ inputs.path-core }}/pom.xml + -pl debezium-assembly-descriptors,debezium-bom,debezium-core,debezium-embedded,:debezium-ide-configs,:debezium-checkstyle,:debezium-revapi + -am + -DskipTests=true + -DskipITs=true + -Dcheckstyle.skip=true + -Dformat.skip=true + -Drevapi.skip + -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn + -Dmaven.wagon.http.pool=false + -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 + + - name: Build IBMi + shell: ${{ inputs.shell }} + run: > + ./${{ inputs.path-core }}/mvnw clean install -B -ntp -f ${{ inputs.path-ibmi }}/pom.xml + -Passembly + -Dcheckstyle.skip=true + -Dformat.skip=true + -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn + -Dmaven.wagon.http.pool=false + -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 + -Ddebezium.test.records.waittime=5 + -Ddebezium.test.records.waittime.after.nulls=5 + -DfailFlakyTests=false + -DskipITs diff --git a/.github/workflows/debezium-workflow-pr.yml b/.github/workflows/debezium-workflow-pr.yml index 5bf884563..ac6ed0837 100644 --- a/.github/workflows/debezium-workflow-pr.yml +++ b/.github/workflows/debezium-workflow-pr.yml @@ -480,6 +480,35 @@ jobs: path-core: core path-db2: db2 + build_ibmi: + name: "IBMi" + needs: [ check_style, file_changes ] + runs-on: ubuntu-latest + if: ${{ needs.file_changes.outputs.common-changed == 'true' }} + steps: + - name: Checkout Action (Debezium Core) + uses: actions/checkout@v4 + with: + path: core + + - name: Checkout Action (IBMi) + uses: actions/checkout@v4 + with: + repository: debezium/debezium-connector-ibmi + path: ibmi + + - uses: ./core/.github/actions/setup-java + + - uses: ./core/.github/actions/maven-cache + with: + # We specifically only use the hash of the pom files from the core repository + key: maven-debezium-test-build-${{ hashFiles('core/**/pom.xml') }} + + - uses: ./core/.github/actions/build-debezium-ibmi + with: + path-core: core + path-ibmi: ibmi + # Approx 45m build_informix: name: "Informix" @@ -627,4 +656,4 @@ jobs: - uses: ./core/.github/actions/build-debezium-server with: path-core: core - path-server: server \ No newline at end of file + path-server: server diff --git a/.github/workflows/debezium-workflow-push.yml b/.github/workflows/debezium-workflow-push.yml index e1292516c..5554197af 100644 --- a/.github/workflows/debezium-workflow-push.yml +++ b/.github/workflows/debezium-workflow-push.yml @@ -355,6 +355,34 @@ jobs: path-core: core path-informix: informix + build_ibmi: + name: "IBMi" + needs: [ check_style ] + runs-on: ubuntu-latest + steps: + - name: Checkout Action (Debezium Core) + uses: actions/checkout@v4 + with: + path: core + + - name: Checkout Action (IBMi) + uses: actions/checkout@v4 + with: + repository: debezium/debezium-connector-ibmi + path: ibmi + + - uses: ./core/.github/actions/setup-java + + - uses: ./core/.github/actions/maven-cache + with: + # We specifically only use the hash of the pom files from the core repository + key: maven-debezium-test-push-build-${{ hashFiles('core/**/pom.xml') }} + + - uses: ./core/.github/actions/build-debezium-ibmi + with: + path-core: core + path-ibmi: ibmi + # Approx 20m build_vitess: name: "Vitess" diff --git a/.github/workflows/jdk-outreach-workflow.yml b/.github/workflows/jdk-outreach-workflow.yml index 1cf7fdc24..225b3065f 100644 --- a/.github/workflows/jdk-outreach-workflow.yml +++ b/.github/workflows/jdk-outreach-workflow.yml @@ -371,6 +371,52 @@ jobs: -Ddebezium.test.records.waittime.after.nulls=5 -DfailFlakyTests=false ${{ matrix.feature.extra }} + ibmi: + runs-on: ubuntu-latest + strategy: + matrix: + feature: [ { release: ga, args: '-DskipITs=true -DskipTests=true', extra: '' }, { release: ea, args: '', extra: '-Dnet.bytebuddy.experimental=true' } ] + fail-fast: false + name: IBMi - Java ${{ matrix.feature.release }} + steps: + - name: Checkout Core + uses: actions/checkout@v4 + with: + path: core + - name: Checkout IBMi + uses: actions/checkout@v4 + with: + repository: debezium/debezium-connector-ibmi + path: ibmi + - name: Setup OpenJDK + uses: oracle-actions/setup-java@v1 + with: + website: jdk.java.net + release: ${{ matrix.feature.release }} + - name: Build Debezium Core + run: > + ./core/mvnw clean install -f core/pom.xml + -DskipTests + -DskipITs + -Dformat.formatter.goal=validate + -Dformat.imports.goal=check + -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false + -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 + ${{ matrix.feature.extra }} + - name: Build Debezium Connector IBMi + run: > + ./core/mvnw clean install -f ibmi/pom.xml + -Passembly ${{ matrix.feature.args }} + -Dformat.formatter.goal=validate + -Dformat.imports.goal=check + -Dhttp.keepAlive=false + -Dmaven.wagon.http.pool=false + -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 + -Ddebezium.test.records.waittime=5 + -Ddebezium.test.records.waittime.after.nulls=5 + -DfailFlakyTests=false + -DskipITs + ${{ matrix.feature.extra }} quarkus-outbox: runs-on: ubuntu-latest strategy: diff --git a/jenkins-jobs/job-dsl/release/release_deploy_snapshots.groovy b/jenkins-jobs/job-dsl/release/release_deploy_snapshots.groovy index dd851e6c0..1aa4eabc1 100644 --- a/jenkins-jobs/job-dsl/release/release_deploy_snapshots.groovy +++ b/jenkins-jobs/job-dsl/release/release_deploy_snapshots.groovy @@ -27,7 +27,7 @@ pipelineJob('release/release-deploy_snapshots_pipeline') { stringParam('DEBEZIUM_BRANCH', 'main', 'A branch from which Debezium is built') stringParam( 'DEBEZIUM_ADDITIONAL_REPOSITORIES', - 'db2#github.com/debezium/debezium-connector-db2.git#main vitess#github.com/debezium/debezium-connector-vitess.git#main cassandra#github.com/debezium/debezium-connector-cassandra.git#main spanner#github.com/debezium/debezium-connector-spanner.git#main jdbc#github.com/debezium/debezium-connector-jdbc.git#main informix#github.com/debezium/debezium-connector-informix.git#main server#github.com/debezium/debezium-server.git#main operator#github.com/debezium/debezium-operator.git#main', + 'db2#github.com/debezium/debezium-connector-db2.git#main vitess#github.com/debezium/debezium-connector-vitess.git#main cassandra#github.com/debezium/debezium-connector-cassandra.git#main spanner#github.com/debezium/debezium-connector-spanner.git#main jdbc#github.com/debezium/debezium-connector-jdbc.git#main informix#github.com/debezium/debezium-connector-informix.git#main ibmi#github.com/debezium/debezium-connector-ibmi.git#main server#github.com/debezium/debezium-server.git#main operator#github.com/debezium/debezium-operator.git#main', 'A space separated list of additional repositories from which Debezium connectors are built (id#repo#branch)' ) } diff --git a/jenkins-jobs/job-dsl/release/release_upstream.groovy b/jenkins-jobs/job-dsl/release/release_upstream.groovy index f9dcca234..a526b289e 100644 --- a/jenkins-jobs/job-dsl/release/release_upstream.groovy +++ b/jenkins-jobs/job-dsl/release/release_upstream.groovy @@ -24,7 +24,7 @@ pipelineJob('release/release-debezium-upstream') { stringParam('DEBEZIUM_BRANCH', 'main', 'A branch from which Debezium is built') stringParam( 'DEBEZIUM_ADDITIONAL_REPOSITORIES', - 'jdbc#github.com/debezium/debezium-connector-jdbc.git#main spanner#github.com/debezium/debezium-connector-spanner.git#main db2#github.com/debezium/debezium-connector-db2.git#main vitess#github.com/debezium/debezium-connector-vitess.git#main cassandra#github.com/debezium/debezium-connector-cassandra.git#main informix#github.com/debezium/debezium-connector-informix.git#main server#github.com/debezium/debezium-server.git#main operator#github.com/debezium/debezium-operator.git#main', + 'jdbc#github.com/debezium/debezium-connector-jdbc.git#main spanner#github.com/debezium/debezium-connector-spanner.git#main db2#github.com/debezium/debezium-connector-db2.git#main vitess#github.com/debezium/debezium-connector-vitess.git#main cassandra#github.com/debezium/debezium-connector-cassandra.git#main informix#github.com/debezium/debezium-connector-informix.git#main ibmi#github.com/debezium/debezium-connector-ibmi.git#main server#github.com/debezium/debezium-server.git#main operator#github.com/debezium/debezium-operator.git#main', 'A space separated list of additional repositories from which Debezium incubating components are built (id#repo#branch)' ) stringParam('IMAGES_REPOSITORY', 'github.com/debezium/container-images.git', 'Repository from which Debezium images are built') diff --git a/jenkins-jobs/pipelines/release/release-pipeline.groovy b/jenkins-jobs/pipelines/release/release-pipeline.groovy index 3760bd2d1..58902dd33 100644 --- a/jenkins-jobs/pipelines/release/release-pipeline.groovy +++ b/jenkins-jobs/pipelines/release/release-pipeline.groovy @@ -82,7 +82,7 @@ CONNECTORS_PER_VERSION = [ '2.3' : ['mongodb', 'mysql', 'postgres', 'sqlserver', 'oracle', 'cassandra-3', 'cassandra-4', 'db2', 'vitess', 'spanner', 'jdbc'], '2.4' : ['mongodb', 'mysql', 'postgres', 'sqlserver', 'oracle', 'cassandra-3', 'cassandra-4', 'db2', 'vitess', 'spanner', 'jdbc'], '2.5' : ['mongodb', 'mysql', 'postgres', 'sqlserver', 'oracle', 'cassandra-3', 'cassandra-4', 'db2', 'vitess', 'spanner', 'jdbc', 'informix'], - '2.6' : ['mongodb', 'mysql', 'postgres', 'sqlserver', 'oracle', 'cassandra-3', 'cassandra-4', 'db2', 'vitess', 'spanner', 'jdbc', 'informix'] + '2.6' : ['mongodb', 'mysql', 'postgres', 'sqlserver', 'oracle', 'cassandra-3', 'cassandra-4', 'db2', 'vitess', 'spanner', 'jdbc', 'informix', 'ibmi'] ] CONNECTORS = CONNECTORS_PER_VERSION[VERSION_MAJOR_MINOR] diff --git a/jenkins-jobs/scripts/check-contributors.sh b/jenkins-jobs/scripts/check-contributors.sh index b4f18fdd4..befd7a97a 100755 --- a/jenkins-jobs/scripts/check-contributors.sh +++ b/jenkins-jobs/scripts/check-contributors.sh @@ -10,7 +10,7 @@ ALIASES="jenkins-jobs/scripts/config/Aliases.txt" declare -a DEBEZIUM_REPOS if [ $# -eq 0 ];then - DEBEZIUM_REPOS=("debezium" "debezium-connector-db2" "debezium-connector-cassandra" "debezium-connector-vitess" "debezium-connector-spanner" "debezium-connector-jdbc" "debezium-connector-informix" "container-images" "debezium-server") + DEBEZIUM_REPOS=("debezium" "debezium-connector-db2" "debezium-connector-cassandra" "debezium-connector-vitess" "debezium-connector-spanner" "debezium-connector-jdbc" "debezium-connector-informix" "debezium-connector-ibmi" "container-images" "debezium-server") else DEBEZIUM_REPOS=( "$@" ) fi