From ae44f47bb379ea6902e69a25c36882f4c5992a02 Mon Sep 17 00:00:00 2001 From: Rob Reeves Date: Fri, 3 Apr 2026 05:19:55 +0000 Subject: [PATCH 01/10] Add JFrog publish workflow for pyiceberg Publishes pyiceberg to the openhouse-pypi JFrog repository on each push to li-0.11, auto-incrementing the patch version via git tags. --- .github/workflows/jfrog-publish.yml | 63 +++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 .github/workflows/jfrog-publish.yml diff --git a/.github/workflows/jfrog-publish.yml b/.github/workflows/jfrog-publish.yml new file mode 100644 index 00000000..54b629ca --- /dev/null +++ b/.github/workflows/jfrog-publish.yml @@ -0,0 +1,63 @@ +name: "Publish to JFrog" + +on: + push: + branches: + - 'li-0.11' + +permissions: + contents: write + +jobs: + set-version: + runs-on: ubuntu-latest + outputs: + VERSION: ${{ steps.get-version.outputs.VERSION }} + steps: + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Bump version and push tag + uses: anothrNick/github-tag-action@1.69.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + WITH_V: true + DEFAULT_BUMP: patch + INITIAL_VERSION: 0.11.1 + + - name: Get the latest tag + id: get-version + run: | + latest_tag=$(git describe --tags --abbrev=0) + VERSION=${latest_tag#v} + echo "VERSION=${VERSION}" >> "$GITHUB_OUTPUT" + echo "Publishing version ${VERSION}" + + build: + needs: set-version + uses: ./.github/workflows/pypi-build-artifacts.yml + with: + VERSION: ${{ needs.set-version.outputs.VERSION }} + + publish: + name: Publish to JFrog Artifactory + needs: build + runs-on: ubuntu-latest + steps: + - name: Download all the artifacts + uses: actions/download-artifact@v7 + with: + merge-multiple: true + path: dist/ + + - name: List downloaded artifacts + run: ls -R dist/ + + - name: Publish to JFrog Artifactory PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + repository-url: https://linkedin.jfrog.io/artifactory/api/pypi/openhouse-pypi + user: ${{ secrets.JFROG_USERNAME }} + password: ${{ secrets.JFROG_PYPI_API_TOKEN }} + verbose: true From dcd9b29ca5a68d6301f36c734bc5f9ec213ae9d2 Mon Sep 17 00:00:00 2001 From: Rob Reeves Date: Fri, 3 Apr 2026 05:25:54 +0000 Subject: [PATCH 02/10] Rename set-version job to tag in JFrog publish workflow --- .github/workflows/jfrog-publish.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/jfrog-publish.yml b/.github/workflows/jfrog-publish.yml index 54b629ca..1e340d98 100644 --- a/.github/workflows/jfrog-publish.yml +++ b/.github/workflows/jfrog-publish.yml @@ -9,7 +9,7 @@ permissions: contents: write jobs: - set-version: + tag: runs-on: ubuntu-latest outputs: VERSION: ${{ steps.get-version.outputs.VERSION }} @@ -35,10 +35,10 @@ jobs: echo "Publishing version ${VERSION}" build: - needs: set-version + needs: tag uses: ./.github/workflows/pypi-build-artifacts.yml with: - VERSION: ${{ needs.set-version.outputs.VERSION }} + VERSION: ${{ needs.tag.outputs.VERSION }} publish: name: Publish to JFrog Artifactory From f43b65364e6a3b9b4cae9b4dd3a16d0f9edc6d1b Mon Sep 17 00:00:00 2001 From: Rob Reeves Date: Fri, 3 Apr 2026 05:30:00 +0000 Subject: [PATCH 03/10] Remove debug listing step from JFrog publish workflow --- .github/workflows/jfrog-publish.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/jfrog-publish.yml b/.github/workflows/jfrog-publish.yml index 1e340d98..4a0c846c 100644 --- a/.github/workflows/jfrog-publish.yml +++ b/.github/workflows/jfrog-publish.yml @@ -51,9 +51,6 @@ jobs: merge-multiple: true path: dist/ - - name: List downloaded artifacts - run: ls -R dist/ - - name: Publish to JFrog Artifactory PyPI uses: pypa/gh-action-pypi-publish@release/v1 with: From 780b0179b474642280e7943fb241fb304ee8e091 Mon Sep 17 00:00:00 2001 From: Rob Reeves Date: Fri, 3 Apr 2026 05:33:35 +0000 Subject: [PATCH 04/10] Set initial version to 0.11.0 in JFrog publish workflow --- .github/workflows/jfrog-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/jfrog-publish.yml b/.github/workflows/jfrog-publish.yml index 4a0c846c..61181473 100644 --- a/.github/workflows/jfrog-publish.yml +++ b/.github/workflows/jfrog-publish.yml @@ -24,7 +24,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} WITH_V: true DEFAULT_BUMP: patch - INITIAL_VERSION: 0.11.1 + INITIAL_VERSION: 0.11.0 - name: Get the latest tag id: get-version From 89710dcaf2b17cc12267bdfe170cd9c0320c1448 Mon Sep 17 00:00:00 2001 From: Rob Reeves Date: Fri, 3 Apr 2026 05:37:14 +0000 Subject: [PATCH 05/10] Read initial version from pyproject.toml instead of hardcoding --- .github/workflows/jfrog-publish.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/jfrog-publish.yml b/.github/workflows/jfrog-publish.yml index 61181473..5c8c44ff 100644 --- a/.github/workflows/jfrog-publish.yml +++ b/.github/workflows/jfrog-publish.yml @@ -18,13 +18,20 @@ jobs: with: fetch-depth: 0 + - name: Install UV + uses: astral-sh/setup-uv@v7 + + - name: Get initial version from pyproject.toml + id: initial-version + run: echo "VERSION=$(uv version --short)" >> "$GITHUB_OUTPUT" + - name: Bump version and push tag uses: anothrNick/github-tag-action@1.69.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} WITH_V: true DEFAULT_BUMP: patch - INITIAL_VERSION: 0.11.0 + INITIAL_VERSION: ${{ steps.initial-version.outputs.VERSION }} - name: Get the latest tag id: get-version From 11c0c9867e1bc67f624222dca703d13b73529c57 Mon Sep 17 00:00:00 2001 From: Rob Reeves Date: Fri, 3 Apr 2026 14:19:58 +0000 Subject: [PATCH 06/10] Rename package from pyiceberg to pyiceberg-li --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 7d754d32..9cb955a0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,7 +15,7 @@ # specific language governing permissions and limitations # under the License. [project] -name = "pyiceberg" +name = "pyiceberg-li" version = "0.11.1" description = "Apache Iceberg is an open table format for huge analytic datasets" authors = [{ name = "Apache Software Foundation", email = "dev@iceberg.apache.org" }] From 7bfa46556757cea414427fbf0b5a5539b440e1b4 Mon Sep 17 00:00:00 2001 From: Rob Reeves Date: Fri, 3 Apr 2026 14:33:17 +0000 Subject: [PATCH 07/10] Fix version test to use pyiceberg-li package name --- tests/test_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_version.py b/tests/test_version.py index dcaa3f07..d0162258 100644 --- a/tests/test_version.py +++ b/tests/test_version.py @@ -21,7 +21,7 @@ def test_version_format() -> None: from importlib import metadata - installed_version = metadata.version("pyiceberg") + installed_version = metadata.version("pyiceberg-li") assert __version__ == installed_version, ( f"The installed version ({installed_version}) does not match the current codebase version ({__version__})." From debe0b6df378168fd4ef41cf9f64966e2cd7ce4d Mon Sep 17 00:00:00 2001 From: Rob Reeves Date: Fri, 3 Apr 2026 14:34:56 +0000 Subject: [PATCH 08/10] Add concurrency group and scope write permissions to tag job --- .github/workflows/jfrog-publish.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/jfrog-publish.yml b/.github/workflows/jfrog-publish.yml index 5c8c44ff..2823cac3 100644 --- a/.github/workflows/jfrog-publish.yml +++ b/.github/workflows/jfrog-publish.yml @@ -5,12 +5,18 @@ on: branches: - 'li-0.11' +concurrency: + group: jfrog-publish-${{ github.ref }} + cancel-in-progress: false + permissions: - contents: write + contents: read jobs: tag: runs-on: ubuntu-latest + permissions: + contents: write outputs: VERSION: ${{ steps.get-version.outputs.VERSION }} steps: From 16a0ed4bb2c33ef42948fbf0e41169a05a1591ae Mon Sep 17 00:00:00 2001 From: Rob Reeves Date: Fri, 3 Apr 2026 17:12:09 +0000 Subject: [PATCH 09/10] Rename package from pyiceberg-li to li-pyiceberg Follow LinkedIn's li* naming convention per PR feedback. --- pyproject.toml | 2 +- tests/test_version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 9cb955a0..b7342abf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,7 +15,7 @@ # specific language governing permissions and limitations # under the License. [project] -name = "pyiceberg-li" +name = "li-pyiceberg" version = "0.11.1" description = "Apache Iceberg is an open table format for huge analytic datasets" authors = [{ name = "Apache Software Foundation", email = "dev@iceberg.apache.org" }] diff --git a/tests/test_version.py b/tests/test_version.py index d0162258..41dc3686 100644 --- a/tests/test_version.py +++ b/tests/test_version.py @@ -21,7 +21,7 @@ def test_version_format() -> None: from importlib import metadata - installed_version = metadata.version("pyiceberg-li") + installed_version = metadata.version("li-pyiceberg") assert __version__ == installed_version, ( f"The installed version ({installed_version}) does not match the current codebase version ({__version__})." From 7419d5af0decedd34d1dd7cb46c4834bc26bf9b9 Mon Sep 17 00:00:00 2001 From: Rob Reeves Date: Fri, 3 Apr 2026 17:16:13 +0000 Subject: [PATCH 10/10] Add name to checkout step in JFrog publish workflow --- .github/workflows/jfrog-publish.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/jfrog-publish.yml b/.github/workflows/jfrog-publish.yml index 2823cac3..63b4695d 100644 --- a/.github/workflows/jfrog-publish.yml +++ b/.github/workflows/jfrog-publish.yml @@ -20,7 +20,8 @@ jobs: outputs: VERSION: ${{ steps.get-version.outputs.VERSION }} steps: - - uses: actions/checkout@v6 + - name: Checkout repository + uses: actions/checkout@v6 with: fetch-depth: 0