Skip to content

Add JFrog publish workflow for pyiceberg#45

Merged
robreeves merged 10 commits intolinkedin:li-0.11from
robreeves:publish
Apr 3, 2026
Merged

Add JFrog publish workflow for pyiceberg#45
robreeves merged 10 commits intolinkedin:li-0.11from
robreeves:publish

Conversation

@robreeves
Copy link
Copy Markdown
Collaborator

@robreeves robreeves commented Apr 3, 2026

Rationale for this change

Publish the pyiceberg package to the same JFrog Artifactory PyPI repository (openhouse-pypi) used by the OpenHouse data loader.

The package is renamed from pyiceberg to li-pyiceberg to distinguish it from the upstream Apache release and follow LinkedIn's li* naming convention. The Python import (import pyiceberg) is unchanged.

How it works

  1. tag — reads the version from pyproject.toml as the initial version, then auto-increments the patch via git tags on each push to li-0.11 (e.g. v0.11.1, v0.11.2, ...)
  2. build — reuses pypi-build-artifacts.yml to build sdist and multi-platform wheels (Linux, Linux ARM, Windows, macOS Intel, macOS ARM) across Python 3.10–3.13 via cibuildwheel. Each wheel is validated by running pytest tests/avro/test_decoder.py.
  3. publish — downloads all build artifacts and publishes to JFrog using pypa/gh-action-pypi-publish. Jobs are sequenced via needs: so publish waits for all matrix builds to complete.

This does not publish to PyPI or TestPyPI. The existing upstream workflows (nightly-pypi-build.yml, python-release.yml) are gated by github.repository == 'apache/iceberg-python' and will not run in this fork.

Requires JFROG_USERNAME and JFROG_PYPI_API_TOKEN secrets to be configured in this repo.

Are these changes tested?

Will be validated on the first push to li-0.11 after secrets are configured.

Are there any user-facing changes?

No.

@robreeves robreeves marked this pull request as ready for review April 3, 2026 05:45
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a GitHub Actions workflow to automatically tag, build, and publish pyiceberg artifacts to the LinkedIn JFrog Artifactory PyPI repo (openhouse-pypi) on pushes to the li-0.11 branch.

Changes:

  • Introduces a tag job that derives the initial version from pyproject.toml, bumps the patch version, and pushes a git tag.
  • Reuses the existing pypi-build-artifacts.yml reusable workflow to build sdist and multi-platform wheels for the computed version.
  • Publishes the built artifacts to JFrog Artifactory using pypa/gh-action-pypi-publish.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@ShreyeshArangath
Copy link
Copy Markdown
Collaborator

We might want to add branch protection requiring at least one approval

image

@robreeves
Copy link
Copy Markdown
Collaborator Author

We might want to add branch protection requiring at least one approval

image

@sumedhsakdeo added this today. I didn't have permission to do it.

sumedhsakdeo
sumedhsakdeo previously approved these changes Apr 3, 2026
Follow LinkedIn's li* naming convention per PR feedback.
@robreeves robreeves merged commit 714a804 into linkedin:li-0.11 Apr 3, 2026
11 checks passed
@robreeves robreeves deleted the publish branch April 3, 2026 17:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants