From 0c7d7fb2334201be25c36f99dc843d5485fb3cd0 Mon Sep 17 00:00:00 2001 From: rmoff Date: Fri, 30 Jan 2026 15:29:37 +0000 Subject: [PATCH] Add Kafka Connect artifact publish to release process --- kafka-connect/build.gradle | 19 ++++++++++--- .../kafka-connect-runtime/main/README.md | 26 ++++++++++++++++++ .../main/etc/iceberg-sink.properties.example | 27 +++++++++++++++++++ .../src/main/resources/manifest.json | 2 +- site/docs/how-to-release.md | 24 +++++++++++++++++ 5 files changed, 93 insertions(+), 5 deletions(-) create mode 100644 kafka-connect/kafka-connect-runtime/main/README.md create mode 100644 kafka-connect/kafka-connect-runtime/main/etc/iceberg-sink.properties.example diff --git a/kafka-connect/build.gradle b/kafka-connect/build.gradle index 89d118273244..d453b49360d2 100644 --- a/kafka-connect/build.gradle +++ b/kafka-connect/build.gradle @@ -207,6 +207,10 @@ project(':iceberg-kafka-connect:iceberg-kafka-connect-runtime') { into('doc/') { from "$projectDir/main/LICENSE" from "$projectDir/main/NOTICE" + from "$projectDir/main/README.md" + } + into('etc/') { + from "$projectDir/main/etc" } into('assets/') { from "${processResources.destinationDir}/iceberg.png" @@ -230,10 +234,6 @@ project(':iceberg-kafka-connect:iceberg-kafka-connect-runtime') { } } - // there are no Maven artifacts so disable publishing tasks... - project.afterEvaluate { - project.tasks.matching { it.group == 'publishing' }.each {it.enabled = false} - } tasks.jar.enabled = false @@ -249,6 +249,17 @@ project(':iceberg-kafka-connect:iceberg-kafka-connect-runtime') { check.dependsOn integrationTest assemble.dependsOn distZip, hiveDistZip + + // Configure publishing for the distribution zip + afterEvaluate { + publishing { + publications { + apache(MavenPublication) { + artifact distZip + } + } + } + } } project(':iceberg-kafka-connect:iceberg-kafka-connect-transforms') { diff --git a/kafka-connect/kafka-connect-runtime/main/README.md b/kafka-connect/kafka-connect-runtime/main/README.md new file mode 100644 index 000000000000..52190996cb18 --- /dev/null +++ b/kafka-connect/kafka-connect-runtime/main/README.md @@ -0,0 +1,26 @@ + + +# Apache Iceberg Sink Connector + +A Kafka Connect sink connector for writing data from Apache Kafka into Apache Iceberg tables. + +Documentation: https://iceberg.apache.org/docs/latest/kafka-connect/ + +License: Apache License 2.0 diff --git a/kafka-connect/kafka-connect-runtime/main/etc/iceberg-sink.properties.example b/kafka-connect/kafka-connect-runtime/main/etc/iceberg-sink.properties.example new file mode 100644 index 000000000000..1688d6d59ce0 --- /dev/null +++ b/kafka-connect/kafka-connect-runtime/main/etc/iceberg-sink.properties.example @@ -0,0 +1,27 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# Iceberg Sink Connector - Example Configuration +# https://iceberg.apache.org/docs/latest/kafka-connect/ +name=iceberg-sink +connector.class=org.apache.iceberg.connect.IcebergSinkConnector +tasks.max=1 +topics=events +iceberg.tables=db.table_name +iceberg.catalog.type=rest +iceberg.catalog.uri=https://your-catalog-uri +iceberg.catalog.warehouse=your-warehouse diff --git a/kafka-connect/kafka-connect-runtime/src/main/resources/manifest.json b/kafka-connect/kafka-connect-runtime/src/main/resources/manifest.json index 5b51e5dea875..277873b85e3d 100644 --- a/kafka-connect/kafka-connect-runtime/src/main/resources/manifest.json +++ b/kafka-connect/kafka-connect-runtime/src/main/resources/manifest.json @@ -35,7 +35,7 @@ "logo": "assets/iceberg.png", "type": "organization", "url": "https://iceberg.apache.org", - "username": "iceberg" + "username": "apache" }, "support": { diff --git a/site/docs/how-to-release.md b/site/docs/how-to-release.md index cb50cce622b2..a683e1c2db6a 100644 --- a/site/docs/how-to-release.md +++ b/site/docs/how-to-release.md @@ -166,6 +166,11 @@ To build and publish the convenience binaries, run the `dev/stage-binaries.sh` s dev/stage-binaries.sh ``` +!!! Note + The staged binaries include the Kafka Connect runtime distribution + (`iceberg-kafka-connect-runtime-.zip`), which bundles the connector + with all required dependencies for Kafka Connect plugin installation. + Next, you need to close the staging repository: 1. Go to [Nexus](https://repository.apache.org/) and log in @@ -297,6 +302,25 @@ Java artifacts are available from Maven Central. Thanks to everyone for contributing! ``` +#### Confluent Marketplace Submission + +After the release is published to Maven Central, the Kafka Connect runtime distribution +can be [submitted to](https://docs.confluent.io/platform/current/connect/confluent-hub/contributing.html) +[Confluent Marketplace](https://www.confluent.io/hub/) for broader distribution. + +To submit to Confluent Hub: + +1. [Contact the Confluent Hub team](mailto:confluent-hub@confluent.io) with the Maven Central URL for the distribution zip: + + ``` + https://repo1.maven.org/maven2/org/apache/iceberg/iceberg-kafka-connect-runtime//iceberg-kafka-connect-runtime-.zip + ``` + +2. Confluent will publish to the Marketplace + +!!! Note + This step is optional and can be performed by any PMC member after the release is finalized. + #### Update revapi Create a PR in the `iceberg` repo to make revapi run on the new release. For an example see [this PR](https://github.com/apache/iceberg/pull/6275).