Skip to content

ci: add PyPI publish workflow and standardize README#279

Open
sudsali wants to merge 1 commit into
masterfrom
release-1.6.0
Open

ci: add PyPI publish workflow and standardize README#279
sudsali wants to merge 1 commit into
masterfrom
release-1.6.0

Conversation

@sudsali

@sudsali sudsali commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds automated PyPI publishing for python-deequ (previously manual) and standardizes the README. Mirrors awslabs/deequ's release flow.

What Changes

  • Add .github/workflows/publish.yml — a workflow_dispatch release: the operator supplies the release version, the workflow sets it, builds, publishes to PyPI, then tags the release and opens a follow-up version-bump PR.
  • Standardize the README to match deequ/dqdl — drop the ad-hoc Announcements section, fix section ordering, end with Contributing → Security → License.

(The repo version is intentionally left unchanged here — the release workflow sets it at publish time, so there is no pre-bump.)

Publish flow

  • Trigger: workflow_dispatch with release_version + dry_run (default true).
  • Dry run: builds only — no environment approval, no credentials, no upload, no tag.
  • Real run: gated by a protected deployment environment (required reviewer, self-review disabled). Version is validated/normalized, pyproject.toml + pydeequ/__init__.py are set and asserted to agree with the built wheel, then published.
  • After a successful upload: the release is tagged (v<version>, pinned to the exact published commit — never before the upload) and a version-bump PR is opened.
  • Token handling: the PyPI token is fetched at run time from Secrets Manager via OIDC, masked, and passed to Poetry via an environment variable — never on the command line, in workflow outputs, or on disk.

Releasing (after merge)

Real releases must be dispatched from master (the deployment environment permits only that branch):

  1. Merge this PR.
  2. From the Actions tab, run Publish to PyPI on master with release_version (e.g. 1.6.0) and dry_run unchecked.
  3. Approve the release environment when prompted (a different person than the dispatcher).
  4. → the package uploads to PyPI, the v<version> tag is created, and a version-bump PR opens.

Use a dry_run first (from any branch) to smoke-test the build.

Rollback

Revert this PR — the publish workflow is removed; no data or state migration.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

No issues found.


Generated by AI (model: us.anthropic.claude-opus-4-8, prompt: 295226dd) — may not be fully accurate. Reply if this doesn't help.
Reviewed by Shadow · github.com/sudsali/shadow

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

No issues found.


Generated by AI (model: us.anthropic.claude-opus-4-8, prompt: 295226dd) — may not be fully accurate. Reply if this doesn't help.
Reviewed by Shadow · github.com/sudsali/shadow

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

No issues found.


Generated by AI (model: us.anthropic.claude-opus-4-8, prompt: 295226dd) — may not be fully accurate. Reply if this doesn't help.
Reviewed by Shadow · github.com/sudsali/shadow

@sudsali sudsali marked this pull request as ready for review July 7, 2026 16:15

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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


Generated by AI (model: us.anthropic.claude-opus-4-8, prompt: 295226dd) — may not be fully accurate. Reply if this doesn't help.
Reviewed by Shadow · github.com/sudsali/shadow

Comment thread .github/workflows/publish.yml
@sudsali sudsali changed the title release: 1.6.0 + gated PyPI publish workflow ci: add PyPI publish workflow and standardize README Jul 7, 2026
publish.yml — workflow_dispatch release mirroring awslabs/deequ: the operator
supplies the release version, the workflow sets it (poetry version + sync
pydeequ/__init__.py), builds, and publishes to PyPI, then tags the released
commit and opens a version-bump PR. Real uploads run in the protected
pypi-release environment (required reviewer, dispatched from master); dry runs
build only. PyPI token fetched from Secrets Manager via OIDC, masked, passed
via POETRY_PYPI_TOKEN_PYPI env (never argv/output/file).

README — standardize to deequ/dqdl: drop the Announcements section, fix
section ordering, end with Contributing -> Security -> License.

This PR adds the release tooling only; it does not itself bump the version or
publish — the workflow sets the version at release time.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

No issues found.


Generated by AI (model: us.anthropic.claude-opus-4-8, prompt: 295226dd) — may not be fully accurate. Reply if this doesn't help.
Reviewed by Shadow · github.com/sudsali/shadow

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.

1 participant