diff --git a/kafka-connect/build.gradle b/kafka-connect/build.gradle index 009ae719bac5..a16b72865a1c 100644 --- a/kafka-connect/build.gradle +++ b/kafka-connect/build.gradle @@ -197,8 +197,10 @@ project(':iceberg-kafka-connect:iceberg-kafka-connect-runtime') { } processResources { - filter { - it.replace('__VERSION__', project.version.toString()) + filesMatching('manifest.json') { + filter { + it.replace('__VERSION__', project.version.toString()) + } } } @@ -212,6 +214,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" @@ -235,10 +241,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 @@ -256,6 +258,17 @@ project(':iceberg-kafka-connect:iceberg-kafka-connect-runtime') { assemble.dependsOn distZip, hiveDistZip apply from: "${rootDir}/runtime-deps.gradle" + + // 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.template b/kafka-connect/kafka-connect-runtime/main/etc/iceberg-sink.properties.template new file mode 100644 index 000000000000..1688d6d59ce0 --- /dev/null +++ b/kafka-connect/kafka-connect-runtime/main/etc/iceberg-sink.properties.template @@ -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..cb982b27a4b7 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,22 @@ 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. + #### 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).