From d3959975056e4673bfb50a75fb6f77aa758d16f1 Mon Sep 17 00:00:00 2001 From: Vova Kolmakov Date: Sat, 23 May 2026 18:37:44 +0700 Subject: [PATCH] Docs: Document nightly snapshots Co-Authored-By: Claude Opus 4.7 (1M context) --- site/docs/how-to-release.md | 1 + site/docs/multi-engine-support.md | 2 +- site/docs/nightly-snapshots.md | 113 ++++++++++++++++++++++++++++++ site/mkdocs.yml | 1 + site/nav.yml | 1 + 5 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 site/docs/nightly-snapshots.md diff --git a/site/docs/how-to-release.md b/site/docs/how-to-release.md index eca2757c764e..bed1f1adc4c9 100644 --- a/site/docs/how-to-release.md +++ b/site/docs/how-to-release.md @@ -360,6 +360,7 @@ Once this is done, create a PR against the `javadoc` branch, similar to https:// Submit a PR, following the approach in https://github.com/apache/iceberg/pull/12242, to update the Iceberg version, the links to the new version's documentation, and the release notes. +Also bump `snapshotVersion` in `site/mkdocs.yml` to the next development version (the new release with its minor version incremented, suffixed with `-SNAPSHOT`) so the [nightly snapshots](nightly-snapshots.md) page stays current. Once this PR is merged, the [`site-ci`](https://github.com/apache/iceberg/blob/main/.github/workflows/site-ci.yml) GitHub Actions workflow is automatically triggered for any push to `main` that touches `docs/`, `site/`, diff --git a/site/docs/multi-engine-support.md b/site/docs/multi-engine-support.md index bdfe87123aa3..37caeaf8d18a 100644 --- a/site/docs/multi-engine-support.md +++ b/site/docs/multi-engine-support.md @@ -135,6 +135,6 @@ This allows the Iceberg support to evolve with the engine. Projects such as [Trino](https://trino.io/docs/current/connector/iceberg.html) and [Presto](https://prestodb.io/docs/current/connector/iceberg.html) are good examples of such support strategy. In this approach, an Iceberg version upgrade is needed for an engine to consume new Iceberg features. -To facilitate engine development against unreleased Iceberg features, a daily snapshot is published in the [Apache snapshot repository](https://repository.apache.org/content/repositories/snapshots/org/apache/iceberg/). +To facilitate engine development against unreleased Iceberg features, [nightly snapshots](nightly-snapshots.md) are published daily to the Apache snapshot repository. If bringing an engine directly to the Iceberg main repository is needed, please raise a discussion thread in the [Iceberg community](community.md). diff --git a/site/docs/nightly-snapshots.md b/site/docs/nightly-snapshots.md new file mode 100644 index 000000000000..f2a4e3de1b3a --- /dev/null +++ b/site/docs/nightly-snapshots.md @@ -0,0 +1,113 @@ +--- +title: "Nightly Snapshots" +--- + + +# Nightly Snapshots + +Every night, Apache Iceberg publishes a snapshot of every module to the +[Apache snapshot repository](https://repository.apache.org/content/repositories/snapshots/org/apache/iceberg/). +These nightly snapshots let developers build and test against the latest unreleased +changes on `main` before they are included in an official release. + +!!! warning "For Iceberg developers only" + + Snapshots are **unreleased**, in-development builds. They are **not** an official + Apache release, may change or break at any time, and **must not be used in + production**. For production use, always depend on an official + [release](releases.md). Per the ASF + [release policy](https://apache.org/legal/release-policy#publication), unreleased + artifacts are intended only for developers who are actively participating in + Iceberg development. + +## Snapshot version + +Snapshots are published daily at 00:00 UTC under the version `{{ snapshotVersion }}`, +which tracks the next unreleased version (the latest release with its minor version +incremented). Browse the +[snapshot repository listing](https://repository.apache.org/content/repositories/snapshots/org/apache/iceberg/) +to see which modules and versions are available. + +## Usage + +Add the Apache snapshot repository to your build and depend on the `{{ snapshotVersion }}` +version of the Iceberg modules you need. The examples below use `iceberg-core`; replace +it with the artifacts your project requires, such as an engine runtime like +`iceberg-spark-runtime-{{ sparkVersionMajor }}`. + +=== "Gradle" + + In `build.gradle`: + + ```gradle + repositories { + mavenCentral() + maven { + url = uri("https://repository.apache.org/content/repositories/snapshots") + } + } + + dependencies { + implementation "org.apache.iceberg:iceberg-core:{{ snapshotVersion }}" + } + ``` + +=== "Maven" + + In `pom.xml`: + + ```xml + + + apache-snapshots + https://repository.apache.org/content/repositories/snapshots + + true + + + + + + + org.apache.iceberg + iceberg-core + {{ snapshotVersion }} + + + ``` + +=== "sbt" + + In `build.sbt`: + + ```scala + resolvers += "Apache Snapshots" at "https://repository.apache.org/content/repositories/snapshots" + + libraryDependencies += "org.apache.iceberg" % "iceberg-core" % "{{ snapshotVersion }}" + ``` + +=== "Spark" + + Pass the snapshot repository and a snapshot runtime to `spark-shell` (or + `spark-sql`, `pyspark`, or `spark-submit`): + + ```sh + spark-shell \ + --repositories https://repository.apache.org/content/repositories/snapshots \ + --packages org.apache.iceberg:iceberg-spark-runtime-{{ sparkVersionMajor }}:{{ snapshotVersion }} + ``` diff --git a/site/mkdocs.yml b/site/mkdocs.yml index e8d11687d6ee..3899b69120a5 100644 --- a/site/mkdocs.yml +++ b/site/mkdocs.yml @@ -112,6 +112,7 @@ markdown_extensions: extra: icebergVersion: '1.11.0' + snapshotVersion: '1.12.0-SNAPSHOT' nessieVersion: '0.105.3' flinkVersion: '2.1.0' flinkVersionMajor: '2.1' diff --git a/site/nav.yml b/site/nav.yml index c5e9fa5ed0ba..9873c392a45e 100644 --- a/site/nav.yml +++ b/site/nav.yml @@ -98,6 +98,7 @@ nav: - Project: - Contributing: contribute.md - Multi-engine support: multi-engine-support.md + - Nightly snapshots: nightly-snapshots.md - Benchmarks: benchmarks.md - Security: security.md - How to release: how-to-release.md